]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/SCLRelation.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / relations / SCLRelation.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/SCLRelation.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/SCLRelation.java
new file mode 100644 (file)
index 0000000..a14ddaf
--- /dev/null
@@ -0,0 +1,44 @@
+package org.simantics.scl.compiler.elaboration.relations;
+
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+import org.simantics.scl.compiler.elaboration.expressions.Variable;
+import org.simantics.scl.compiler.elaboration.query.compilation.EnforcingContext;
+import org.simantics.scl.compiler.elaboration.query.compilation.QueryCompilationContext;
+import org.simantics.scl.compiler.types.TPred;
+import org.simantics.scl.compiler.types.TVar;
+import org.simantics.scl.compiler.types.Type;
+
+public interface SCLRelation {
+    
+    public static final int F = 0;
+    public static final int B = 1;
+    
+    public static final int FF = 0;
+    public static final int BF = 1;
+    public static final int FB = 2;
+    public static final int BB = 3;
+    
+    public static final int FFF = 0;
+    public static final int BFF = 1;
+    public static final int FBF = 2;
+    public static final int BBF = 3;
+    public static final int FFB = 4;
+    public static final int BFB = 5;
+    public static final int FBB = 6;
+    public static final int BBB = 7;
+    
+    TVar[] getTypeVariables();
+    Type[] getParameterTypes();
+    int getPhase();
+    
+    double getSelectivity(int boundVariables);
+    int getRequiredVariablesMask();
+    void generate(long location,
+            QueryCompilationContext context,
+            Type[] typeParameters,
+            Variable[] parameters, int boundVariables);
+    Expression generateEnforce(long location, EnforcingContext context,
+            Type[] typeParameters,
+            Variable[] parameters);
+
+}