|
@@ -1,14 +1,13 @@
|
|
|
from modelverse_kernel.primitives import PrimitiveFinished
|
|
|
import time
|
|
|
|
|
|
-"""
|
|
|
def get_superclasses(a, b, **remainder):
|
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- model_dict, tm_dict = yield [("RD", [a, "model"]),
|
|
|
- ("RD", [a, "type_mapping"])]
|
|
|
+ model_dict, tm_dict = yield [("RD", [a['id'], "model"]),
|
|
|
+ ("RD", [a['id'], "type_mapping"])]
|
|
|
|
|
|
- worklist = set(b['value'])
|
|
|
+ worklist = set([b['value']])
|
|
|
found = set([])
|
|
|
|
|
|
cache_value = {}
|
|
@@ -29,7 +28,7 @@ def get_superclasses(a, b, **remainder):
|
|
|
# If the link is typed by "Inheritance", we add its destination
|
|
|
link_name_node, = yield [("CALL_ARGS", [reverseKeyLookup, [{'id': model_dict}, {'id': link}]])]
|
|
|
if "value" not in link_name_node:
|
|
|
- link_name_node['id'], = yield [("CNV", [link_name_node['value']])]
|
|
|
+ link_name_node['value'], = yield [("RV", [link_name_node['id']])]
|
|
|
|
|
|
t_edge, = yield [("RD", [tm_dict, link_name_node['value']])]
|
|
|
t_edge, = yield [("RV", [t_edge])]
|
|
@@ -38,7 +37,7 @@ def get_superclasses(a, b, **remainder):
|
|
|
src, dst = edge
|
|
|
# Look up dst's name and add it
|
|
|
if dst not in cache_value:
|
|
|
- dst_name, = yield [("CALL_ARGS", [reverseKeyLookup, [model_dict, dst]])]
|
|
|
+ dst_name, = yield [("CALL_ARGS", [reverseKeyLookup, [{'id': model_dict}, {'id': dst}]])]
|
|
|
dst_name_value, = yield [("RV", [dst_name])]
|
|
|
cache_value[dst] = dst_name_value
|
|
|
dst_name_value = cache_value[dst]
|
|
@@ -103,7 +102,7 @@ def set_merge(a, b, **remainder):
|
|
|
|
|
|
def has_value(a, **remainder):
|
|
|
if "value" not in a:
|
|
|
- a['value'], = yield [("RV", [])]
|
|
|
+ a['value'], = yield [("RV", [a['id']])]
|
|
|
if a['value'] is None:
|
|
|
raise PrimitiveFinished({'value': False})
|
|
|
else:
|
|
@@ -193,7 +192,7 @@ def list_append(a, b, **remainder):
|
|
|
|
|
|
def list_read(a, b, **remainder):
|
|
|
if 'value' not in b:
|
|
|
- b['value'], = yield [("RV", [b])]
|
|
|
+ b['value'], = yield [("RV", [b['id']])]
|
|
|
result, = yield [("RD", [a['id'], b['value']])]
|
|
|
if result is None:
|
|
|
raise Exception("List read out of bounds: %s" % b['value'])
|
|
@@ -292,6 +291,9 @@ def list_pop_final(a, **remainder):
|
|
|
def instantiate_node(a, b, c, **remainder):
|
|
|
if "value" not in c:
|
|
|
c['value'], = yield [("RV", [c['id']])]
|
|
|
+ if "id" not in b:
|
|
|
+ b['id'], = yield [("CNV", [b['value']])]
|
|
|
+
|
|
|
node, dict_entry, typing = \
|
|
|
yield [("CN", []),
|
|
|
("RD", [a['id'], "model"]),
|
|
@@ -302,10 +304,11 @@ def instantiate_node(a, b, c, **remainder):
|
|
|
name = "__" + str(node)
|
|
|
name_node = {'value': name}
|
|
|
else:
|
|
|
+ name = c['value']
|
|
|
name_node = c
|
|
|
|
|
|
- yield [("CD", [dict_entry, c['value'], node])]
|
|
|
- yield [("CD", [typing, c['value'], b])]
|
|
|
+ yield [("CD", [dict_entry, name, node])]
|
|
|
+ yield [("CD", [typing, name, b['id']])]
|
|
|
|
|
|
raise PrimitiveFinished(name_node)
|
|
|
|
|
@@ -341,4 +344,3 @@ def list_delete(a, b, **remainder):
|
|
|
yield [("CD", [a['id'], b['value'] + index, value]) for index, value in enumerate(values[1:])] + \
|
|
|
[("DE", [i]) for i in edges]
|
|
|
raise PrimitiveFinished(a)
|
|
|
-"""
|