|
@@ -152,8 +152,8 @@ def add_AL(a, b, **remainder):
|
|
|
}
|
|
|
|
|
|
# Already add some often used types to the type cache, so we don't have to check for their presence
|
|
|
- to_str, string = yield [("RD", [metamodel_dict, "to_str"]),
|
|
|
- ("RD", [metamodel_dict, "String"])]
|
|
|
+ to_str, string = yield [("CNV", ["to_str"]),
|
|
|
+ ("CNV", ["String"])]
|
|
|
|
|
|
type_cache = {"to_str": to_str,
|
|
|
"String": string}
|
|
@@ -178,16 +178,13 @@ def add_AL(a, b, **remainder):
|
|
|
|
|
|
# Fill the cache
|
|
|
if expected_type not in type_cache:
|
|
|
- type_cache[expected_type], = yield [("RD", [metamodel_dict, expected_type])]
|
|
|
+ type_cache[expected_type], = yield [("CNV", [expected_type])]
|
|
|
|
|
|
# Need to add it now
|
|
|
- yield [("CD", [model_dict, "__%s" % worknode, worknode])]
|
|
|
+ nodename = "__%s" % worknode
|
|
|
+ yield [("CD", [model_dict, nodename, worknode])]
|
|
|
added.add(worknode)
|
|
|
- # NOTE can't just use CD here, as the key is a node and not a value
|
|
|
- t1, = yield [("CE", [type_map, type_cache[expected_type]])]
|
|
|
- t2, = yield [("CE", [t1, worknode])]
|
|
|
- if t1 is None or t2 is None:
|
|
|
- raise Exception("ERROR")
|
|
|
+ _, = yield [("CD", [type_map, nodename, type_cache[expected_type]])]
|
|
|
|
|
|
# Now add all its outgoing links, depending on the type we actually saw
|
|
|
links = type_links.get(expected_type, [])
|
|
@@ -206,25 +203,25 @@ def add_AL(a, b, **remainder):
|
|
|
# Now add: edge, edge_outlink, edge_name
|
|
|
|
|
|
# Add 'edge'
|
|
|
- yield [("CD", [model_dict, "__%s" % edge, edge])]
|
|
|
+ edgename = "__%s" % edge
|
|
|
+ yield [("CD", [model_dict, edgename, edge])]
|
|
|
added.add(edge)
|
|
|
link_type = "%s_%s" % (expected_type, link_name)
|
|
|
if link_type not in type_cache:
|
|
|
- type_cache[link_type], = yield [("RD", [metamodel_dict, link_type])]
|
|
|
- t, = yield [("CE", [type_map, type_cache[link_type]])]
|
|
|
- yield [("CE", [t, edge])]
|
|
|
+ type_cache[link_type], = yield [("CNV", [link_type])]
|
|
|
+ _, = yield [("CD", [type_map, edge_name, type_cache[link_type]])]
|
|
|
|
|
|
# Add 'edge_outlink'
|
|
|
- yield [("CD", [model_dict, "__%s" % edge_outlink, edge_outlink])]
|
|
|
+ edgename = "__%s" % edge_outlink
|
|
|
+ yield [("CD", [model_dict, edgename, edge_outlink])]
|
|
|
added.add(edge_outlink)
|
|
|
- t, = yield [("CE", [type_map, type_cache["to_str"]])]
|
|
|
- yield [("CE", [t, edge_outlink])]
|
|
|
+ _, = yield [("CD", [type_map, edgename, type_cache["to_str"]])]
|
|
|
|
|
|
# Add 'edge_name' (if not present)
|
|
|
if edge_name not in added:
|
|
|
- yield [("CD", [model_dict, "__%s" % edge_name, edge_name])]
|
|
|
- t, = yield [("CE", [type_map, type_cache["String"]])]
|
|
|
- yield [("CE", [t, edge_name])]
|
|
|
+ edgename = "__%s" % edge_name
|
|
|
+ yield [("CD", [model_dict, edgename, edge_name])]
|
|
|
+ _, = yield [("CD", [type_map, edgename, type_cache["String"]])]
|
|
|
added.add(edge_name)
|
|
|
|
|
|
# Add the destination to the worklist
|