|
@@ -100,7 +100,27 @@ Void function create_schedule(model : Element, is_time_zero : Boolean):
|
|
|
|
|
|
while (list_len(to_visit) > 0):
|
|
|
element_name = list_read(to_visit, list_len(to_visit) - 1)
|
|
|
- incoming_links = allIncomingAssociationInstances(model, element_name, "Link")
|
|
|
+ if (reverseKeyLookup(model["metamodel"]["model"], dict_read_node(model["type_mapping"], model["model"][element_name])) == "DelayBlock"):
|
|
|
+ if (is_time_zero):
|
|
|
+ incoming_links = allIncomingAssociationInstances(model, element_name, "InitialCondition")
|
|
|
+ else:
|
|
|
+ incoming_links = create_node()
|
|
|
+ else:
|
|
|
+ incoming_links = allIncomingAssociationInstances(model, element_name, "Link")
|
|
|
+ ready = True
|
|
|
+
|
|
|
+ while (list_len(incoming_links) > 0):
|
|
|
+ link = set_pop(incoming_links)
|
|
|
+ source = readAssociationSource(model, link)
|
|
|
+ if (bool_not(set_in(visited, source))):
|
|
|
+ list_append(to_visit, source)
|
|
|
+ ready = False
|
|
|
+
|
|
|
+ if (ready):
|
|
|
+ new_schedule = instantiate_node(model, "Schedule", "")
|
|
|
+ instantiate_attribute(model, reverseKeyLookup(model["model"], schedule), "block", model["model"][element_name])
|
|
|
+ instantiate_attribute(model, reverseKeyLookup(model["model"], schedule), "next", model["model"][new_schedule])
|
|
|
+ schedule = new_schedule
|
|
|
|
|
|
return !
|
|
|
|