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 nodes
    `protected 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`

    - ### 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` - 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 service
        `expression` - 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 service
        `expression` - 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)