import edu.neu.ccs.demeter.dj.*; import java.util.*; import java.lang.reflect.*; import edu.neu.ccs.demeter.*; class Alternat_ns extends Neighbors_wc { protected Term_Bar_list alternat_ns; public Term_Bar_list get_alternat_ns() { return alternat_ns; } public void set_alternat_ns(Term_Bar_list new_alternat_ns) { alternat_ns = new_alternat_ns; } protected Common common; public Common get_common() { return common; } public void set_common(Common new_common) { common = new_common; } public Alternat_ns() { super(); } public Alternat_ns(Any_vertex_List construct_ns, Term_Bar_list alternat_ns, Common common) { super(construct_ns); set_alternat_ns(alternat_ns); set_common(common); } public static Alternat_ns parse(java.io.Reader in) throws ParseException { return new Parser(in)._Alternat_ns(); } public static Alternat_ns parse(java.io.InputStream in) throws ParseException { return new Parser(in)._Alternat_ns(); } public static Alternat_ns parse(String s) { try { return parse(new java.io.StringReader(s)); } catch (ParseException e) { throw new RuntimeException(e.toString()); } } public static final Strategy partStrategy = new Strategy("from Alternat_ns to {Regular, Labeled}"); public static final Strategy subclassStrategy = new Strategy("from Alternat_ns through Term_Bar_list to Vertex"); public final TraversalGraph partGraph = new TraversalGraph(partStrategy, Main.cg); public final TraversalGraph subclassGraph = new TraversalGraph(subclassStrategy, Main.cg); Set subclasses = new HashSet(); boolean gotSubclasses = false; Set getSubclasses() { if (! gotSubclasses) { subclassGraph.traverse(this, new SubclassGatherVisitor(subclasses)); gotSubclasses = true; } return subclasses; } void addPart(String partName, String partType) { Iterator iter = getSubclasses().iterator(); for(;iter.hasNext();) { ((Adjacency)Cd_graph.adjs.get(iter.next())).addPart(partName, partType); } } Set getParts() { return getParts(partGraph); } void resolveSubclasses(String myName) { Iterator sIter = getSubclasses().iterator(); Adjacency adj; for(;sIter.hasNext();) { adj = (Adjacency)Cd_graph.adjs.get(sIter.next()); adj.addSuperClass(myName); } } void flatten() { TraversalGraph tg = new TraversalGraph("from Any_vertex_List through Normal to " + Main.FIDENT, Main.cg); Iterator ptIter = tg.gather(this.get_construct_ns()).iterator(); Iterator pIter = getParts().iterator(); Iterator sIter = getSubclasses().iterator(); Map adjs = Cd_graph.adjs; String partName; String partType; String subclassName; Adjacency adj; for (;pIter.hasNext();) { partType = ptIter.next().toString(); partName = pIter.next().toString(); for (sIter = getSubclasses().iterator();sIter.hasNext();) { subclassName = sIter.next().toString(); adj = (Adjacency)adjs.get(subclassName); if (adj == null) { System.out.println("The definition for " + subclassName + " is missing!"); System.exit(1); } else try { // System.out.println("Processing " + partName + " which is instance of: " + partType); adj.addPart(partName,partType); } catch (RuntimeException re) { System.out.println("Duplicate name of \"" + partName + "\" found in \"" + subclassName + "\""); } } } } void propagateTBRV() { Iterator iter = getSubclasses().iterator(); for(;iter.hasNext();) { ((Adjacency)Cd_graph.adjs.get(iter.next())).propagateTBRV(); } } void universal_trv0_bef(UniversalVisitor _v_) { super.universal_trv0_bef(_v_); ((UniversalVisitor) _v_).before(this); } void universal_trv0_aft(UniversalVisitor _v_) { ((UniversalVisitor) _v_).after(this); super.universal_trv0_aft(_v_); } void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); ((UniversalVisitor) _v_).before_alternat_ns(this, alternat_ns); alternat_ns.universal_trv0(_v_); ((UniversalVisitor) _v_).after_alternat_ns(this, alternat_ns); if (common != null) { ((UniversalVisitor) _v_).before_common(this, common); common.universal_trv0(_v_); ((UniversalVisitor) _v_).after_common(this, common); } super.universal_trv0(_v_); universal_trv0_aft(_v_); } void __trav_display_Cd_graph_trv_bef(DisplayVisitor __v0) { super.__trav_display_Cd_graph_trv_bef(__v0); ((DisplayVisitor) __v0).before(this); } void __trav_display_Cd_graph_trv_aft(DisplayVisitor __v0) { ((DisplayVisitor) __v0).after(this); super.__trav_display_Cd_graph_trv_aft(__v0); } void __trav_display_Cd_graph_trv(DisplayVisitor __v0) { __trav_display_Cd_graph_trv_bef(__v0); ((DisplayVisitor) __v0).before_alternat_ns(this, alternat_ns); alternat_ns.__trav_display_Cd_graph_trv(__v0); ((UniversalVisitor) __v0).after_alternat_ns(this, alternat_ns); if (common != null) { ((DisplayVisitor) __v0).before_common(this, common); common.__trav_display_Cd_graph_trv(__v0); ((UniversalVisitor) __v0).after_common(this, common); } super.__trav_display_Cd_graph_trv(__v0); __trav_display_Cd_graph_trv_aft(__v0); } }