com.saxonica.bytecode
Class ElementCreatorCompiler

java.lang.Object
  extended by com.saxonica.bytecode.ExpressionCompiler
      extended by com.saxonica.bytecode.ToIteratorCompiler
          extended by com.saxonica.bytecode.ToPushCompiler
              extended by com.saxonica.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 Element where it is computed dynamically.


Constructor Summary
ElementCreatorCompiler()
           
 
Method Summary
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, String evalMode)
           
protected  void outputNamespaceNodes(CompilerService compiler, Expression expression)
          Callback for subclasses to implement: generate code to output namespace nodes
protected abstract  void pushNodeName(CompilerService compiler, Expression expression)
          Callback from the superclass ElementCreatorCompiler to get the nameCode.
 
Methods inherited from class com.saxonica.bytecode.ToPushCompiler
compileToItem, compileToIterator
 
Methods inherited from class com.saxonica.bytecode.ToIteratorCompiler
compileToBoolean
 
Methods inherited from class com.saxonica.bytecode.ExpressionCompiler
allocateStatic, compileItemFromInt, compileItemFromString, compileToLoop, compileToPrimitive, generateMethod, getConfiguration, handleEmptyStringResult, setConfiguration, throwXPathException, throwXPathException, unboxItem, verify, visitAnnotation, visitLineNumber
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ElementCreatorCompiler

public ElementCreatorCompiler()
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 class ToIteratorCompiler
Parameters:
compiler - the compiler service
expression - the expression to be compiled
Throws:
CannotCompileException

outputNamespaceNodes

protected void outputNamespaceNodes(CompilerService compiler,
                                    Expression expression)
Callback for subclasses to implement: generate code to output namespace nodes

Parameters:
compiler -
expression -

pushNodeName

protected abstract void pushNodeName(CompilerService compiler,
                                     Expression expression)
                              throws CannotCompileException
Callback from the superclass ElementCreatorCompiler to get the nameCode. Leaves the name code for the element name on the stack for the element name

Parameters:
compiler -
expression -
Throws:
CannotCompileException

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,
                                        String evalMode)


Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.