Package org.basex.query.expr
Class SwitchGroup
- 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.SwitchGroup
-
public final class SwitchGroup extends Arr
Group of switch cases (case ... case ... return ...).- Author:
- BaseX Team 2005-22, BSD License, Christian Gruen
-
-
Constructor Summary
Constructors Constructor Description SwitchGroup(InputInfo info, Expr... exprs)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkUp()
Checks if the updating semantics are satisfied.Expr
compile(CompileContext cc)
Compiles and optimizes the expression, assigns types and cardinalities.Expr
copy(CompileContext cc, IntObjMap<Var> vm)
Copies an expression.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.Expr
inline(InlineContext ic)
Inlines an expression into this one, replacing all variable or context references.void
markTailCalls(CompileContext cc)
Finds and marks tail calls, enabling TCO.SwitchGroup
optimize(CompileContext cc)
Optimizes an already compiled expression without recompiling its sub-expressions.Expr
simplifyFor(CompileContext.Simplify mode, CompileContext cc)
Simplifies the expression.void
toString(QueryString qs)
Creates a query string.Expr
typeCheck(TypeCheck tc, CompileContext cc)
Tries to push the given type check inside this expression.-
Methods inherited from class org.basex.query.expr.Arr
accept, allAreValues, args, copyAll, flatten, has, inlineable, mayBePositional, removeEmpty, simplifyAll, toXml
-
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, ddo, funcType, hasFreeVars, indexAccessible, isSimple, mergeEbv, optimizePos, simplify, uses, vacuous, visitAll
-
Methods inherited from class org.basex.query.expr.ExprInfo
description, toErrorString, toString
-
-
-
-
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.- Overrides:
checkUp
in classArr
- 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.- Overrides:
compile
in classArr
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
optimize
public SwitchGroup 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
-
copy
public Expr 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
-
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:- Overrides:
inline
in classArr
- Parameters:
ic
- inlining context- Returns:
- resulting expression if something has changed,
null
otherwise - Throws:
QueryException
- query exception
-
typeCheck
public Expr typeCheck(TypeCheck tc, CompileContext cc) throws QueryException
Description copied from class:Expr
Tries to push the given type check inside this expression.- Overrides:
typeCheck
in classExpr
- Parameters:
tc
- type check to push into the expressioncc
- compilation context- Returns:
- the resulting expression if successful,
null
otherwise - Throws:
QueryException
- query exception
-
count
public VarUsage count(Var var)
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)
-
-
simplifyFor
public Expr simplifyFor(CompileContext.Simplify mode, CompileContext cc) throws QueryException
Description copied from class:Expr
Simplifies the expression. Overwritten by many expressions; callsExpr.simplify(Simplify, CompileContext)
otherwise.- Overrides:
simplifyFor
in classExpr
- Parameters:
mode
- mode of simplificationcc
- compilation context- Returns:
- simplified or original expression
- Throws:
QueryException
- query exception- See Also:
CompileContext.Simplify
-
markTailCalls
public void markTailCalls(CompileContext cc)
Description copied from class:Expr
Finds and marks tail calls, enabling TCO.- Overrides:
markTailCalls
in classExpr
- Parameters:
cc
- compilation context,null
if the changes should not be reported
-
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.
-
toString
public void toString(QueryString qs)
Description copied from class:ExprInfo
Creates a query string.
-
-