Package org.basex.query.expr
Class Arr
- java.lang.Object
-
- org.basex.query.expr.ExprInfo
-
- org.basex.query.expr.Expr
-
- org.basex.query.expr.ParseExpr
-
- org.basex.query.expr.Arr
-
- Direct Known Subclasses:
Arith
,CArray
,CMap
,Cmp
,CNode
,Delete
,Except
,FuncCall
,If
,Insert
,Intersect
,JavaCall
,List
,Logical
,Lookup
,Otherwise
,PartFunc
,Preds
,Range
,Rename
,Replace
,SimpleMap
,StandardFunc
,SwitchGroup
,Transform
,TransformWith
,Union
public abstract class Arr extends ParseExpr
Abstract array expression.- Author:
- BaseX Team 2005-22, BSD License, Christian Gruen
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
accept(ASTVisitor visitor)
Traverses this expression, notifying the visitor of declared and used variables, and checking the tree for other recursive properties.protected boolean
allAreValues(boolean limit)
Returns true if all arguments are values (possibly of small size).Expr[]
args()
Returns the arguments/operands of an expression (function, list, etc).void
checkUp()
Checks if the updating semantics are satisfied.Expr
compile(CompileContext cc)
Compiles and optimizes the expression, assigns types and cardinalities.static <T extends Expr>
T[]copyAll(CompileContext cc, IntObjMap<Var> vm, T[] arr)
Creates a deep copy of the given array.VarUsage
count(Var var)
Checks how often a variable or context reference is used in this expression.boolean
equals(Object obj)
This function is e.g.int
exprSize()
Counts the number of expressions in this expression's subtree.protected void
flatten(CompileContext cc)
Flattens nested expressions.boolean
has(Flag... flags)
Indicates if an expression has one of the specified compiler properties.Expr
inline(InlineContext ic)
Inlines an expression into this one, replacing all variable or context references.boolean
inlineable(InlineContext ic)
Checks if inlining is possible.protected static boolean
mayBePositional(Expr expr)
Checks if the specified expression may be positional.protected void
removeEmpty(CompileContext cc)
Removes empty expressions.protected boolean
simplifyAll(CompileContext.Simplify mode, CompileContext cc)
Simplifies all expressions for requests of the specified type.void
toXml(QueryPlan plan)
Creates a query plan.-
Methods inherited from class org.basex.query.expr.ParseExpr
adoptType, atomValue, checkAllUp, checkNoEmpty, checkNoEmpty, checkNoneUp, checkNoUp, checkType, checkType, checkUp, copyType, ctxValue, data, ebv, info, item, iter, refineType, seqType, size, test, toArray, toArray, toAtomItem, toB64, toB64, toBin, toBin, toBoolean, toBoolean, toBytes, toBytes, toDouble, toDouble, toElem, toFloat, toFunction, toItem, toItem, toLong, toLong, toMap, toMap, toNode, toNode, toNodeOrNull, toNumber, toNumberOrNull, toQNm, toQNm, toString, toString, toStringOrNull, toToken, toToken, toTokenOrNull, toZeroToken, value
-
Methods inherited from class org.basex.query.expr.Expr
arg, atomItem, atomIter, copy, ddo, funcType, hasFreeVars, indexAccessible, isSimple, markTailCalls, mergeEbv, optimize, optimizePos, simplify, simplifyFor, typeCheck, uses, vacuous, visitAll
-
Methods inherited from class org.basex.query.expr.ExprInfo
description, toErrorString, toString, toString
-
-
-
-
Field Detail
-
exprs
public Expr[] exprs
Expressions.
-
-
Method Detail
-
checkUp
public void checkUp() throws QueryException
Description copied from class:Expr
Checks if the updating semantics are satisfied. This function is only called if any updating expression was found in the query.- Specified by:
checkUp
in classExpr
- Throws:
QueryException
- query exception
-
compile
public Expr compile(CompileContext cc) throws QueryException
Description copied from class:Expr
Compiles and optimizes the expression, assigns types and cardinalities.- Specified by:
compile
in classExpr
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
has
public boolean has(Flag... flags)
Description copied from class:Expr
Indicates if an expression has one of the specified compiler properties. This method must only be called at compile time. It is invoked to test properties of sub-expressions. It returnstrue
if at least flag matches an expression.
-
inlineable
public boolean inlineable(InlineContext ic)
Description copied from class:Expr
Checks if inlining is possible. This function is called byInlineContext.inlineable(org.basex.query.expr.Expr...)
and:CNode.inlineable(org.basex.query.InlineContext)
returns false if the new expression construct new nodes. The following tests might reject inlining if the expression is a context reference:- Specified by:
inlineable
in classExpr
- Parameters:
ic
- inlining context- Returns:
- result of check
-
count
public VarUsage count(Var var)
Description copied from class:Expr
Checks how often a variable or context reference is used in this expression. This function is called by:-
Closure.optimize(org.basex.query.CompileContext)
-
GFLWOR.inlineForLet(org.basex.query.CompileContext)
-
GFLWOR.optimizePos(org.basex.query.CompileContext)
-
GFLWOR.simplify(org.basex.query.CompileContext)
-
GFLWOR.unusedVars(org.basex.query.CompileContext)
-
SimpleMap.optimize(org.basex.query.CompileContext)
-
TypeswitchGroup.optimize(org.basex.query.CompileContext)
-
-
inline
public Expr inline(InlineContext ic) throws QueryException
Description copied from class:Expr
Inlines an expression into this one, replacing all variable or context references. This function is called byInlineContext.inline(Expr)
(see invocations of these functions for further inlinings). The variable reference is replaced in: The context is replaced in:- Specified by:
inline
in classExpr
- Parameters:
ic
- inlining context- Returns:
- resulting expression if something has changed,
null
otherwise - Throws:
QueryException
- query exception
-
copyAll
public static <T extends Expr> T[] copyAll(CompileContext cc, IntObjMap<Var> vm, T[] arr)
Creates a deep copy of the given array.- Type Parameters:
T
- element type- Parameters:
cc
- compilation contextvm
- variable mappingarr
- array to copy- Returns:
- deep copy of the array
-
allAreValues
protected final boolean allAreValues(boolean limit)
Returns true if all arguments are values (possibly of small size).- Parameters:
limit
- check if result size of any expression exceedsCompileContext.MAX_PREEVAL
- Returns:
- result of check
-
simplifyAll
protected final boolean simplifyAll(CompileContext.Simplify mode, CompileContext cc) throws QueryException
Simplifies all expressions for requests of the specified type.- Parameters:
mode
- mode of simplificationcc
- compilation context- Returns:
true
if at least one expression has changed- Throws:
QueryException
- query exception
-
flatten
protected final void flatten(CompileContext cc)
Flattens nested expressions.- Parameters:
cc
- compilation context
-
removeEmpty
protected final void removeEmpty(CompileContext cc)
Removes empty expressions.- Parameters:
cc
- compilation context
-
mayBePositional
protected static boolean mayBePositional(Expr expr)
Checks if the specified expression may be positional.- Parameters:
expr
- expression- Returns:
- result of check
-
accept
public boolean accept(ASTVisitor visitor)
Description copied from class:Expr
Traverses this expression, notifying the visitor of declared and used variables, and checking the tree for other recursive properties.
-
args
public final Expr[] args()
Description copied from class:Expr
Returns the arguments/operands of an expression (function, list, etc).
-
exprSize
public int exprSize()
Description copied from class:Expr
Counts the number of expressions in this expression's subtree. This method is e.g. called byStaticFunc.inline(org.basex.query.expr.Expr[], org.basex.query.CompileContext)
to check if an expression is small enough to be inlined.
-
equals
public boolean equals(Object obj)
This function is e.g. called by:Must be overwritten by implementing class.If.optimize(CompileContext)
,Switch.optimize(CompileContext)
,Typeswitch.optimize(CompileContext)
, in order to discard identical expressions.CmpR.mergeEbv(Expr, boolean, CompileContext)
orCmpSR.mergeEbv(Expr, boolean, CompileContext)
, in order to merge expressions with identical input.CmpG.optimize(CompileContext)
orCmpV.optimize(CompileContext)
, in order to pre-evaluate equality tests.CmpG.optimize(CompileContext)
, in order to compare the start and end value.PathCache
, in order to find identical root values at runtime.
-
-