]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/planning/items/MemberPrePlanItem.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / planning / items / MemberPrePlanItem.java
index d2b88dcb895f30198e2892cdd3db9d6a759221a4..aa4a339983ebc60864781f9930d603959701f046 100644 (file)
@@ -1,66 +1,66 @@
-package org.simantics.scl.compiler.elaboration.chr.planning.items;\r
-\r
-import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;\r
-import org.simantics.scl.compiler.common.names.Names;\r
-import org.simantics.scl.compiler.elaboration.chr.plan.CheckOp;\r
-import org.simantics.scl.compiler.elaboration.chr.plan.IterateListOp;\r
-import org.simantics.scl.compiler.elaboration.chr.planning.PrePlanItem;\r
-import org.simantics.scl.compiler.elaboration.chr.planning.QueryPlanningContext;\r
-import org.simantics.scl.compiler.elaboration.expressions.EApply;\r
-import org.simantics.scl.compiler.elaboration.expressions.EConstant;\r
-import org.simantics.scl.compiler.elaboration.expressions.EVariable;\r
-import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
-\r
-import gnu.trove.set.hash.TIntHashSet;\r
-\r
-public class MemberPrePlanItem extends PrePlanItem {\r
-    public Expression expression1, expression2;\r
-    public TIntHashSet variableSet1, variableSet2;\r
-\r
-    public MemberPrePlanItem(Expression expression1, Expression expression2, TIntHashSet variableSet1, TIntHashSet variableSet2, int secondaryPriority) {\r
-        super(secondaryPriority);\r
-        this.expression1 = expression1;\r
-        this.expression2 = expression2;\r
-        this.variableSet1 = variableSet1;\r
-        this.variableSet2 = variableSet2;\r
-        updatePrimaryPriority();\r
-    }\r
-\r
-    private void updatePrimaryPriority() {\r
-        if(variableSet2.isEmpty()) {\r
-            if(variableSet1.isEmpty())\r
-                primaryPriority = 0;\r
-            else \r
-                primaryPriority = 2.0;\r
-        }\r
-    }\r
-\r
-    @Override\r
-    public void initializeListeners(QueryPlanningContext context) {\r
-        context.listen(variableSet1, this);\r
-        context.listen(variableSet2, this);\r
-    }\r
-\r
-    @Override\r
-    public void variableSolved(QueryPlanningContext context, int variableId) {\r
-        variableSet1.remove(variableId);\r
-        variableSet2.remove(variableId);\r
-        updatePrimaryPriority();\r
-        context.priorityQueue.adjust(this);\r
-    }\r
-\r
-    @Override\r
-    public void generate(QueryPlanningContext context) {\r
-        if(!variableSet2.isEmpty())\r
-            throw new InternalCompilerError("Unsolvable query.");\r
-        if(variableSet1.isEmpty())\r
-            context.addPlanOp(new CheckOp(location,\r
-                    new EApply(location,\r
-                            new EConstant(context.getCompilationContext().getValue(Names.Prelude_elem)),\r
-                            expression1,\r
-                            expression2)));\r
-        else\r
-            context.addPlanOp(new IterateListOp(location, ((EVariable)expression1).getVariable(), expression2));\r
-        context.bind(variableSet1);\r
-    }\r
-}\r
+package org.simantics.scl.compiler.elaboration.chr.planning.items;
+
+import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
+import org.simantics.scl.compiler.common.names.Names;
+import org.simantics.scl.compiler.elaboration.chr.plan.CheckOp;
+import org.simantics.scl.compiler.elaboration.chr.plan.IterateListOp;
+import org.simantics.scl.compiler.elaboration.chr.planning.PrePlanItem;
+import org.simantics.scl.compiler.elaboration.chr.planning.QueryPlanningContext;
+import org.simantics.scl.compiler.elaboration.expressions.EApply;
+import org.simantics.scl.compiler.elaboration.expressions.EConstant;
+import org.simantics.scl.compiler.elaboration.expressions.EVariable;
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+
+import gnu.trove.set.hash.TIntHashSet;
+
+public class MemberPrePlanItem extends PrePlanItem {
+    public Expression expression1, expression2;
+    public TIntHashSet variableSet1, variableSet2;
+
+    public MemberPrePlanItem(Expression expression1, Expression expression2, TIntHashSet variableSet1, TIntHashSet variableSet2, int secondaryPriority) {
+        super(secondaryPriority);
+        this.expression1 = expression1;
+        this.expression2 = expression2;
+        this.variableSet1 = variableSet1;
+        this.variableSet2 = variableSet2;
+        updatePrimaryPriority();
+    }
+
+    private void updatePrimaryPriority() {
+        if(variableSet2.isEmpty()) {
+            if(variableSet1.isEmpty())
+                primaryPriority = 0;
+            else 
+                primaryPriority = 2.0;
+        }
+    }
+
+    @Override
+    public void initializeListeners(QueryPlanningContext context) {
+        context.listen(variableSet1, this);
+        context.listen(variableSet2, this);
+    }
+
+    @Override
+    public void variableSolved(QueryPlanningContext context, int variableId) {
+        variableSet1.remove(variableId);
+        variableSet2.remove(variableId);
+        updatePrimaryPriority();
+        context.priorityQueue.adjust(this);
+    }
+
+    @Override
+    public void generate(QueryPlanningContext context) {
+        if(!variableSet2.isEmpty())
+            throw new InternalCompilerError("Unsolvable query.");
+        if(variableSet1.isEmpty())
+            context.addPlanOp(new CheckOp(location,
+                    new EApply(location,
+                            new EConstant(context.getCompilationContext().getValue(Names.Prelude_elem)),
+                            expression1,
+                            expression2)));
+        else
+            context.addPlanOp(new IterateListOp(location, ((EVariable)expression1).getVariable(), expression2));
+        context.bind(variableSet1);
+    }
+}