org.basex.query.expr
Class Preds

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.Preds
Direct Known Subclasses:
Filter, Step

public abstract class Preds
extends ParseExpr

Abstract predicate expression, implemented by Filter and Step.

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
 boolean last
          Compilation: first predicate uses last function.
 Pos pos
          Compilation: first predicate uses position.
 Expr[] preds
          Predicates.
 
Fields inherited from class org.basex.query.expr.ParseExpr
info, size, type
 
Constructor Summary
protected Preds(InputInfo ii, Expr[] p)
          Constructor.
 
Method Summary
 void checkUp()
          Checks if all updating expressions are correctly placed.
 Expr compile(QueryContext ctx, VarScope scp)
          Compiles and optimizes the expression, assigns data types and cardinalities.
protected
<T extends Preds>
T
copy(T p)
          Copies fields to the given object.
 VarUsage count(Var v)
          Checks how often a variable is used in this expression.
 boolean has(Expr.Flag flag)
          Indicates if an expression has the specified compiler property.
 Expr inline(QueryContext ctx, VarScope scp, Var v, Expr e)
          Inlines an expression into this one, replacing all references to the given variable.
 void plan(FElem plan)
          Creates an expression tree.
 boolean preds(Item it, QueryContext ctx)
          Checks if the predicates are successful for the specified item.
 boolean removable(Var v)
          Checks if the specified variable is replaceable by a context item.
 java.lang.String toString()
           
protected  boolean useIterator()
          Checks if this expression can be evaluated in an iterative manner.
 
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
accept, addText, compEbv, copy, copy, exprSize, hasFreeVars, indexAccessible, indexEquivalent, inlineAll, isEmpty, isFunction, isItem, isVacuous, isValue, iterable, markTailCalls, 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
 

Field Detail

preds

public Expr[] preds
Predicates.


last

public boolean last
Compilation: first predicate uses last function.


pos

public Pos pos
Compilation: first predicate uses position.

Constructor Detail

Preds

protected Preds(InputInfo ii,
                Expr[] p)
Constructor.

Parameters:
ii - input info
p - predicates
Method Detail

checkUp

public void checkUp()
             throws QueryException
Description copied from class: Expr
Checks if all updating expressions are correctly placed. This function is only called if any updating expression was found in the query.

Specified by:
checkUp in class Expr
Throws:
QueryException - query exception

compile

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

Specified by:
compile in class Expr
Parameters:
ctx - query context
scp - variable scope
Returns:
optimized expression
Throws:
QueryException - query exception

useIterator

protected boolean useIterator()
Checks if this expression can be evaluated in an iterative manner. This is possible if no predicate, or only the first, is positional, or if a single last() predicate is specified.

Returns:
result of check

preds

public boolean preds(Item it,
                     QueryContext ctx)
              throws QueryException
Checks if the predicates are successful for the specified item.

Parameters:
it - item to be checked
ctx - query context
Returns:
result of check
Throws:
QueryException - query exception

has

public boolean has(Expr.Flag flag)
Description copied from class: Expr
Indicates if an expression has the specified compiler property. This method is called by numerous Expr.compile(org.basex.query.QueryContext, org.basex.query.var.VarScope) methods to test properties of sub-expressions. It returns true if at least one test is successful.

Specified by:
has in class Expr
Parameters:
flag - flag to be found
Returns:
result of check

removable

public boolean removable(Var v)
Description copied from class: Expr
Checks if the specified variable is replaceable by a context item. The following tests might return false: This method is called by GFLWOR.compile(org.basex.query.QueryContext, org.basex.query.var.VarScope) to rewrite where clauses into predicates.

Specified by:
removable in class Expr
Parameters:
v - variable to be replaced
Returns:
result of check

count

public VarUsage count(Var v)
Description copied from class: Expr
Checks how often a variable is used in this expression.

Specified by:
count in class Expr
Parameters:
v - variable to look for
Returns:
how often the variable is used, see VarUsage

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.

Specified by:
inline in class Expr
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

plan

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

Specified by:
plan in class ExprInfo
Parameters:
plan - root element

toString

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

copy

protected <T extends Preds> T copy(T p)
Copies fields to the given object.

Type Parameters:
T - object type
Parameters:
p - copy
Returns:
the copy