static class NativizeSetFunDef.NonNativeCalc extends Object implements Calc
Modifier and Type | Field and Description |
---|---|
(package private) boolean |
nativeEnabled |
(package private) Calc |
parent |
Modifier | Constructor and Description |
---|---|
protected |
NonNativeCalc(Calc parent,
boolean nativeEnabled) |
Modifier and Type | Method and Description |
---|---|
void |
accept(CalcWriter calcWriter)
Prints this expression, by accepting a visiting
CalcWriter . |
boolean |
dependsOn(Hierarchy hierarchy)
Returns whether this expression depends upon a given hierarchy.
|
Object |
evaluate(Evaluator evaluator)
Evaluates this expression.
|
ResultStyle |
getResultStyle()
Returns style in which the result of evaluating this expression is
returned.
|
Type |
getType()
Returns the type of this expression.
|
boolean |
isWrapperFor(Class<?> iface)
Default implementation just does 'instanceof TargetClass'.
|
<T> T |
unwrap(Class<T> iface)
Default implementation just casts to TargetClass.
|
final Calc parent
final boolean nativeEnabled
protected NonNativeCalc(Calc parent, boolean nativeEnabled)
public Object evaluate(Evaluator evaluator)
Calc
public boolean dependsOn(Hierarchy hierarchy)
Calc
If it does not depend on the hierarchy, then re-evaluating the expression with a different member of this context must produce the same answer.
Some examples:[Measures].[Unit Sales]
depends on all dimensions except [Measures]
.
([Measures].[Unit Sales],
[Time].[1997]) > 1000
depends on all hierarchies except [Measures] and [Time].
Filter([Store].[USA].Children,
[Measures].[Unit Sales] < 50)
depends upon all hierarchies except [Store] and [Measures].
How so? Normally the scalar expression would depend upon all hierarchies
except [Measures], but the Filter
function sets the [Store]
context before evaluating the scalar expression, so it is not inherited
from the surrounding context.
public Type getType()
Calc
public void accept(CalcWriter calcWriter)
Calc
CalcWriter
.public ResultStyle getResultStyle()
Calc
One application of this method is for the compiler to figure out whether the compiled expression is returning a mutable list. If a mutable list is required, the compiler can create a mutable copy.
getResultStyle
in interface Calc
ExpCompiler.compileList(mondrian.olap.Exp, boolean)
public boolean isWrapperFor(Class<?> iface)
isWrapperFor
in interface Calc