gnu.xquery.util

Class OrderedMap

Implemented Interfaces:
CanInline, Inlineable, Named

public class OrderedMap
extends MethodProc
implements CanInline, Inlineable

A procedure used to represent a FLWOR expression with an 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 body
 
is 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
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
apply(CallContext ctx)
Call this Procedure using the explicit-CallContext-convention.
void
compile(ApplyExp exp, Compilation comp, Target target)
Type
getReturnType(Expression[] args)
Expression
inline(ApplyExp exp, ExpWalker walker)
Inline an application of this Procedure and return result.
static Object[]
makeTuple$V(Object[] values)

Methods inherited from class gnu.mapping.MethodProc

applyN, getParameterType, isApplicable, matchFailAsException, mostSpecific, mostSpecific, numParameters, resolveParameterTypes

Methods inherited from class gnu.mapping.ProcedureN

apply0, apply1, apply2, apply3, apply4, applyN

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

Field Details

orderedMap

public static final OrderedMap orderedMap

Method Details

apply

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.
Overrides:
apply in interface Procedure

compile

public void compile(ApplyExp exp,
                    Compilation comp,
                    Target target)
Specified by:
compile in interface Inlineable

getReturnType

public Type getReturnType(Expression[] args)
Specified by:
getReturnType in interface Inlineable

inline

public Expression inline(ApplyExp exp,
                         ExpWalker walker)
Inline an application of this Procedure and return result. Can return original expression.
Specified by:
inline in interface CanInline

makeTuple$V

public static Object[] makeTuple$V(Object[] values)