浏览代码

Compilable version of CBD semantics

Yentl Van Tendeloo 8 年之前
父节点
当前提交
789282980e
共有 1 个文件被更改,包括 12 次插入9 次删除
  1. 12 9
      integration/code/cbd_semantics.alc

+ 12 - 9
integration/code/cbd_semantics.alc

@@ -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)