]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/query/compilation/QueryConstraint.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / query / compilation / QueryConstraint.java
1 package org.simantics.scl.compiler.elaboration.query.compilation;
2
3
4 public abstract class QueryConstraint {
5     public int[] variables;
6     public long finalBoundVariables;
7     
8     public QueryConstraint(int[] variables) {
9         this.variables = variables;
10     }
11     
12     public QueryConstraint() {
13     }
14     
15     public long getVariableMask() {
16         long result = 0L;
17         for(int v : variables)
18             result |= 1 << v;
19         return result;
20     }
21     
22     public abstract boolean canBeSolvedFrom(long boundVariables);
23     public abstract double getSolutionCost(long boundVariables);
24     public abstract double getSolutionBranching(long boundVariables);
25     public abstract void generate(QueryCompilationContext context);
26     
27     public void generateAndUpdateCost(QueryCompilationContext context) {
28         generate(context);
29         context.updateCost(getSolutionBranching(finalBoundVariables), getSolutionCost(finalBoundVariables));
30     }
31 }