Browse Source

Remove reverseKeyLookup from conformance check

Yentl Van Tendeloo 8 years ago
parent
commit
edb0f478e5
1 changed files with 9 additions and 4 deletions
  1. 9 4
      bootstrap/conformance_scd.alc

+ 9 - 4
bootstrap/conformance_scd.alc

@@ -115,6 +115,11 @@ String function conformance_scd(model : Element):
 	Element spi_cache
 	Element constraint_function
 
+	Element reverse_m
+	Element reverse_mm
+	reverse_m = make_reverse_dictionary(model["model"])
+	reverse_mm = make_reverse_dictionary(model["metamodel"]["model"])
+
 	spo_cache = create_node()
 	spi_cache = create_node()
 
@@ -144,10 +149,10 @@ String function conformance_scd(model : Element):
 				return "Type of element not in specified metamodel: " + model_info(model, model_name)!
 
 			if (is_edge(element)):
-				src_model = reverseKeyLookup(model["model"], read_edge_src(element))
-				dst_model = reverseKeyLookup(model["model"], read_edge_dst(element))
-				src_metamodel = reverseKeyLookup(metamodel["model"], read_edge_src(metamodel["model"][typing[model_name]]))
-				dst_metamodel = reverseKeyLookup(metamodel["model"], read_edge_dst(metamodel["model"][typing[model_name]]))
+				src_model = reverse_m[cast_id2s(read_edge_src(element))]
+				dst_model = reverse_m[cast_id2s(read_edge_dst(element))]
+				src_metamodel = reverse_mm[cast_id2s(read_edge_src(metamodel["model"][typing[model_name]]))]
+				dst_metamodel = reverse_mm[cast_id2s(read_edge_dst(metamodel["model"][typing[model_name]]))]
 
 				if (bool_not(is_nominal_instance(model, src_model, src_metamodel))):
 					log("got: " + src_model)