import java.util.*; import java.net.*; import java.io.*; import java.lang.*; import EDU.neu.ccs.demeter.*; class S extends Block implements Runnable, Cloneable { protected Service service; public Service get_service() { return service; } public void set_service(Service new_service) { service = new_service; } public S() { super(); } public S(Service service) { super(); set_service(service); } public static S parse(java.io.InputStream in) throws ParseException { return new Parser(in)._S(); } public static S parse(String s) { try { return parse(new java.io.ByteArrayInputStream(s.getBytes())); } catch (ParseException e) { throw new RuntimeException(e.toString()); } } public void run() {{ Visitor v= new Visitor(); RepeatCheckingVisitor rv = new RepeatCheckingVisitor(); LimitCheckingVisitor lv = new LimitCheckingVisitor(); /* in order to be a comunication between the visitors */ v.set_rv(rv); v.set_lv(lv); rv.set_lv(lv); rv.set_v(v); lv.set_v(v); this.Traverse(rv,lv,v); } } boolean check(){ TimeCheckingVisitor tv = new TimeCheckingVisitor(); this.TimeTraverse(tv); /* depending on what value is returned the interpretation is made or not */ return tv.get_return_val(); } void universal_trv0_bef(UniversalVisitor _v_) { super.universal_trv0_bef(_v_); _v_.before(this); } void universal_trv0_aft(UniversalVisitor _v_) { _v_.after(this); super.universal_trv0_aft(_v_); } void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); _v_.before_service(this, service); service.universal_trv0(_v_); _v_.after_service(this, service); super.universal_trv0(_v_); universal_trv0_aft(_v_); } public void Traverse(RepeatCheckingVisitor rv, LimitCheckingVisitor lv, Visitor v) { Traverse_S_trv(rv, lv, v); } void Traverse_S_trv_bef(RepeatCheckingVisitor rv, LimitCheckingVisitor lv, Visitor v) { super.Traverse_S_trv_bef(rv, lv, v); } void Traverse_S_trv_aft(RepeatCheckingVisitor rv, LimitCheckingVisitor lv, Visitor v) { super.Traverse_S_trv_aft(rv, lv, v); } void Traverse_S_trv(RepeatCheckingVisitor rv, LimitCheckingVisitor lv, Visitor v) { Traverse_S_trv_bef(rv, lv, v); service.Traverse_S_trv(rv, lv, v); Traverse_S_trv_aft(rv, lv, v); } public void TimeTraverse(TimeCheckingVisitor tv) { TimeTraverse_S_trv(tv); } void TimeTraverse_S_trv_bef(TimeCheckingVisitor tv) { super.TimeTraverse_S_trv_bef(tv); } void TimeTraverse_S_trv_aft(TimeCheckingVisitor tv) { super.TimeTraverse_S_trv_aft(tv); } void TimeTraverse_S_trv(TimeCheckingVisitor tv) { TimeTraverse_S_trv_bef(tv); service.TimeTraverse_S_trv(tv); TimeTraverse_S_trv_aft(tv); } }