public final class VarRef extends ParseExpr
Constructor and Description |
---|
VarRef(InputInfo info,
Var var)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
boolean |
accept(ASTVisitor visitor)
Traverses this expression, notifying the visitor of declared and used variables,
and checking the tree for other recursive properties.
|
void |
checkUp()
Checks if all updating expressions are correctly placed.
|
Expr |
compile(QueryContext qc,
VarScope scp)
Compiles and optimizes the expression, assigns types and cardinalities.
|
VarRef |
copy(QueryContext qc,
VarScope scp,
IntObjMap<Var> vs)
Copies an expression.
|
VarUsage |
count(Var v)
Checks how often a variable is used in this expression.
|
Data |
data()
Returns the data reference bound to this expression.
|
String |
description()
Returns a string description of the expression.
|
int |
exprSize()
Counts the number of expressions in this expression's sub-tree.
|
boolean |
has(Expr.Flag flag)
Indicates if an expression has the specified compiler property.
|
Expr |
inline(QueryContext qc,
VarScope scp,
Var v,
Expr ex)
Inlines an expression into this one, replacing all references to the given variable.
|
Item |
item(QueryContext qc,
InputInfo ii)
Evaluates the expression and returns the resulting item,
or a
null reference if the expression yields an empty sequence. |
Iter |
iter(QueryContext qc)
Evaluates the expression and returns an iterator on the resulting items.
|
VarRef |
optimize(QueryContext qc,
VarScope scp)
Optimizes an already compiled expression without recompiling its sub-expressions.
|
void |
plan(FElem plan)
Creates an expression tree.
|
boolean |
removable(Var v)
Checks if the specified variable is replaceable by a context value.
|
boolean |
sameAs(Expr cmp)
Compares the current and specified expression for equality.
|
String |
toString() |
Value |
value(QueryContext qc)
Evaluates the expression and returns the resulting value.
|
atomItem, atomValue, checkAtomic, checkNoEmpty, checkNoEmpty, checkNoneUp, checkNoUp, checkType, compBln, copyType, ctxValue, ebv, optPre, optPre, preEval, seqType, seqType, size, test, toArray, toArray, toAtomItem, toB64, toB64, toBin, toBin, toBoolean, toBoolean, toBytes, toBytes, toDouble, toDouble, toElem, toEmptyNode, toEmptyToken, toFloat, toFunc, toItem, toLong, toLong, toMap, toMap, toNode, toNode, toNumber, toQNm, toQNm, toToken, toToken
atomIter, hasFreeVars, indexAccessible, inlineAll, isEmpty, isFunction, isVacuous, isValue, iterable, markTailCalls, optimizeEbv, typeCheck, uses, visitAll
public final Var var
public Expr compile(QueryContext qc, VarScope scp)
Expr
QueryContext.compile()
.public VarRef optimize(QueryContext qc, VarScope scp)
Expr
public Item item(QueryContext qc, InputInfo ii) throws QueryException
Expr
null
reference if the expression yields an empty sequence.
If this method is not overwritten, Expr.iter(QueryContext)
must be implemented by an
expression, as it may be called by this method.item
in class ParseExpr
qc
- query contextii
- input infonull
QueryException
- query exceptionpublic Iter iter(QueryContext qc)
Expr
Expr.item(QueryContext, InputInfo)
must be implemented
by an expression, as it may be called by this method.public Value value(QueryContext qc)
Expr
public boolean removable(Var v)
Expr
Preds.removable(org.basex.query.var.Var)
if one of the variables is used within a predicate.Path.removable(org.basex.query.var.Var)
if the variable occurs within the path.GFLWOR.compile(QueryContext, VarScope)
to rewrite where
clauses into predicates.public VarUsage count(Var v)
Expr
SwitchCase.countCases(org.basex.query.var.Var)
or (indirectly)
GFLWOR.inlineLets(org.basex.query.QueryContext, org.basex.query.var.VarScope)
.public Expr inline(QueryContext qc, VarScope scp, Var v, Expr ex)
Expr
GFLWOR.inlineLets(org.basex.query.QueryContext, org.basex.query.var.VarScope)
and For.toPredicate(org.basex.query.QueryContext, org.basex.query.var.VarScope, org.basex.query.expr.Expr)
,
and the variable reference is replaced in inline(org.basex.query.QueryContext, org.basex.query.var.VarScope, org.basex.query.var.Var, org.basex.query.expr.Expr)
.public VarRef copy(QueryContext qc, VarScope scp, IntObjMap<Var> vs)
Expr
public boolean sameAs(Expr cmp)
Expr
public void plan(FElem plan)
ExprInfo
public String description()
ExprInfo
ExprInfo.toString()
method,
arguments are not included in the output.description
in class ExprInfo
public boolean accept(ASTVisitor visitor)
Expr
public void checkUp()
Expr
public boolean has(Expr.Flag flag)
Expr
true
if at least one test is successful.public int exprSize()
Expr
StaticFunc.inline(org.basex.query.QueryContext, org.basex.query.util.list.AnnList, org.basex.query.expr.Expr)
to check if an expression
is small enough to be inlined.Copyright © 2005–2015 BaseX Team. All rights reserved.