|
@@ -35,6 +35,7 @@ Void function translate_to_runtime(design_model : Element):
|
|
|
String attribute
|
|
|
String src
|
|
|
String dst
|
|
|
+ Element all_attributes
|
|
|
|
|
|
output("Translating to runtime model!")
|
|
|
|
|
@@ -45,10 +46,10 @@ Void function translate_to_runtime(design_model : Element):
|
|
|
all_blocks = allInstances(design_model, "Block")
|
|
|
while (list_len(all_blocks) > 0):
|
|
|
element_name = set_pop(all_blocks)
|
|
|
- mm_type_name = reverseKeyLookup(design_model["metamodel"]["model"], dict_read_node(model["type_mapping"], model["model"][element_name]))
|
|
|
+ mm_type_name = reverseKeyLookup(design_model["metamodel"]["model"], dict_read_node(design_model["type_mapping"], design_model["model"][element_name]))
|
|
|
instantiate_node(runtime_model, mm_type_name, element_name)
|
|
|
all_attributes = getAttributeList(design_model, element_name)
|
|
|
- while (set_len(all_attributes) > 0):
|
|
|
+ while (read_nr_out(all_attributes) > 0):
|
|
|
attr_name = set_pop(all_attributes)
|
|
|
if (bool_not(set_in(runtime_model["model"], read_attribute(design_model, element_name, attr_name)))):
|
|
|
instantiate_attribute(runtime_model, element_name, attr_name, read_attribute(design_model, element_name, attr_name))
|
|
@@ -57,19 +58,19 @@ Void function translate_to_runtime(design_model : Element):
|
|
|
// Don't merge this together with the block conversion, as the destination block might not exist yet!
|
|
|
output("Relinking blocks")
|
|
|
all_links = allInstances(design_model, "Link")
|
|
|
- while (set_len(all_links) > 0):
|
|
|
+ while (read_nr_out(all_links) > 0):
|
|
|
element_name = set_pop(all_links)
|
|
|
- src = reverseKeyLookup(design_model["model"], read_edge_src(model["model"][element_name]))
|
|
|
- dst = reverseKeyLookup(design_model["model"], read_edge_dst(model["model"][element_name]))
|
|
|
+ src = reverseKeyLookup(design_model["model"], read_edge_src(design_model["model"][element_name]))
|
|
|
+ dst = reverseKeyLookup(design_model["model"], read_edge_dst(design_model["model"][element_name]))
|
|
|
instantiate_link(runtime_model, "Link", element_name, src, dst)
|
|
|
output(((" Relinked blocks " + src) + " and ") + dst)
|
|
|
|
|
|
output("Resetting initial conditions")
|
|
|
all_links = allInstances(design_model, "InitialCondition")
|
|
|
- while (set_len(all_links) > 0):
|
|
|
+ while (read_nr_out(all_links) > 0):
|
|
|
element_name = set_pop(all_links)
|
|
|
- src = reverseKeyLookup(design_model["model"], read_edge_src(model["model"][element_name]))
|
|
|
- dst = reverseKeyLookup(design_model["model"], read_edge_dst(model["model"][element_name]))
|
|
|
+ src = reverseKeyLookup(design_model["model"], read_edge_src(design_model["model"][element_name]))
|
|
|
+ dst = reverseKeyLookup(design_model["model"], read_edge_dst(design_model["model"][element_name]))
|
|
|
instantiate_link(runtime_model, "InitialCondition", element_name, src, dst)
|
|
|
output(" Reset IC of " + dst)
|
|
|
|
|
@@ -92,6 +93,8 @@ Void function create_schedule(model : Element, is_time_zero : Boolean):
|
|
|
String schedule
|
|
|
String element_name
|
|
|
String link
|
|
|
+ String source
|
|
|
+ String new_schedule
|
|
|
Boolean ready
|
|
|
|
|
|
all_blocks = allInstances(model, "Block")
|
|
@@ -102,7 +105,7 @@ Void function create_schedule(model : Element, is_time_zero : Boolean):
|
|
|
else:
|
|
|
schedule = instantiate_node(model, "Schedule", "schedule_run")
|
|
|
|
|
|
- while (bool_and(set_len(all_blocks) > 0)):
|
|
|
+ while (read_nr_out(all_blocks) > 0):
|
|
|
element_name = set_pop(all_blocks)
|
|
|
if (bool_not(set_in(visited, element_name))):
|
|
|
list_append(to_visit, element_name)
|