001    /* Copyright 2000, 2001, Compaq Computer Corporation */
002    
003    /* IF THIS IS A JAVA FILE, DO NOT EDIT IT!  
004    
005       Most Java files in this directory which are part of the Javafe AST
006       are automatically generated using the astgen comment (see
007       ESCTools/Javafe/astgen) from the input file 'hierarchy.h'.  If you
008       wish to modify AST classes or introduce new ones, modify
009       'hierarchy.j.'
010     */
011    
012    package escjava.ast;
013    
014    import java.util.Hashtable;
015    import java.util.Set;
016    import java.util.ArrayList;
017    
018    import javafe.ast.*;
019    import javafe.util.Assert;
020    import javafe.util.Location;
021    import escjava.ParsedRoutineSpecs;
022    
023    // Convention: unless otherwise noted, integer fields named "loc" refer
024    // to the location of the first character of the syntactic unit
025    
026    //# TagBase javafe.tc.TagConstants.LAST_TAG + 1
027    //# VisitorRoot javafe.ast.Visitor
028    
029    
030    public class VarDeclModifierPragma extends ModifierPragma
031    {
032        public int tag;
033    
034        public /*@ non_null @*/ LocalVarDecl decl;
035    
036        public int loc;
037    
038        public int locId;
039    
040    
041        public int getTag() { return tag; }
042    
043        public int getStartLoc() { return loc; }
044    
045    
046    // Generated boilerplate constructors:
047    
048        /**
049         * Construct a raw VarDeclModifierPragma whose class invariant(s) have not
050         * yet been established.  It is the caller's job to
051         * initialize the returned node's fields so that any
052         * class invariants hold.
053         */
054        //@ requires I_will_establish_invariants_afterwards;
055        protected VarDeclModifierPragma() {}    //@ nowarn Invariant,NonNullInit;
056    
057    
058    // Generated boilerplate methods:
059    
060        public final int childCount() {
061           return 1;
062        }
063    
064        public final Object childAt(int index) {
065                /*throws IndexOutOfBoundsException*/
066           if (index < 0)
067              throw new IndexOutOfBoundsException("AST child index " + index);
068           int indexPre = index;
069    
070           int sz;
071    
072           if (index == 0) return this.decl;
073           else index--;
074    
075           throw new IndexOutOfBoundsException("AST child index " + indexPre);
076        }   //@ nowarn Exception;
077    
078        public final String toString() {
079           return "[VarDeclModifierPragma"
080              + " tag = " + this.tag
081              + " decl = " + this.decl
082              + " loc = " + this.loc
083              + " locId = " + this.locId
084              + "]";
085        }
086    
087        public final void accept(javafe.ast.Visitor v) { 
088            if (v instanceof Visitor) ((Visitor)v).visitVarDeclModifierPragma(this);
089        }
090    
091        public final Object accept(javafe.ast.VisitorArgResult v, Object o) { 
092            if (v instanceof VisitorArgResult) return ((VisitorArgResult)v).visitVarDeclModifierPragma(this, o); else return null;
093        }
094    
095        public void check() {
096           this.decl.check();
097        }
098    
099        //@ ensures \result != null;
100        public static VarDeclModifierPragma make(int tag, /*@ non_null @*/ LocalVarDecl decl, int loc, int locId) {
101           //@ set I_will_establish_invariants_afterwards = true;
102           VarDeclModifierPragma result = new VarDeclModifierPragma();
103           result.tag = tag;
104           result.decl = decl;
105           result.loc = loc;
106           result.locId = locId;
107           return result;
108        }
109    }