001    /* This file was generated with JastAdd2 (http://jastadd.org) version R20130213 */
002    package AST;
003    
004    import java.util.HashSet;
005    import java.io.File;
006    import java.util.*;
007    import beaver.*;
008    import java.util.ArrayList;
009    import java.util.zip.*;
010    import java.io.*;
011    import java.io.FileNotFoundException;
012    import java.util.Collection;
013    /**
014     * @production MemberClassDecl : {@link MemberTypeDecl} ::= <span class="component">{@link ClassDecl}</span>;
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:99
017     */
018    public class MemberClassDecl extends MemberTypeDecl implements Cloneable {
019      /**
020       * @apilevel low-level
021       */
022      public void flushCache() {
023      }
024      /**
025       * @apilevel internal
026       */
027      public void flushCollectionCache() {
028      }
029      /**
030       * @apilevel internal
031       */
032      @SuppressWarnings({"unchecked", "cast"})
033      public MemberClassDecl clone() throws CloneNotSupportedException {
034        MemberClassDecl node = (MemberClassDecl)super.clone();
035        node.in$Circle(false);
036        node.is$Final(false);
037        return node;
038      }
039    /**
040     * @apilevel internal
041     */
042      @SuppressWarnings({"unchecked", "cast"})
043    public MemberClassDecl copy() {
044      
045      try {
046        MemberClassDecl node = (MemberClassDecl) clone();
047        node.parent = null;
048        if(children != null)
049          node.children = (ASTNode[]) children.clone();
050        
051        return node;
052      } catch (CloneNotSupportedException e) {
053        throw new Error("Error: clone not supported for " + getClass().getName());
054      }
055      
056    }/**
057     * Create a deep copy of the AST subtree at this node.
058     * The copy is dangling, i.e. has no parent.
059     * @return dangling copy of the subtree at this node
060     * @apilevel low-level
061     */
062      @SuppressWarnings({"unchecked", "cast"})
063    public MemberClassDecl fullCopy() {
064      
065      MemberClassDecl tree = (MemberClassDecl) copy();
066      if (children != null) {
067        for (int i = 0; i < children.length; ++i) {
068          
069          ASTNode child = (ASTNode) children[i];
070          if(child != null) {
071            child = child.fullCopy();
072            tree.setChild(child, i);
073          }
074        }
075      }
076      return tree;
077      
078    }  /**
079       * @ast method 
080       * @aspect PrettyPrint
081       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:206
082       */
083      public void toString(StringBuffer s) {
084        s.append(indent());
085        getClassDecl().toString(s);
086      }
087      /**
088       * @ast method 
089       * 
090       */
091      public MemberClassDecl() {
092        super();
093    
094    
095      }
096      /**
097       * Initializes the child array to the correct size.
098       * Initializes List and Opt nta children.
099       * @apilevel internal
100       * @ast method
101       * @ast method 
102       * 
103       */
104      public void init$Children() {
105        children = new ASTNode[1];
106      }
107      /**
108       * @ast method 
109       * 
110       */
111      public MemberClassDecl(ClassDecl p0) {
112        setChild(p0, 0);
113      }
114      /**
115       * @apilevel low-level
116       * @ast method 
117       * 
118       */
119      protected int numChildren() {
120        return 1;
121      }
122      /**
123       * @apilevel internal
124       * @ast method 
125       * 
126       */
127      public boolean mayHaveRewrite() {
128        return false;
129      }
130      /**
131       * Replaces the ClassDecl child.
132       * @param node The new node to replace the ClassDecl child.
133       * @apilevel high-level
134       * @ast method 
135       * 
136       */
137      public void setClassDecl(ClassDecl node) {
138        setChild(node, 0);
139      }
140      /**
141       * Retrieves the ClassDecl child.
142       * @return The current node used as the ClassDecl child.
143       * @apilevel high-level
144       * @ast method 
145       * 
146       */
147      public ClassDecl getClassDecl() {
148        return (ClassDecl)getChild(0);
149      }
150      /**
151       * Retrieves the ClassDecl child.
152       * <p><em>This method does not invoke AST transformations.</em></p>
153       * @return The current node used as the ClassDecl child.
154       * @apilevel low-level
155       * @ast method 
156       * 
157       */
158      public ClassDecl getClassDeclNoTransform() {
159        return (ClassDecl)getChildNoTransform(0);
160      }
161      /**
162       * @attribute syn
163       * @aspect TypeScopePropagation
164       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:484
165       */
166      public TypeDecl typeDecl() {
167        ASTNode$State state = state();
168        try {  return getClassDecl();  }
169        finally {
170        }
171      }
172      /**
173       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:527
174       * @apilevel internal
175       */
176      public boolean Define_boolean_isMemberType(ASTNode caller, ASTNode child) {
177        if(caller == getClassDeclNoTransform()) {
178          return true;
179        }
180        else {      return getParent().Define_boolean_isMemberType(this, caller);
181        }
182      }
183      /**
184       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:145
185       * @apilevel internal
186       */
187      public boolean Define_boolean_inStaticContext(ASTNode caller, ASTNode child) {
188        if(caller == getClassDeclNoTransform()) {
189          return false;
190        }
191        else {      return getParent().Define_boolean_inStaticContext(this, caller);
192        }
193      }
194      /**
195       * @apilevel internal
196       */
197      public ASTNode rewriteTo() {
198        return super.rewriteTo();
199      }
200    }