Class ChooseCompiler


  • public class ChooseCompiler
    extends ToIteratorCompiler
    Generate code for a conditional expression (if-then-else, xsl:if, xsl:choose, typeswitch...)
    • Constructor Detail

      • ChooseCompiler

        public ChooseCompiler()
    • Method Detail

      • compileToIterator

        public void compileToIterator​(CompilerService compiler,
                                      Expression expression)
                               throws CannotCompileException
        Generate bytecode to evaluate the expression as a SequenceIterator Precondition: none. Postcondition: the stack contains a SequenceIterator representing the result of the expression
        Specified by:
        compileToIterator in class ExpressionCompiler
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode
      • 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 ToIteratorCompiler
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode
      • compileToBoolean

        public void compileToBoolean​(CompilerService compiler,
                                     Expression expression)
                              throws CannotCompileException
        Description copied from class: ExpressionCompiler
        Generate bytecode to evaluate the expression as a boolean Precondition: none. Postcondition: at execution time, the stack contains an integer (0=false, 1=true) representing the result of the expression
        Overrides:
        compileToBoolean in class ToIteratorCompiler
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode
      • compileToPrimitive

        public void compileToPrimitive​(CompilerService compiler,
                                       Expression expression,
                                       java.lang.Class<?> requiredClass,
                                       OnEmpty onEmpty)
                                throws CannotCompileException
        Description copied from class: ExpressionCompiler
        Generate bytecode to evaluate the expression leaving a plain Java value on the stack. This method must only be called if the static type of the expressionis such that the value is known to be representable by a value of the specified class; the cardinality must be either exactly-one or zero-or-one.
        Overrides:
        compileToPrimitive in class ExpressionCompiler
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        requiredClass - the class of the Java value that is to be left on the stack if the generated code exits normally. This must be one of Integer.TYPE, Double.TYPE, Float.TYPE, BigDecimal.class, String.class, UnicodeString.class.
        onEmpty - defines the action to be taken if the expression evaluates to the empty sequence. May be null if the expression is known statically not to evaluate to an empty sequence. If the return class is a primitive type (double, float, etc) this must be an instance of OnEmpty.UnwindAndJump
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode
      • 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