// behaviors for manipulating history and state objects State { void print() to * (PrintVisitor); traversal toAll(UniversalVisitor) { to *; } public static State makeInitial(CSP formula) {{ State s = new State(); s.set_resolvent(new Literal_List()); s.set_bias(0.0); s.set_formula(formula); s.set_partial(new Assignment()); s.set_best(new Assignment()); s.get_partial().set_literals(new Literal_List()); s.get_best().set_literals(new Literal_List()); Iterator iVars = formula.vars().iterator(); while (iVars.hasNext()) { Literal l = new F(); l.set_var(iVars.next()); s.get_best().extendBang(l); } return s; }} public State copy() {{ CopyVisitor cv = new CopyVisitor(State.class); toAll(cv); return (State)cv.get_return_val(); }} } History { void print() to * (PrintVisitor); public State getLastState() to State { before State (@ return_val = host; @) } (@ // make a history in the default initial configuration public History(CSP formula) { start = State.makeInitial(formula); transitions = TState_List.parse(""); } @) }