package edu.neu.ccs.demeter.aplib.cd; import java.util.*; import java.io.*; import edu.neu.ccs.demeter.aplib.*; import edu.neu.ccs.demeter.*; 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 __V_ClassGraph_expandParamDefs() { super(); } public __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_); } }