Revision 44752 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultOptimizer.java
DefaultOptimizer.java | ||
---|---|---|
5 | 5 |
import java.util.Collections; |
6 | 6 |
import java.util.Iterator; |
7 | 7 |
import org.gvsig.expressionevaluator.Code; |
8 |
import org.gvsig.expressionevaluator.Code.Caller; |
|
9 | 8 |
import org.gvsig.expressionevaluator.CodeBuilder; |
10 | 9 |
import org.gvsig.expressionevaluator.Codes; |
11 | 10 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
... | ... | |
13 | 12 |
import org.gvsig.expressionevaluator.Interpreter; |
14 | 13 |
import org.gvsig.expressionevaluator.SymbolTable; |
15 | 14 |
import org.gvsig.expressionevaluator.impl.DefaultCodeBuilder.BaseCodes; |
15 |
import org.gvsig.expressionevaluator.Code.Callable; |
|
16 | 16 |
|
17 | 17 |
/** |
18 | 18 |
* |
... | ... | |
170 | 170 |
|
171 | 171 |
private Code doOptimize(Code code) { |
172 | 172 |
switch (code.code()) { |
173 |
case Code.CALLER:
|
|
174 |
Caller caller = (Caller) code;
|
|
173 |
case Code.CALLABLE:
|
|
174 |
Callable caller = (Callable) code;
|
|
175 | 175 |
Function function = caller.function(); |
176 | 176 |
if ( function == null) { |
177 | 177 |
// resolve and link function |
... | ... | |
182 | 182 |
return ((FunctionOptimizer) caller.function()).optimize(this, caller); |
183 | 183 |
} else { |
184 | 184 |
switch (caller.type()) { |
185 |
case Caller.BINARY_OPERATOR: {
|
|
185 |
case Callable.BINARY_OPERATOR: {
|
|
186 | 186 |
Code op1 = this.doOptimize(caller.parameters().get(0)); |
187 | 187 |
Code op2 = this.doOptimize(caller.parameters().get(1)); |
188 | 188 |
if ( function.allowConstantFolding()) { |
... | ... | |
196 | 196 |
} |
197 | 197 |
} |
198 | 198 |
|
199 |
case Code.Caller.UNARY_OPERATOR: {
|
|
199 |
case Code.Callable.UNARY_OPERATOR: {
|
|
200 | 200 |
Code op1 = this.doOptimize(caller.parameters().get(0)); |
201 | 201 |
if (function.allowConstantFolding() |
202 | 202 |
&& op1.code() == Code.CONSTANT) { |
... | ... | |
207 | 207 |
return code; |
208 | 208 |
} |
209 | 209 |
|
210 |
case Code.Caller.FUNCTION:
|
|
210 |
case Code.Callable.FUNCTION:
|
|
211 | 211 |
default: { |
212 | 212 |
BaseCodes newArgs = null; |
213 | 213 |
boolean canOptimize = true; |
Also available in: Unified diff