Package org.basex.query.expr.path
Class Step
- java.lang.Object
-
- org.basex.query.expr.ExprInfo
-
- org.basex.query.expr.Expr
-
- org.basex.query.expr.ParseExpr
-
- org.basex.query.expr.Arr
-
- org.basex.query.expr.Preds
-
- org.basex.query.expr.path.Step
-
- Direct Known Subclasses:
CachedStep
,IterPosStep
,IterStep
public abstract class Step extends Preds
Abstract axis step expression.- Author:
- BaseX Team 2005-22, BSD License, Christian Gruen
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract 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.abstract Step
copy(CompileContext cc, IntObjMap<Var> vm)
Copies an expression.boolean
equals(Object obj)
This function is e.g.int
exprSize()
Counts the number of expressions in this expression's subtree.static Expr
get(CompileContext cc, Expr root, InputInfo ii, Expr... preds)
Returns a new optimized self::node() step.static Expr
get(CompileContext cc, Expr root, InputInfo ii, Axis axis, Test test, Expr... preds)
Returns a new optimized step.static Expr
get(CompileContext cc, Expr root, InputInfo ii, Test test, Expr... preds)
Returns a new optimized self step.static Step
get(InputInfo ii, Axis axis, Test test, Expr... preds)
Returns a new step.Expr
inline(InlineContext ic)
Inlines an expression into this one, replacing all variable or context references.Expr
optimize(CompileContext cc)
Optimizes an already compiled expression without recompiling its sub-expressions.static SeqType
seqType(Axis axis, Test test, Expr... preds)
Determines the sequence type of the step.void
toString(QueryString qs)
Creates a query string.void
toXml(QueryPlan plan)
Creates a query plan.protected Expr
type(Expr expr)
Assigns the expression type.Value
value(QueryContext qc)
Evaluates the expression and returns the resulting value.-
Methods inherited from class org.basex.query.expr.Preds
compile, flattenEbv, inlineable, match, mayBePositional, numeric, simplify
-
Methods inherited from class org.basex.query.expr.Arr
allAreValues, args, checkUp, copyAll, count, flatten, has, mayBePositional, removeEmpty, simplifyAll
-
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
-
Methods inherited from class org.basex.query.expr.Expr
arg, atomItem, atomIter, ddo, funcType, hasFreeVars, indexAccessible, isSimple, markTailCalls, mergeEbv, optimizePos, simplify, simplifyFor, typeCheck, uses, vacuous, visitAll
-
Methods inherited from class org.basex.query.expr.ExprInfo
description, toErrorString, toString
-
-
-
-
Method Detail
-
get
public static Expr get(CompileContext cc, Expr root, InputInfo ii, Expr... preds) throws QueryException
Returns a new optimized self::node() step.- Parameters:
cc
- compilation contextroot
- root context expression; ifnull
, the current context will be usedii
- input infopreds
- predicates- Returns:
- step
- Throws:
QueryException
- query exception
-
get
public static Expr get(CompileContext cc, Expr root, InputInfo ii, Test test, Expr... preds) throws QueryException
Returns a new optimized self step.- Parameters:
cc
- compilation contextroot
- root context expression; ifnull
, the current context will be usedii
- input infotest
- testpreds
- predicates- Returns:
- step
- Throws:
QueryException
- query exception
-
get
public static Expr get(CompileContext cc, Expr root, InputInfo ii, Axis axis, Test test, Expr... preds) throws QueryException
Returns a new optimized step.- Parameters:
cc
- compilation contextroot
- root context expression; ifnull
, the current context will be usedii
- input infoaxis
- axistest
- node testpreds
- predicates- Returns:
- step
- Throws:
QueryException
- query exception
-
get
public static Step get(InputInfo ii, Axis axis, Test test, Expr... preds)
Returns a new step.- Parameters:
ii
- input infoaxis
- axistest
- node testpreds
- predicates- Returns:
- step
-
optimize
public final Expr optimize(CompileContext cc) throws QueryException
Description copied from class:Expr
Optimizes an already compiled expression without recompiling its sub-expressions.- Overrides:
optimize
in classExpr
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
type
protected final Expr type(Expr expr)
Description copied from class:Preds
Assigns the expression type.
-
seqType
public static SeqType seqType(Axis axis, Test test, Expr... preds)
Determines the sequence type of the step.- Parameters:
axis
- axistest
- testpreds
- predicates- Returns:
- sequence type
-
inline
public final 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:- Overrides:
inline
in classArr
- Parameters:
ic
- inlining context- Returns:
- resulting expression if something has changed,
null
otherwise - Throws:
QueryException
- query exception
-
value
public final Value value(QueryContext qc) throws QueryException
Description copied from class:Expr
Evaluates the expression and returns the resulting value. If this method is not implemented,Expr.item(QueryContext, InputInfo)
must be implemented instead.- Overrides:
value
in classParseExpr
- Parameters:
qc
- query context- Returns:
- value
- Throws:
QueryException
- query exception
-
copy
public abstract Step copy(CompileContext cc, IntObjMap<Var> vm)
Description copied from class:Expr
Copies an expression. Used for inlining functions, or for copying static queries. It is utilized byVarRef.inline(org.basex.query.InlineContext)
,FuncItem.inline(org.basex.query.expr.Expr[], org.basex.query.CompileContext)
,Closure.inline(org.basex.query.InlineContext)
andStaticFunc.inline(org.basex.query.expr.Expr[], org.basex.query.CompileContext)
.- Specified by:
copy
in classExpr
- Parameters:
cc
- compilation contextvm
- mapping from old variable IDs to new variable copies. Required byClosure.copy(org.basex.query.CompileContext, org.basex.util.hash.IntObjMap<org.basex.query.var.Var>)
andVarRef.copy(org.basex.query.CompileContext, org.basex.util.hash.IntObjMap<org.basex.query.var.Var>)
- Returns:
- copied expression
-
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.
-
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)
Description copied from class:Arr
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.
-
toXml
public final void toXml(QueryPlan plan)
Description copied from class:ExprInfo
Creates a query plan.
-
toString
public void toString(QueryString qs)
Description copied from class:ExprInfo
Creates a query string.
-
-