Package com.saxonica.ee.bytecode

## Class FixedAttributeCompiler

- java.lang.Object
- - com.saxonica.ee.bytecode.ExpressionCompiler
  - - com.saxonica.ee.bytecode.ToIteratorCompiler
    - - com.saxonica.ee.bytecode.ToPushCompiler
      - - com.saxonica.ee.bytecode.FixedAttributeCompiler

-     public class FixedAttributeCompiler
      extends ToPushCompiler

  Generate bytecode for a fixed attribute constructor

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FixedAttributeCompiler()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `compileToItem​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the expression as an Item Precondition: none.
    `void` | `compileToPush​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the expression in push mode Precondition: none.
    `protected static void` | `generateAttributeValidationPushCode​(CompilerService compiler, ValidatingInstruction instr, NodeName nodeName, int nodeNameVar)` | Generate code to validate the contents of the attribute against schema definitions.

    - ### Methods inherited from class com.saxonica.ee.bytecode.ToPushCompiler

      `compilePushToSequenceCollector, 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

    - #### FixedAttributeCompiler

          public FixedAttributeCompiler()

  - ### 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

    - #### generateAttributeValidationPushCode

          protected static void generateAttributeValidationPushCode​(CompilerService compiler,
                                                                    ValidatingInstruction instr,
                                                                    NodeName nodeName,
                                                                    int nodeNameVar)

      Generate code to validate the contents of the attribute against schema definitions. Both on entry and exit, the bytecode stack holds: SequenceReceiver(out), NodeName(nodeName) int(annotation) CharSequence(value) As well as validating the value, the method may modify the type annotation that is held on the stack.
      Parameters:
        `compiler` - the compiler service
        `instr` - the instruction (fixed or computed attribute)
        `nodeName` - the (fixed) nodeName of the attribute, or null if the name is computed
        `nodeNameVar` - the slot number of the variable holding the computed node name, or -1 if the name is fixed

    - #### compileToItem

          public void compileToItem​(CompilerService compiler,
                                    Expression expression)
                             throws CannotCompileException

      Description copied from class: `ExpressionCompiler`
      Generate bytecode to evaluate the expression as an Item Precondition: none. Postcondition: at execution time, the stack contains either an item (the result of the expression), or null (representing an empty sequence).
      Overrides:
        `compileToItem` in class `ToPushCompiler`
      Parameters:
        `compiler` - the compiler service
        `expression` - the expression to be compiled
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode