public final class CElem extends CNode
Constructor and Description |
---|
CElem(StaticContext sc,
InputInfo info,
Expr name,
Atts nspaces,
Expr... cont)
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.
|
CElem |
compile(QueryContext qc,
VarScope scp)
Compiles and optimizes the expression, assigns types and cardinalities.
|
Expr |
copy(QueryContext qc,
VarScope scp,
IntObjMap<Var> vs)
Copies an expression.
|
VarUsage |
count(Var var)
Checks how often a variable is used in 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 var,
Expr ex)
Inlines an expression into this one, replacing all references to the given variable.
|
FElem |
item(QueryContext qc,
InputInfo ii)
Evaluates the expression and returns the resulting item,
or a
null reference if the expression yields an empty sequence. |
void |
plan(FElem plan)
Creates an expression tree.
|
boolean |
removable(Var var)
Checks if the specified variable is replaceable by a context value.
|
String |
toString() |
allAreValues, copyAll, oneIsEmpty
atomItem, atomValue, checkAtomic, checkNoEmpty, checkNoEmpty, checkNoneUp, checkNoUp, checkType, compBln, copyType, ctxValue, ebv, iter, 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, value
atomIter, data, hasFreeVars, indexAccessible, inlineAll, isEmpty, isFunction, isVacuous, isValue, iterable, markTailCalls, optimize, optimizeEbv, sameAs, typeCheck, uses, visitAll
public CElem(StaticContext sc, InputInfo info, Expr name, Atts nspaces, Expr... cont)
sc
- static contextinfo
- input infoname
- namenspaces
- namespaces or null
if this is a computed constructor.cont
- element contentspublic CElem compile(QueryContext qc, VarScope scp) throws QueryException
Expr
QueryContext.compile()
.qc
- query contextscp
- variable scopeQueryException
- query exceptionpublic FElem 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 CNode
qc
- query contextii
- input infonull
QueryException
- query exceptionpublic Expr copy(QueryContext qc, VarScope scp, IntObjMap<Var> vs)
Expr
public final void checkUp() throws QueryException
Expr
checkUp
in class Arr
QueryException
- query exceptionpublic boolean removable(Var var)
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 final boolean has(Expr.Flag flag)
Expr
true
if at least one test is successful.public final boolean accept(ASTVisitor visitor)
Expr
public final VarUsage count(Var var)
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 var, Expr ex) throws QueryException
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 VarRef.inline(org.basex.query.QueryContext, org.basex.query.var.VarScope, org.basex.query.var.Var, org.basex.query.expr.Expr)
.inline
in class Arr
qc
- query context for reoptimizationscp
- variable scope for reoptimizationvar
- variable to replaceex
- expression to inlinenull
otherwiseQueryException
- query exceptionpublic final 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.public final void plan(FElem plan)
ExprInfo
public final String description()
ExprInfo
ExprInfo.toString()
method,
arguments are not included in the output.description
in class ExprInfo
Copyright © 2005–2015 BaseX Team. All rights reserved.