Package org.basex.query.expr
Class TypeCheck
- java.lang.Object
-
- org.basex.query.expr.ExprInfo
-
- org.basex.query.expr.Expr
-
- org.basex.query.expr.ParseExpr
-
- org.basex.query.expr.Single
-
- org.basex.query.expr.TypeCheck
-
-
Constructor Summary
Constructors Constructor Description TypeCheck(StaticContext sc, InputInfo info, Expr expr, SeqType seqType, boolean promote)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Expr
check(Expr ex, CompileContext cc)
Creates an expression that checks the given expression's return type.Expr
compile(CompileContext cc)
Compiles and optimizes the expression, assigns types and cardinalities.Expr
copy(CompileContext cc, IntObjMap<Var> vm)
Copies an expression.boolean
equals(Object obj)
This function is e.g.QueryError
error()
Returns the used error code.boolean
isRedundant(Var var)
Checks if this type check is redundant if the result is bound to the given variable.Iter
iter(QueryContext qc)
Evaluates the expression and returns an iterator on the resulting items.Expr
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.void
toXml(QueryPlan plan)
Creates a query plan.Value
value(QueryContext qc)
Evaluates the expression and returns the resulting value.-
Methods inherited from class org.basex.query.expr.Single
accept, args, checkUp, count, exprSize, has, inline, inlineable
-
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, 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, typeCheck, uses, vacuous, visitAll
-
Methods inherited from class org.basex.query.expr.ExprInfo
description, toErrorString, toString
-
-
-
-
Constructor Detail
-
TypeCheck
public TypeCheck(StaticContext sc, InputInfo info, Expr expr, SeqType seqType, boolean promote)
Constructor.- Parameters:
sc
- static contextinfo
- input infoexpr
- expression to be promotedseqType
- type to promote topromote
- flag for function promotion
-
-
Method Detail
-
compile
public final Expr compile(CompileContext cc) throws QueryException
Description copied from class:Expr
Compiles and optimizes the expression, assigns types and cardinalities.- Overrides:
compile
in classSingle
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
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 classSingle
- Parameters:
cc
- compilation context- Returns:
- optimized expression
- Throws:
QueryException
- query exception
-
iter
public final Iter iter(QueryContext qc) throws QueryException
Description copied from class:Expr
Evaluates the expression and returns an iterator on the resulting items. The implementation of this method is optional.- Overrides:
iter
in classParseExpr
- Parameters:
qc
- query context- Returns:
- iterator
- 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
-
simplifyFor
public final 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
-
isRedundant
public final boolean isRedundant(Var var)
Checks if this type check is redundant if the result is bound to the given variable.- Parameters:
var
- variable- Returns:
- result of check
-
check
public final Expr check(Expr ex, CompileContext cc) throws QueryException
Creates an expression that checks the given expression's return type.- Parameters:
ex
- expression to checkcc
- compilation context- Returns:
- the resulting expression, or
null
if no type check is necessary - Throws:
QueryException
- query exception
-
error
public QueryError error()
Returns the used error code. Overwritten byTreat.error()
.- Returns:
- error code
-
copy
public final 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
-
equals
public final boolean equals(Object obj)
Description copied from class:Single
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 final void toString(QueryString qs)
Description copied from class:ExprInfo
Creates a query string.
-
-