]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/AbstractExpressionCompilationRequest.java
Multiple readers and variable optimization
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / scl / AbstractExpressionCompilationRequest.java
index f7b78278c513ba3c7a0b20b018ec46e2ea161738..21758a2e559d4191e2879a9a1baa0952edcc6449 100644 (file)
@@ -1,14 +1,15 @@
 package org.simantics.db.layer0.scl;
 
-import gnu.trove.map.hash.THashMap;
-
 import java.util.ArrayList;
 import java.util.List;
 
+import org.simantics.databoard.Bindings;
 import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.exception.RuntimeDatabaseException;
 import org.simantics.db.request.Read;
+import org.simantics.layer0.Layer0;
 import org.simantics.scl.compiler.common.names.Name;
 import org.simantics.scl.compiler.constants.StringConstant;
 import org.simantics.scl.compiler.elaboration.expressions.EApply;
@@ -35,6 +36,8 @@ import org.simantics.scl.runtime.SCLContext;
 import org.simantics.scl.runtime.function.Function1;
 import org.simantics.utils.datastructures.Pair;
 
+import gnu.trove.map.hash.THashMap;
+
 /**
  * <p>This is a base implementation for compiling expressions stored into 
  * graph. It provides a skeleton and a set of methods that must be
@@ -223,4 +226,10 @@ implements Read<Function1<EvaluationContext,Object>> {
         else
             return base;
     }
+    
+    protected static String resolveExpectedValueType(ReadGraph graph, Resource predicate) throws DatabaseException {
+        Layer0 L0 = Layer0.getInstance(graph);
+        return graph.getPossibleRelatedValue(predicate, L0.RequiresValueType, Bindings.STRING);
+    }
+    
 }