blob: 988315f7527ff1167c6af432a4bc022bb3969063 [file] [log] [blame]
/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.dev.cfg;
import com.google.gwt.core.ext.PropertyOracle;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
import com.google.gwt.dev.javac.CompilationState;
import java.util.Set;
/**
* A query into the deferred binding system. A {@link Condition} can be tested
* against such a query.
*/
public class DeferredBindingQuery {
private int fallbackEvalCost = Integer.MAX_VALUE;
private final Set<String> linkerNames;
private final PropertyOracle propertyOracle;
private final String testType;
private final CompilationState compilationState;
/**
* Construct a query for contexts where a type is not available. Such a query
* also does not need a type oracle.
*/
public DeferredBindingQuery(PropertyOracle propertyOracle,
Set<String> linkerNames) {
this(propertyOracle, linkerNames, null, null);
}
/**
* Construct a fully general query, including a query type and type oracle.
*/
public DeferredBindingQuery(PropertyOracle propertyOracle, Set<String> linkerNames,
CompilationState compilationState, String testType) {
assert propertyOracle != null;
assert linkerNames != null;
this.propertyOracle = propertyOracle;
this.linkerNames = linkerNames;
this.testType = testType;
this.compilationState = compilationState;
}
public CompilationState getCompilationState() {
return compilationState;
}
public int getFallbackEvaluationCost() {
return fallbackEvalCost;
}
public Set<String> getLinkerNames() {
return linkerNames;
}
public PropertyOracle getPropertyOracle() {
return propertyOracle;
}
public String getTestType() {
return testType;
}
public TypeOracle getTypeOracle() {
return compilationState.getTypeOracle();
}
public void setFallbackEvaluationCost(int cost) {
fallbackEvalCost = cost;
}
}