def write_net_class(builder, net, namespace="ca", write_constructor=True, write_class_end=True): class_name = get_net_class_name(net) builder.write_class_head(class_name, namespace + "::Net") decls = [("def", "ca::NetDef *"), ("thread", "ca::Thread *")] if write_constructor: builder.write_constructor(class_name, emit_declarations(decls), ["{0}::Net(def, thread)".format(namespace)]) for place in net.places: if place.need_remember_source(): builder.line("place_{0.id}.set_default_source(thread->get_process_id());", place) builder.write_method_end() builder.write_method_start("ca::NetBase * copy()") builder.line("{0} *net = new {0}(*this);", class_name) builder.line("return net;") builder.write_method_end() for place in net.places: if place.need_remember_source(): cls = "ca::PlaceWithSource" else: cls = "ca::Place" builder.write_var_decl("place_" + str(place.id), "{0}<{1} >".format(cls, place.type)) write_reports_method(builder, net) write_receive_method(builder, net) if write_class_end: builder.write_class_end()
def write_vars_struct(builder, tr): """ Write class that servers as interface for transition's inner functions. """ class_name = "Vars_{0.id}".format(tr) builder.write_class_head(class_name) decls = tr.get_decls().get_list() builder.write_constructor(class_name, emit_declarations(decls, True), ["{0}({0})".format(name) for name, _ in decls ]) builder.write_method_end() for name, t in decls: builder.write_var_decl(name, t, True) builder.write_class_end()
def write_vars_struct(builder, tr): """ Write class that servers as interface for transition's inner functions. """ class_name = "Vars_{0.id}".format(tr) builder.write_class_head(class_name) decls = tr.get_decls().get_list() builder.write_constructor(class_name, emit_declarations(decls, True), ["{0}({0})".format(name) for name, _ in decls]) builder.write_method_end() for name, t in decls: builder.write_var_decl(name, t, True) builder.write_class_end()
def write_net_class(builder, net, namespace="ca", write_constructor=True, write_class_end=True): class_name = get_net_class_name(net) builder.write_class_head(class_name, namespace + "::Net") decls = [("def", "ca::NetDef *"), ("thread", "ca::Thread *")] if write_constructor: builder.write_constructor(class_name, emit_declarations(decls), ["{0}::Net(def, thread)".format(namespace)]) for place in net.places: if place.need_remember_source(): builder.line( "place_{0.id}.set_default_source(thread->get_process_id());", place) builder.write_method_end() builder.write_method_start("ca::NetBase * copy()") builder.line("{0} *net = new {0}(*this);", class_name) builder.line("return net;") builder.write_method_end() for place in net.places: if place.need_remember_source(): cls = "ca::PlaceWithSource" else: cls = "ca::Place" builder.write_var_decl("place_" + str(place.id), "{0}<{1} >".format(cls, place.type)) write_reports_method(builder, net) write_receive_method(builder, net) if write_class_end: builder.write_class_end()