]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/planning/items/EqualsPrePlanItem.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 / EqualsPrePlanItem.java
index 8a5d4efe4817133668f57eeef3e239d044618f24..692525b904dde3ade43dcdfb38ff89a7981d1662 100644 (file)
@@ -1,81 +1,81 @@
-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.elaboration.chr.plan.AssignOp;\r
-import org.simantics.scl.compiler.elaboration.chr.plan.CheckOp;\r
-import org.simantics.scl.compiler.elaboration.chr.plan.MatchOp;\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
-import org.simantics.scl.compiler.elaboration.expressions.Variable;\r
-import org.simantics.scl.compiler.elaboration.java.Builtins;\r
-\r
-import gnu.trove.set.hash.TIntHashSet;\r
-\r
-public class EqualsPrePlanItem extends PrePlanItem {\r
-    public Expression expression1, expression2;\r
-    public TIntHashSet variableSet1, variableSet2;\r
-\r
-    public EqualsPrePlanItem(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 = 1;\r
-        }\r
-        else {\r
-            if(variableSet1.isEmpty() && expression2.isPattern(0))\r
-                primaryPriority = 0.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(variableSet1.isEmpty() && variableSet2.isEmpty()) {\r
-            context.addPlanOp(new CheckOp(location, new EApply(location, new EConstant(Builtins.EQUALS, expression1.getType()), expression1, expression2)));\r
-        }\r
-        else if(variableSet2.isEmpty()) {\r
-            Variable variable = ((EVariable)expression1).getVariable();\r
-            context.addPlanOp(new AssignOp(location, variable, expression2));\r
-            context.bind(variableSet1);\r
-        }\r
-        else if(variableSet1.isEmpty()) {\r
-            if(expression2 instanceof EVariable) {\r
-                Variable variable = ((EVariable)expression2).getVariable();\r
-                context.addPlanOp(new AssignOp(location, variable, expression1));\r
-            }\r
-            else {\r
-                context.addPlanOp(new MatchOp(location, expression1, expression2));\r
-            }\r
-            context.bind(variableSet2);\r
-        }\r
-        else\r
-            throw new InternalCompilerError("Unsolvable query.");\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.elaboration.chr.plan.AssignOp;
+import org.simantics.scl.compiler.elaboration.chr.plan.CheckOp;
+import org.simantics.scl.compiler.elaboration.chr.plan.MatchOp;
+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 org.simantics.scl.compiler.elaboration.expressions.Variable;
+import org.simantics.scl.compiler.elaboration.java.Builtins;
+
+import gnu.trove.set.hash.TIntHashSet;
+
+public class EqualsPrePlanItem extends PrePlanItem {
+    public Expression expression1, expression2;
+    public TIntHashSet variableSet1, variableSet2;
+
+    public EqualsPrePlanItem(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 = 1;
+        }
+        else {
+            if(variableSet1.isEmpty() && expression2.isPattern(0))
+                primaryPriority = 0.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(variableSet1.isEmpty() && variableSet2.isEmpty()) {
+            context.addPlanOp(new CheckOp(location, new EApply(location, new EConstant(Builtins.EQUALS, expression1.getType()), expression1, expression2)));
+        }
+        else if(variableSet2.isEmpty()) {
+            Variable variable = ((EVariable)expression1).getVariable();
+            context.addPlanOp(new AssignOp(location, variable, expression2));
+            context.bind(variableSet1);
+        }
+        else if(variableSet1.isEmpty()) {
+            if(expression2 instanceof EVariable) {
+                Variable variable = ((EVariable)expression2).getVariable();
+                context.addPlanOp(new AssignOp(location, variable, expression1));
+            }
+            else {
+                context.addPlanOp(new MatchOp(location, expression1, expression2));
+            }
+            context.bind(variableSet2);
+        }
+        else
+            throw new InternalCompilerError("Unsolvable query.");
+    }
+}