core: package edu.neu.ccs.demeter.aplib.cd; import java.util.*; import java.io.*; import edu.neu.ccs.demeter.aplib.*; import edu.neu.ccs.demeter.*; add: class __V_ClassGraph_expandParamDefs { protected ClassGraph return_val; public ClassGraph get_return_val() {{ return return_val; }} public void set_return_val(ClassGraph new_return_val) {{ return_val = new_return_val; }} public constructor __V_ClassGraph_expandParamDefs() {{ super(); }} public constructor __V_ClassGraph_expandParamDefs(ClassGraph return_val) {{ super(); set_return_val(return_val); }} {{ ClassGraph cg; }} public void before(ClassGraph host) {{ cg = host; }} public void after(ClassSpec host) {{ ClassName name = host.get_classname(); ClassSpec_Commalist actuals = host.get_actual_parameters(); if (actuals != null) { // It's a parameterized class; make sure it hasn't already been // defined. ClassName newname = host.expandName(); if (!cg.definesClass(newname)) { // It hasn't; get the parameterized definition, copy it, // replace the parameters with the actual parameters, and add // it to the list of class defs. ClassDef paramdef = cg.findClassDef(name); if (paramdef == null) { System.err.println("Error: no such parameterized class \"" + name + "\""); } else { ClassDef actualdef = paramdef.deepCopy(); ParamClassName pname = ParamClassName.parse(newname.toString()); actualdef.set_paramclassname(pname); actualdef.replaceParams(paramdef.get_parameters(), actuals); cg.addClassDef(actualdef); } } } }} public void after(ClassGraph host) {{ return_val = host.removeParamDefs(); }} public void start() {{}} public void finish() {{}} {{ void universal_trv0_bef(UniversalVisitor _v_) { } }} {{ void universal_trv0_aft(UniversalVisitor _v_) { } }} {{ void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); return_val.universal_trv0(_v_); universal_trv0_aft(_v_); } }} }