Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
gnu.mapping.Procedure
gnu.mapping.ProcedureN
gnu.mapping.MethodProc
gnu.xquery.util.OrderedMap
order by
clause.
(ValuesMap
is used for FLWOR expression
that don't have an order by
clause.)
As returned by the parser:
for $x1 in exp1, $x2 in exp2 where cond order by comparator1 ... return bodyis represented as
ordered-map(tuple-sequence, body-function, comparator-function1, flags1, collation1, ...)Here tuple-sequence is an expression that returns a sequence of tuples, which are currently implemnted as Java Object[] arrays. After inlining we get:
ordered-map(tuple-sequence. OrderedTuples.make$V(body-function, new Object[]{comparator-function1, flags1, collation1, ...}))A future optimization would be to create an instance of a new sub-class of OrderedTuples. Then the body-function and comparator-functions could be compiled as methods to that class. That wins especially if it saves us having to create extra frame classes.
Field Summary | |
static OrderedMap |
Fields inherited from class gnu.mapping.MethodProc | |
NO_MATCH , NO_MATCH_AMBIGUOUS , NO_MATCH_BAD_TYPE , NO_MATCH_TOO_FEW_ARGS , NO_MATCH_TOO_MANY_ARGS , argTypes |
Fields inherited from class gnu.mapping.ProcedureN | |
noArgs |
Method Summary | |
void |
|
void |
|
Type |
|
Expression | |
static Object[] |
|
Methods inherited from class gnu.mapping.MethodProc | |
applyN , getParameterType , isApplicable , matchFailAsException , mostSpecific , mostSpecific , numParameters , resolveParameterTypes |
Methods inherited from class gnu.mapping.Procedure | |
apply , apply , apply0 , apply1 , apply2 , apply3 , apply4 , applyN , check0 , check1 , check2 , check3 , check4 , checkArgCount , checkN , getName , getProperty , getSetter , getSymbol , match0 , match1 , match2 , match3 , match4 , matchN , maxArgs , minArgs , name , numArgs , removeProperty , set0 , set1 , setN , setName , setProperty , setProperty , setSetter , setSymbol , toString |
public void apply(CallContext ctx) throws Throwable
Call this Procedure using the explicit-CallContext-convention. The input arguments are (by default) in stack.args; the result is written to ctx.consumer.
public void compile(ApplyExp exp, Compilation comp, Target target)
- Specified by:
- compile in interface Inlineable
public Type getReturnType(Expression[] args)
- Specified by:
- getReturnType in interface Inlineable
public Expression inline(ApplyExp exp, ExpWalker walker)
Inline an application of this Procedure and return result. Can return original expression.
public static Object[] makeTuple$V(Object[] values)