org.basex.query.expr
Class TypeCase

java.lang.Object
  extended by org.basex.data.ExprInfo
      extended by org.basex.query.expr.Expr
          extended by org.basex.query.expr.ParseExpr
              extended by org.basex.query.expr.Single
                  extended by org.basex.query.expr.TypeCase

public final class TypeCase
extends Single

Case expression for typeswitch.

Author:
BaseX Team 2005-12, BSD License, Christian Gruen

Nested Class Summary
 
Nested classes/interfaces inherited from class org.basex.query.expr.Expr
Expr.Flag
 
Field Summary
 
Fields inherited from class org.basex.query.expr.Single
expr
 
Fields inherited from class org.basex.query.expr.ParseExpr
info, size, type
 
Constructor Summary
TypeCase(InputInfo ii, Var v, SeqType[] ts, Expr r)
          Constructor.
 
Method Summary
 boolean accept(ASTVisitor visitor)
          Traverses this expression, notifying the visitor of declared and used variables, and checking the tree for other recursive properties.
 TypeCase compile(QueryContext ctx, VarScope scp)
          Compiles and optimizes the expression, assigns data types and cardinalities.
 TypeCase copy(QueryContext ctx, VarScope scp, IntObjMap<Var> vs)
          Copies an expression.
 int exprSize()
          Counts the number of expressions in this expression's sub-tree.
 Expr inline(QueryContext ctx, VarScope scp, Var v, Expr e)
          Inlines an expression into this one, replacing all references to the given variable.
 TypeCase markTailCalls()
          Finds and marks tail calls, enabling TCO.
 boolean matches(Value val)
          Checks if the given value matches this case.
 void plan(FElem plan)
          Creates an expression tree.
 java.lang.String toString()
           
 
Methods inherited from class org.basex.query.expr.Single
checkUp, count, has, removable
 
Methods inherited from class org.basex.query.expr.ParseExpr
checkAdmin, checkAllUp, checkBinary, checkBln, checkColl, checkCreate, checkCtx, checkDbl, checkDBNode, checkEStr, checkEStr, checkFunc, checkItem, checkItr, checkItr, checkMap, checkNode, checkNode, checkNode, checkNoEmpty, checkNoneUp, checkNoUp, checkQNm, checkStr, checkStr, checkStrBin, checkType, checkWrite, compBln, copyType, ebv, item, iter, optPre, preEval, size, test, type, value
 
Methods inherited from class org.basex.query.expr.Expr
addText, compEbv, copy, hasFreeVars, indexAccessible, indexEquivalent, inlineAll, isEmpty, isFunction, isItem, isVacuous, isValue, iterable, optimize, sameAs, uses, visitAll
 
Methods inherited from class org.basex.data.ExprInfo
addPlan, addPlan, description, info, planAttr, planElem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TypeCase

public TypeCase(InputInfo ii,
                Var v,
                SeqType[] ts,
                Expr r)
Constructor.

Parameters:
ii - input info
v - variable
ts - sequence types this case matches, the empty array means default
r - return expression
Method Detail

compile

public TypeCase compile(QueryContext ctx,
                        VarScope scp)
                 throws QueryException
Description copied from class: Expr
Compiles and optimizes the expression, assigns data types and cardinalities.

Overrides:
compile in class Single
Parameters:
ctx - query context
scp - variable scope
Returns:
optimized expression
Throws:
QueryException - query exception

inline

public Expr inline(QueryContext ctx,
                   VarScope scp,
                   Var v,
                   Expr e)
            throws QueryException
Description copied from class: Expr
Inlines an expression into this one, replacing all references to the given variable.

Overrides:
inline in class Single
Parameters:
ctx - query context for recompilation
scp - variable scope for recompilation
v - variable to replace
e - expression to inline
Returns:
resulting expression in something changed, null otherwise
Throws:
QueryException - query exception

copy

public TypeCase copy(QueryContext ctx,
                     VarScope scp,
                     IntObjMap<Var> vs)
Description copied from class: Expr
Copies an expression. Will be useful for inlining functions, or for copying static queries.

Specified by:
copy in class Expr
Parameters:
ctx - query context
scp - variable scope for creating new variables
vs - mapping from old variable IDs to new variable copies
Returns:
copied expression

matches

public boolean matches(Value val)
Checks if the given value matches this case.

Parameters:
val - value to be matched
Returns:
true if it matches, false otherwise

plan

public void plan(FElem plan)
Description copied from class: ExprInfo
Creates an expression tree.

Overrides:
plan in class Single
Parameters:
plan - root element

toString

public java.lang.String toString()
Specified by:
toString in class ExprInfo

markTailCalls

public TypeCase markTailCalls()
Description copied from class: Expr
Finds and marks tail calls, enabling TCO.

Overrides:
markTailCalls in class Expr
Returns:
the expression, with tail calls marked

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.

Overrides:
accept in class Single
Parameters:
visitor - visitor
Returns:
if the walk should be continued

exprSize

public int exprSize()
Description copied from class: Expr
Counts the number of expressions in this expression's sub-tree.

Overrides:
exprSize in class Single
Returns:
number of expressions