Просмотр исходного кода

Make retype a compiled function

Yentl Van Tendeloo 7 лет назад
Родитель
Сommit
34cefc51db
2 измененных файлов с 29 добавлено и 1 удалено
  1. 28 0
      kernel/modelverse_kernel/compiled.py
  2. 1 1
      wrappers/modelverse_SCCD.py

+ 28 - 0
kernel/modelverse_kernel/compiled.py

@@ -407,3 +407,31 @@ def read_type(a, b, **remainder):
             yield [("RETURN", [{'value': ""}])]
             yield [("RETURN", [{'value': ""}])]
         else:
         else:
             yield [("RETURN", [{'value': type_value}])]
             yield [("RETURN", [{'value': type_value}])]
+
+def retype(a, b, c, **remainder):
+    if "value" not in b:
+        b['value'], = yield [("RV", [b['id']])]
+    if "value" not in c:
+        c['value'], = yield [("RV", [c['id']])]
+
+    tm, = yield [("RD", [a["id"], "type_mapping"])]
+
+    # remove_type
+    root, = yield [("RD", [tm, "root"])]
+    val_edge, = yield [("RDE", [root, b["value"]])]
+    if val_edge is not None:
+        # Key exists, so remove
+        yield [("DE", [val_edge])]
+
+    # Create new type links
+    type_elem, instance_elem = yield [("CNV", [c['value']]), ("CNV", [b['value']])]
+    type_link, = yield [("CE", [root, type_elem])]
+    instance_link, = yield [("CE", [type_link, instance_elem])]
+
+    # Add them to the model
+    yield  [("CD", [tm, str(type_elem), type_elem]),
+            ("CD", [tm, str(instance_elem), instance_elem]),
+            ("CD", [tm, str(type_link), type_link]), 
+            ("CD", [tm, str(instance_link), instance_link])]
+
+    yield [("RETURN", [None])]

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
-Date:   Thu May 31 08:17:54 2018
+Date:   Thu May 31 09:50:04 2018
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server