Package com.saxonica.ee.bytecode

## Class GeneralComparisonCompiler

- java.lang.Object
- - com.saxonica.ee.bytecode.ExpressionCompiler
  - - com.saxonica.ee.bytecode.ToBooleanCompiler
    - - com.saxonica.ee.bytecode.GeneralComparisonCompiler

-     public class GeneralComparisonCompiler
      extends ToBooleanCompiler

  Generate code for a GeneralComparison

- - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `compileToBoolean​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the expression as a boolean Precondition: none.
    `void` | `compileToBooleanManyToMany​(CompilerService compiler, GeneralComparison comparison)` |
    `static void` | `generateComparisonCode​(CompilerService compiler, ComparisonExpression comparison, LabelInfo returnTrue, LabelInfo returnFalse, LabelInfo end, int item0Var, int item1Var, AtomicType type0, AtomicType type1, boolean checkTypes)` | Generate code to compare two items, leaving a boolean result on the top of the bytecode stack

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

      `compileToItem, compileToIterator, compileToPush`

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

    - #### GeneralComparisonCompiler

          public GeneralComparisonCompiler()

  - ### Method Detail

    - #### 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
      Specified by:
        `compileToBoolean` in class `ExpressionCompiler`
      Parameters:
        `compiler` - the compiler service
        `expression` - the expression to be compiled
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode

    - #### compileToBooleanManyToMany

          public void compileToBooleanManyToMany​(CompilerService compiler,
                                                 GeneralComparison comparison)
                                          throws CannotCompileException

      Throws:
        `CannotCompileException`

    - #### generateComparisonCode

          public static void generateComparisonCode​(CompilerService compiler,
                                                    ComparisonExpression comparison,
                                                    LabelInfo returnTrue,
                                                    LabelInfo returnFalse,
                                                    LabelInfo end,
                                                    int item0Var,
                                                    int item1Var,
                                                    AtomicType type0,
                                                    AtomicType type1,
                                                    boolean checkTypes)

      Generate code to compare two items, leaving a boolean result on the top of the bytecode stack
      Parameters:
        `compiler` - the compiler service
        `comparison` - the comparison expression being compiled
        `returnTrue` - label to jump to to return true
        `returnFalse` - label to jump to to return false
        `end` - label to jump to to exit, with the result on stack
        `item0Var` - position of local variable (or if negative, argument) holding the first item
        `item1Var` - position of local variable (or if negative, argument) holding the second item
        `type0` - static type of the first item
        `type1` - static type of the second item
        `checkTypes` - if true, code needs to be generated to check the items are comparable