Package com.saxonica.ee.bytecode
Class ElementCreatorCompiler
- java.lang.Object
-
- com.saxonica.ee.bytecode.ExpressionCompiler
-
- com.saxonica.ee.bytecode.ToIteratorCompiler
-
- com.saxonica.ee.bytecode.ToPushCompiler
-
- com.saxonica.ee.bytecode.ElementCreatorCompiler
-
- Direct Known Subclasses:
ComputedElementCompiler
,FixedElementCompiler
public abstract class ElementCreatorCompiler extends ToPushCompiler
Generate bytecode. An instruction that creates an element node. There are two subtypes, FixedElement for use where the name is known statically, and ComputedElement where it is computed dynamically.
-
-
Constructor Summary
Constructors Constructor Description ElementCreatorCompiler()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected static void
addTypeStripper(CompilerService compiler)
Add a filter to the output pipeline that removes type annotations.void
compileToPush(CompilerService compiler, Expression expression)
Generate bytecode to evaluate the expression in push mode Precondition: none.abstract void
identifyExpression(CompilerService compiler, Expression expression, java.lang.String evalMode)
protected void
outputNamespaceNodes(CompilerService compiler, Expression expression)
Callback for subclasses to implement: generate code to output namespace nodesprotected abstract void
pushNodeName(CompilerService compiler, Expression expression)
Callback from the superclass ElementCreatorCompiler to get the name of the element.-
Methods inherited from class com.saxonica.ee.bytecode.ToPushCompiler
compilePushToSequenceCollector, compileToItem, compileToIterator
-
Methods inherited from class com.saxonica.ee.bytecode.ToIteratorCompiler
compileToBoolean
-
Methods inherited from class com.saxonica.ee.bytecode.ExpressionCompiler
allocateStatic, compileItemFromInt, compileToPrimitive, generateMethod, handleEmptyStringResult, printStackTop, verify, visitAnnotation, visitLineNumber
-
-
-
-
Method Detail
-
compileToPush
public void compileToPush(CompilerService compiler, Expression expression) throws CannotCompileException
Description copied from class:ExpressionCompiler
Generate bytecode to evaluate the expression in push mode Precondition: none. Postcondition: at execution time, the stack is unchanged, and the value of the expression has been written to the current receiver- Overrides:
compileToPush
in classToIteratorCompiler
- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiled- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
outputNamespaceNodes
protected void outputNamespaceNodes(CompilerService compiler, Expression expression)
Callback for subclasses to implement: generate code to output namespace nodes- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiled
-
pushNodeName
protected abstract void pushNodeName(CompilerService compiler, Expression expression) throws CannotCompileException
Callback from the superclass ElementCreatorCompiler to get the name of the element. Leaves the name code for the element name on the stack for the element name- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiled- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
addTypeStripper
protected static void addTypeStripper(CompilerService compiler)
Add a filter to the output pipeline that removes type annotations. This method adds a new entry to the receiver stack, whether it creates a new filter or not.- Parameters:
compiler
- the compiler service
-
identifyExpression
public abstract void identifyExpression(CompilerService compiler, Expression expression, java.lang.String evalMode)
-
-