org.basex.query.func
Class FuncLit

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.func.FuncLit
All Implemented Interfaces:
Scope

public final class FuncLit
extends Single
implements Scope

A named function literal.

Author:
BaseX Team 2005-12, BSD License, Leo Woerteler

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
FuncLit(QNm nm, Var[] arg, Expr fn, FuncType ft, VarScope scp, StaticContext sctx, InputInfo ii)
          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.
 void compile(QueryContext ctx)
          Compiles the expression contained in this scope.
 Expr compile(QueryContext ctx, VarScope o)
          Compiles and optimizes the expression, assigns data types and cardinalities.
 boolean compiled()
          Checks if this scope has already been compiled.
 Expr copy(QueryContext ctx, VarScope o, IntObjMap<Var> vs)
          Copies an expression.
 boolean has(Expr.Flag flag)
          Indicates if an expression has the specified compiler property.
 Item item(QueryContext ctx, InputInfo ii)
          Evaluates the expression and returns the resulting item or a null reference, if the expression yields an empty sequence.
 java.lang.String toString()
           
static FuncLit unknown(QNm nm, long ar, QueryContext ctx, InputInfo ii)
          Creates a function literal for a function that was not yet encountered while parsing.
 boolean visit(ASTVisitor visitor)
          Traverses this scope with the given ASTVisitor.
 
Methods inherited from class org.basex.query.expr.Single
checkUp, count, exprSize, inline, plan, 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, 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, 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
 

Constructor Detail

FuncLit

public FuncLit(QNm nm,
               Var[] arg,
               Expr fn,
               FuncType ft,
               VarScope scp,
               StaticContext sctx,
               InputInfo ii)
Constructor.

Parameters:
nm - function name
arg - formal parameters
fn - function body
ft - function type
scp - variable scope
sctx - static context
ii - input info
Method Detail

compile

public void compile(QueryContext ctx)
             throws QueryException
Description copied from interface: Scope
Compiles the expression contained in this scope.

Specified by:
compile in interface Scope
Parameters:
ctx - query context
Throws:
QueryException - compilation errors

compile

public Expr compile(QueryContext ctx,
                    VarScope o)
             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
o - variable scope
Returns:
optimized expression
Throws:
QueryException - query exception

item

public Item item(QueryContext ctx,
                 InputInfo ii)
          throws QueryException
Description copied from class: Expr
Evaluates the expression and returns the resulting item or a null reference, if the expression yields an empty sequence. If this method is not overwritten, Expr.iter(org.basex.query.QueryContext) must be implemented by an expression, as it may be called by this method.

Overrides:
item in class ParseExpr
Parameters:
ctx - query context
ii - input info
Returns:
iterator
Throws:
QueryException - query exception

copy

public Expr copy(QueryContext ctx,
                 VarScope o,
                 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
o - variable scope for creating new variables
vs - mapping from old variable IDs to new variable copies
Returns:
copied expression

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.

Overrides:
has in class Single
Parameters:
flag - flag to be found
Returns:
result of check

unknown

public static FuncLit unknown(QNm nm,
                              long ar,
                              QueryContext ctx,
                              InputInfo ii)
                       throws QueryException
Creates a function literal for a function that was not yet encountered while parsing.

Parameters:
nm - function name
ar - function arity
ctx - query context
ii - input info
Returns:
function literal
Throws:
QueryException - query exception

visit

public boolean visit(ASTVisitor visitor)
Description copied from interface: Scope
Traverses this scope with the given ASTVisitor.

Specified by:
visit in interface Scope
Parameters:
visitor - visitor
Returns:
continue flag

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

compiled

public boolean compiled()
Description copied from interface: Scope
Checks if this scope has already been compiled.

Specified by:
compiled in interface Scope
Returns:
result of check

toString

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