Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
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()