]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/relations/SCLRelation.java
Implemented GraphPropertyRelation with the new CHR implementation
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / relations / SCLRelation.java
index 9642762cb220cfa5a247ea7a2a3119e1aadb33aa..4ac37bbc1f733b4084f22a17d6bde77c141bf50d 100644 (file)
@@ -6,6 +6,7 @@ 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.internal.codegen.writer.CodeWriter;
+import org.simantics.scl.compiler.types.TPred;
 import org.simantics.scl.compiler.types.TVar;
 import org.simantics.scl.compiler.types.Type;
 
@@ -30,6 +31,9 @@ public interface SCLRelation {
     
     TVar[] getTypeVariables();
     Type[] getParameterTypes();
+    default TPred[] getTypeConstraints() {
+        return TPred.EMPTY_ARRAY;
+    }
     int getPhase();
     
     double getSelectivity(int boundVariables);
@@ -48,10 +52,12 @@ public interface SCLRelation {
             long location,
             int boundMask,
             Variable[] variables,
-            Expression[] expressions);
+            Expression[] expressions,
+            Expression[] typeConstraintEvidenceParameters);
     void generateEnforce(
             PlanContext context,
             CodeWriter w,
             long location,
-            Expression[] parameters);
+            Expression[] parameters,
+            Expression[] typeConstraintEvidenceParameters);
 }