X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fchr%2Fplanning%2FPrePlanItem.java;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fchr%2Fplanning%2FPrePlanItem.java;h=bb85900204b42bed829d6fcad56a96e5c841b5b6;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hp=0000000000000000000000000000000000000000;hpb=12d9af17384d960b75d58c3935d2b7b46d93e87b;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/planning/PrePlanItem.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/planning/PrePlanItem.java new file mode 100644 index 000000000..bb8590020 --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/planning/PrePlanItem.java @@ -0,0 +1,31 @@ +package org.simantics.scl.compiler.elaboration.chr.planning; + +public abstract class PrePlanItem { + int queuePos; + /* Primary priorities: + * 0 = check + * 1 = functional calculation + * 2 = almost completely bound relation + * 3 = completely inbound relation + */ + public double primaryPriority = Double.POSITIVE_INFINITY; + public int secondaryPriority; + public long location; + + public PrePlanItem(int secondaryPriority) { + this.secondaryPriority = secondaryPriority; + } + + public int compare(PrePlanItem other) { + if(primaryPriority < other.primaryPriority) + return -1; + if(primaryPriority > other.primaryPriority) + return 1; + return Integer.compare(secondaryPriority, other.secondaryPriority); + } + + public abstract void initializeListeners(QueryPlanningContext context); + public abstract void variableSolved(QueryPlanningContext context, int variableId); + + public abstract void generate(QueryPlanningContext context); +}