import edu.neu.ccs.demeter.*; class CopyVisitor extends UniversalVisitor { public CopyVisitor() { super(); } private java.util.Stack history = new java.util.Stack(); public CopyVisitor(Class firstClass) { try { history.push(firstClass.newInstance()); } catch(Exception e) { e.printStackTrace(); } } public Object get_copy() { return history.peek(); } Object get_return_val() { return get_copy() ; } public void before_id(ShoeOrder source, String dest) { ShoeOrder it = (ShoeOrder) history.peek(); it.set_id(dest); } public void before_style(ShoeOrder source, String dest) { ShoeOrder it = (ShoeOrder) history.peek(); it.set_style(dest); } public void before_color(ShoeOrder source, Ident dest) { ShoeOrder it = (ShoeOrder) history.peek(); it.set_color(dest); } public void before_size(ShoeOrder source, String dest) { ShoeOrder it = (ShoeOrder) history.peek(); it.set_size(dest); } public void before_width(ShoeOrder source, Width dest) { ShoeOrder it = (ShoeOrder) history.peek(); Width p = new Width(); it.set_width(p); history.push(p); } public void after_width(ShoeOrder source, Width dest) { history.pop(); } public void before_stores(ShoeOrder source, Store_List dest) { ShoeOrder it = (ShoeOrder) history.peek(); Store_List p = new Store_List(); it.set_stores(p); history.push(p); } public void after_stores(ShoeOrder source, Store_List dest) { history.pop(); } public void before_w(Width source, W dest) { Width it = (Width) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_w((W) p); history.push(p); } public void after_w(Width source, W dest) { history.pop(); } public void before_name(Store source, Ident dest) { Store it = (Store) history.peek(); it.set_name(dest); } public void before_howManySuchShoes(Store source, Quantity dest) { Store it = (Store) history.peek(); Quantity p = new Quantity(); it.set_howManySuchShoes(p); history.push(p); } public void after_howManySuchShoes(Store source, Quantity dest) { history.pop(); } public void before_number(Quantity source, Number dest) { Quantity it = (Quantity) history.peek(); it.set_number(dest); } public void before_total(SummingVisitor source, int dest) { SummingVisitor it = (SummingVisitor) history.peek(); it.set_total(dest); } public void before_indent(PrintVisitor source, int dest) { PrintVisitor it = (PrintVisitor) history.peek(); it.set_indent(dest); } public void before_needSpace(PrintVisitor source, boolean dest) { PrintVisitor it = (PrintVisitor) history.peek(); it.set_needSpace(dest); } public void before_is_equal(SubgraphVisitor source, boolean dest) { SubgraphVisitor it = (SubgraphVisitor) history.peek(); it.set_is_equal(dest); } public void before_is_equal(EqualVisitor source, boolean dest) { EqualVisitor it = (EqualVisitor) history.peek(); it.set_is_equal(dest); } public void before_indent(DisplayVisitor source, int dest) { DisplayVisitor it = (DisplayVisitor) history.peek(); it.set_indent(dest); } public void before_indent(TraceVisitor source, int dest) { TraceVisitor it = (TraceVisitor) history.peek(); it.set_indent(dest); } public void before_first(Store_List source, Nonempty_Store_List dest) { Store_List it = (Store_List) history.peek(); Nonempty_Store_List p = new Nonempty_Store_List(); it.set_first(p); history.push(p); } public void after_first(Store_List source, Nonempty_Store_List dest) { history.pop(); } public void before_it(Nonempty_Store_List source, Store dest) { Nonempty_Store_List it = (Nonempty_Store_List) history.peek(); Store p = new Store(); it.set_it(p); history.push(p); } public void after_it(Nonempty_Store_List source, Store dest) { history.pop(); } public void before_next(Nonempty_Store_List source, Nonempty_Store_List dest) { Nonempty_Store_List it = (Nonempty_Store_List) history.peek(); Nonempty_Store_List p = new Nonempty_Store_List(); it.set_next(p); history.push(p); } public void after_next(Nonempty_Store_List source, Nonempty_Store_List dest) { history.pop(); } void universal_trv0_bef(UniversalVisitor _v_) { super.universal_trv0_bef(_v_); } void universal_trv0_aft(UniversalVisitor _v_) { super.universal_trv0_aft(_v_); } void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); Object copy = get_copy(); super.universal_trv0(_v_); universal_trv0_aft(_v_); } }