X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Frelations%2FSCLRelation.java;h=e93ff6e8fe16a7b5eb1aeb5a45164a86302c0be2;hp=9642762cb220cfa5a247ea7a2a3119e1aadb33aa;hb=1ec0193a5a5b8f368b03adb24acd762838ddf8ea;hpb=a8758de5bc19e5adb3f618d3038743a164f09912 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 index 9642762cb..e93ff6e8f 100644 --- 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 @@ -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,8 +31,11 @@ public interface SCLRelation { TVar[] getTypeVariables(); Type[] getParameterTypes(); + default TPred[] getTypeConstraints() { + return TPred.EMPTY_ARRAY; + } int getPhase(); - + double getSelectivity(int boundVariables); int getRequiredVariablesMask(); void generate(long location, @@ -41,17 +45,22 @@ public interface SCLRelation { Expression generateEnforce(long location, EnforcingContext context, Type[] typeParameters, Variable[] parameters); - + default String[] getFieldNames() { + return null; + } + void generateIterate( PlanContext context, CodeWriter w, 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); }