com.saxonica.bytecode

## Class GeneralComparisonCompiler

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

-     public class GeneralComparisonCompiler
      extends ToBooleanCompiler

  Generate code for a GeneralComparison

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GeneralComparisonCompiler()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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.bytecode.ToBooleanCompiler

      `compileToItem, compileToIterator, compileToPush`

    - ### Methods inherited from class com.saxonica.bytecode.ExpressionCompiler

      `allocateStatic, compileItemFromInt, compileItemFromString, compileToLoop, compileToPrimitive, generateMethod, handleEmptyStringResult, 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

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

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

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