Package org.basex.query.expr
Class CmpG
-
- Direct Known Subclasses:
CmpHashG
,CmpSimpleG
public class CmpG extends Cmp
General comparison.- Author:
- BaseX Team 2005-22, BSD License, Christian Gruen
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CmpG.OpG
Comparators.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static boolean
compatible(SeqType st1, SeqType st2, boolean eqne)
Checks if an expression with the specified types can be rewritten to a general comparison.CmpG
copy(CompileContext cc, IntObjMap<Var> vm)
Copies an expression.String
description()
Returns a string description of the expression.boolean
equals(Object obj)
This function is e.g.boolean
indexAccessible(IndexInfo ii)
Checks if an expression can be rewritten to an index access.CmpG
invert()
If possible, returns an expression with inverted operands.Bln
item(QueryContext qc, InputInfo ii)
Evaluates the expression and returns the resulting item, orEmpty.VALUE
if the expression yields an empty sequence.Expr
mergeEbv(Expr expr, boolean or, CompileContext cc)
Tries to merge two expressions that are part of an EBV test.CmpG.OpG
opG()
Returns the general comparator of the expression.Expr
optimize(CompileContext cc)
Optimizes an already compiled expression without recompiling its sub-expressions.CmpV.OpV
opV()
Returns the value comparator of the expression.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.-
Methods inherited from class org.basex.query.expr.Arr
accept, allAreValues, args, checkUp, compile, copyAll, count, exprSize, flatten, has, inline, inlineable, 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, 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, isSimple, markTailCalls, optimizePos, simplify, typeCheck, uses, vacuous, visitAll
-
Methods inherited from class org.basex.query.expr.ExprInfo
toErrorString, toString
-
-
-
-
Method Detail
-
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
-
item
public Bln item(QueryContext qc, InputInfo ii) throws QueryException
Description copied from class:Expr
Evaluates the expression and returns the resulting item, orEmpty.VALUE
if the expression yields an empty sequence. If this method is not implemented,Expr.value(QueryContext)
must be implemented instead.- Overrides:
item
in classParseExpr
- Parameters:
qc
- query contextii
- input info (only required bySeq
instances, which have no input info)- Returns:
- item or
Empty.VALUE
- Throws:
QueryException
- query exception
-
compatible
public static boolean compatible(SeqType st1, SeqType st2, boolean eqne)
Checks if an expression with the specified types can be rewritten to a general comparison.- Parameters:
st1
- first sequence typest2
- second sequence typeeqne
- eq/ne comparison- Returns:
- result of check
-
invert
public final CmpG invert()
Description copied from class:Cmp
If possible, returns an expression with inverted operands.
-
opV
public final CmpV.OpV opV()
Description copied from class:Cmp
Returns the value comparator of the expression.
-
opG
public final CmpG.OpG opG()
Description copied from class:Cmp
Returns the general comparator of the expression.
-
mergeEbv
public Expr mergeEbv(Expr expr, boolean or, CompileContext cc) throws QueryException
Description copied from class:Expr
Tries to merge two expressions that are part of an EBV test. Called byAnd
,Or
),Step
andFilter
. Overwritten byCmpG
,CmpIR
,CmpR
,CmpSR
,IntPos
,SimplePos
and others.- Overrides:
mergeEbv
in classExpr
- Parameters:
expr
- second expressionor
- union or intersectioncc
- compilation context- Returns:
- optimized expression or
null
- Throws:
QueryException
- query exception
-
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
-
indexAccessible
public final boolean indexAccessible(IndexInfo ii) throws QueryException
Description copied from class:Expr
Checks if an expression can be rewritten to an index access. If so, the index expression will be bound toIndexInfo.expr
. This method will be called by thePath
expression.- Overrides:
indexAccessible
in classExpr
- Parameters:
ii
- index info- Returns:
- true if an index can be used
- Throws:
QueryException
- query exception
-
copy
public CmpG 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: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.optimize(CompileContext)
orCmpV.optimize(CompileContext)
, in order to pre-evaluate equality tests.optimize(CompileContext)
, in order to compare the start and end value.PathCache
, in order to find identical root values at runtime.
-
description
public String description()
Description copied from class:ExprInfo
Returns a string description of the expression. This method is only called by error messages. Contrary to theExprInfo.toString()
method, arguments are not included in the output.- Overrides:
description
in classExprInfo
- Returns:
- result of check
-
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.
-
-