1 package org.simantics.scl.compiler.elaboration.query.compilation;
4 public abstract class QueryConstraint {
5 public int[] variables;
6 public long finalBoundVariables;
8 public QueryConstraint(int[] variables) {
9 this.variables = variables;
12 public QueryConstraint() {
15 public long getVariableMask() {
17 for(int v : variables)
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);
27 public void generateAndUpdateCost(QueryCompilationContext context) {
29 context.updateCost(getSolutionBranching(finalBoundVariables), getSolutionCost(finalBoundVariables));