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 MemberInterfaceDecl : {@link MemberTypeDecl} ::= <span class="component">{@link InterfaceDecl}</span>;
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:100
017     */
018    public class MemberInterfaceDecl 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 MemberInterfaceDecl clone() throws CloneNotSupportedException {
034        MemberInterfaceDecl node = (MemberInterfaceDecl)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 MemberInterfaceDecl copy() {
044      
045      try {
046        MemberInterfaceDecl node = (MemberInterfaceDecl) 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 MemberInterfaceDecl fullCopy() {
064      
065      MemberInterfaceDecl tree = (MemberInterfaceDecl) 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 Modifiers
081       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:186
082       */
083      public void checkModifiers() {
084        super.checkModifiers();
085        if(hostType().isInnerClass())
086          error("*** Inner classes may not declare member interfaces");
087      }
088      /**
089       * @ast method 
090       * @aspect PrettyPrint
091       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:211
092       */
093      public void toString(StringBuffer s) {
094        s.append(indent());
095        getInterfaceDecl().toString(s);
096      }
097      /**
098       * @ast method 
099       * 
100       */
101      public MemberInterfaceDecl() {
102        super();
103    
104    
105      }
106      /**
107       * Initializes the child array to the correct size.
108       * Initializes List and Opt nta children.
109       * @apilevel internal
110       * @ast method
111       * @ast method 
112       * 
113       */
114      public void init$Children() {
115        children = new ASTNode[1];
116      }
117      /**
118       * @ast method 
119       * 
120       */
121      public MemberInterfaceDecl(InterfaceDecl p0) {
122        setChild(p0, 0);
123      }
124      /**
125       * @apilevel low-level
126       * @ast method 
127       * 
128       */
129      protected int numChildren() {
130        return 1;
131      }
132      /**
133       * @apilevel internal
134       * @ast method 
135       * 
136       */
137      public boolean mayHaveRewrite() {
138        return false;
139      }
140      /**
141       * Replaces the InterfaceDecl child.
142       * @param node The new node to replace the InterfaceDecl child.
143       * @apilevel high-level
144       * @ast method 
145       * 
146       */
147      public void setInterfaceDecl(InterfaceDecl node) {
148        setChild(node, 0);
149      }
150      /**
151       * Retrieves the InterfaceDecl child.
152       * @return The current node used as the InterfaceDecl child.
153       * @apilevel high-level
154       * @ast method 
155       * 
156       */
157      public InterfaceDecl getInterfaceDecl() {
158        return (InterfaceDecl)getChild(0);
159      }
160      /**
161       * Retrieves the InterfaceDecl child.
162       * <p><em>This method does not invoke AST transformations.</em></p>
163       * @return The current node used as the InterfaceDecl child.
164       * @apilevel low-level
165       * @ast method 
166       * 
167       */
168      public InterfaceDecl getInterfaceDeclNoTransform() {
169        return (InterfaceDecl)getChildNoTransform(0);
170      }
171      /**
172       * @attribute syn
173       * @aspect TypeScopePropagation
174       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:484
175       */
176      public TypeDecl typeDecl() {
177        ASTNode$State state = state();
178        try {  return getInterfaceDecl();  }
179        finally {
180        }
181      }
182      /**
183       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:528
184       * @apilevel internal
185       */
186      public boolean Define_boolean_isMemberType(ASTNode caller, ASTNode child) {
187        if(caller == getInterfaceDeclNoTransform()) {
188          return true;
189        }
190        else {      return getParent().Define_boolean_isMemberType(this, caller);
191        }
192      }
193      /**
194       * @apilevel internal
195       */
196      public ASTNode rewriteTo() {
197        return super.rewriteTo();
198      }
199    }