Main Page   Packages   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

AUnit.java

00001 package edu.ksu.cis.bandera.specification.pattern.node;
00002 
00003 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00004  * Bandera, a Java(TM) analysis and transformation toolkit           *
00005  * Copyright (C) 1998-2001 SAnToS Laboratories (santos@cis.ksu.edu)  *
00006 
00007  * All rights reserved.                                              *
00008  *                                                                   *
00009  * This work was done as a project in the SAnToS Laboratory,         *
00010  * Department of Computing and Information Sciences, Kansas State    *
00011  * University, USA (http://www.cis.ksu.edu/santos).                  *
00012  * It is understood that any modification not identified as such is  *
00013  * not covered by the preceding statement.                           *
00014  *                                                                   *
00015  * This work is free software; you can redistribute it and/or        *
00016  * modify it under the terms of the GNU Library General Public       *
00017  * License as published by the Free Software Foundation; either      *
00018  * version 2 of the License, or (at your option) any later version.  *
00019  *                                                                   *
00020  * This work is distributed in the hope that it will be useful,      *
00021  * but WITHOUT ANY WARRANTY; without even the implied warranty of    *
00022  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU *
00023  * Library General Public License for more details.                  *
00024  *                                                                   *
00025  * You should have received a copy of the GNU Library General Public *
00026  * License along with this toolkit; if not, write to the             *
00027  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,      *
00028  * Boston, MA  02111-1307, USA.                                      *
00029  *                                                                   *
00030  * Java is a trademark of Sun Microsystems, Inc.                     *
00031  *                                                                   *
00032  * To submit a bug report, send a comment, or get the latest news on *
00033  * this project and other SAnToS projects, please visit the web-site *
00034  *                http://www.cis.ksu.edu/santos                      *
00035  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00036 /* This file was generated by SableCC (http://www.sable.mcgill.ca/sablecc/). */
00037 
00038 import java.util.*;
00039 import edu.ksu.cis.bandera.specification.pattern.analysis.*;
00040 
00041 public final class AUnit extends PUnit
00042 {
00043     private final LinkedList _pattern_ = new TypedLinkedList(new Pattern_Cast());
00044 
00045     private class Pattern_Cast implements Cast
00046     {
00047         public Object cast(Object o)
00048         {
00049             PPattern node = (PPattern) o;
00050 
00051             if((node.parent() != null) &&
00052                 (node.parent() != AUnit.this))
00053             {
00054                 node.parent().removeChild(node);
00055             }
00056 
00057             if((node.parent() == null) ||
00058                 (node.parent() != AUnit.this))
00059             {
00060                 node.parent(AUnit.this);
00061             }
00062 
00063             return node;
00064         }
00065     }
00066     public AUnit()
00067     {
00068     }
00069     public AUnit(
00070         XPPattern _pattern_)
00071     {
00072         if(_pattern_ != null)
00073         {
00074             while(_pattern_ instanceof X1PPattern)
00075             {
00076                 this._pattern_.addFirst(((X1PPattern) _pattern_).getPPattern());
00077                 _pattern_ = ((X1PPattern) _pattern_).getXPPattern();
00078             }
00079             this._pattern_.addFirst(((X2PPattern) _pattern_).getPPattern());
00080         }
00081 
00082     }
00083     public AUnit(
00084         List _pattern_)
00085     {
00086         {
00087             Object temp[] = _pattern_.toArray();
00088             for(int i = 0; i < temp.length; i++)
00089             {
00090                 this._pattern_.add(temp[i]);
00091             }
00092         }
00093 
00094     }
00095     public void apply(Switch sw)
00096     {
00097         ((Analysis) sw).caseAUnit(this);
00098     }
00099     public Object clone()
00100     {
00101         return new AUnit(
00102             cloneList(_pattern_));
00103     }
00104     public LinkedList getPattern()
00105     {
00106         return _pattern_;
00107     }
00108     void removeChild(Node child)
00109     {
00110         if(_pattern_.remove(child))
00111         {
00112             return;
00113         }
00114 
00115     }
00116     void replaceChild(Node oldChild, Node newChild)
00117     {
00118         for(ListIterator i = _pattern_.listIterator(); i.hasNext();)
00119         {
00120             if(i.next() == oldChild)
00121             {
00122                 if(newChild != null)
00123                 {
00124                     i.set(newChild);
00125                     oldChild.parent(null);
00126                     return;
00127                 }
00128 
00129                 i.remove();
00130                 oldChild.parent(null);
00131                 return;
00132             }
00133         }
00134 
00135     }
00136     public void setPattern(List list)
00137     {
00138         Object temp[] = list.toArray();
00139         for(int i = 0; i < temp.length; i++)
00140         {
00141             _pattern_.add(temp[i]);
00142         }
00143     }
00144     public String toString()
00145     {
00146         return ""
00147             + toString(_pattern_);
00148     }
00149 }

Generated at Thu Feb 7 06:40:20 2002 for Bandera by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001