01: package org.mvel.ast;
02:
03: import org.mvel.MVEL;
04: import org.mvel.compiler.ExecutableStatement;
05: import org.mvel.integration.VariableResolverFactory;
06: import static org.mvel.util.ParseTools.subCompileExpression;
07:
08: public class Invert extends ASTNode {
09: private ExecutableStatement stmt;
10:
11: public Invert(char[] name, int fields) {
12: this .name = name;
13:
14: if ((fields & COMPILE_IMMEDIATE) != 0) {
15: this .stmt = (ExecutableStatement) subCompileExpression(name);
16: }
17: }
18:
19: public Object getReducedValueAccelerated(Object ctx,
20: Object this Value, VariableResolverFactory factory) {
21: return ~((Integer) stmt.getValue(ctx, this Value, factory));
22: }
23:
24: public Object getReducedValue(Object ctx, Object this Value,
25: VariableResolverFactory factory) {
26: return ~((Integer) MVEL.eval(name, ctx, factory));
27: }
28: }
|