org.codehaus.groovy.classgen.asm

## Class BinaryExpressionWriter

- java.lang.Object
- - org.codehaus.groovy.classgen.asm.BinaryExpressionWriter

Direct Known Subclasses:
  BinaryFloatExpressionHelper, BinaryIntExpressionHelper, BinaryLongExpressionHelper, BinaryObjectExpressionHelper

    public abstract class BinaryExpressionWriter
    extends java.lang.Object

Author:
  Jochen "blackdrag" Theodorou

### Field Summary

Fields
`protected static int[]` `stdCompareCodes`

### Constructor Summary

Constructors
Constructor and Description
`BinaryExpressionWriter(WriterController controller)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`boolean` `arrayGet(int operation, boolean simulate)`
`boolean` `arraySet(boolean simulate)`
`protected abstract void` `doubleTwoOperands(org.objectweb.asm.MethodVisitor mv)`
`protected abstract MethodCaller` `getArrayGetCaller()`
`protected ClassNode` `getArrayGetResultType()`
`protected abstract MethodCaller` `getArraySetCaller()`
`protected abstract int` `getBitwiseOperationBytecode(int type)`
`protected abstract int` `getCompareCode()`
`protected abstract ClassNode` `getDevisionOpResultType()`
`protected abstract ClassNode` `getNormalOpResultType()`
`protected abstract int` `getShiftOperationBytecode(int type)`
`protected abstract int` `getStandardOperationBytecode(int type)`
`protected abstract void` `removeTwoOperands(org.objectweb.asm.MethodVisitor mv)`
`protected boolean` `supportsDivision()`
`boolean` `write(int operation, boolean simulate)`
`protected boolean` `writeBitwiseOp(int type, boolean simulate)` writes some the bitwise operations.
`protected boolean` `writeDivision(boolean simulate)`
`protected abstract void` `writeMinusMinus(org.objectweb.asm.MethodVisitor mv)`
`protected abstract void` `writePlusPlus(org.objectweb.asm.MethodVisitor mv)`
`boolean` `writePostOrPrefixMethod(int operation, boolean simulate)`
`protected boolean` `writeShiftOp(int type, boolean simulate)` Write shifting operations.
`protected boolean` `writeSpaceship(int type, boolean simulate)`
`protected boolean` `writeStdCompare(int type, boolean simulate)` writes some int standard operations.
`protected boolean` `writeStdOperators(int type, boolean simulate)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### stdCompareCodes

    protected static final int[] stdCompareCodes

### Constructor Detail

#### BinaryExpressionWriter

    public BinaryExpressionWriter(WriterController controller)

### Method Detail

#### getCompareCode

    protected abstract int getCompareCode()

#### writeStdCompare

    protected boolean writeStdCompare(int type,
                                      boolean simulate)

writes some int standard operations. type is one of IADD, ISUB, IMUL, IDIV or IREM

Parameters:
  `type` - the token type
Returns:
  true if a successful std operator write

#### doubleTwoOperands

    protected abstract void doubleTwoOperands(org.objectweb.asm.MethodVisitor mv)

#### removeTwoOperands

    protected abstract void removeTwoOperands(org.objectweb.asm.MethodVisitor mv)

#### writeSpaceship

    protected boolean writeSpaceship(int type,
                                     boolean simulate)

#### getNormalOpResultType

    protected abstract ClassNode getNormalOpResultType()

#### getStandardOperationBytecode

    protected abstract int getStandardOperationBytecode(int type)

#### writeStdOperators

    protected boolean writeStdOperators(int type,
                                        boolean simulate)

#### writeDivision

    protected boolean writeDivision(boolean simulate)

#### supportsDivision

    protected boolean supportsDivision()

#### getDevisionOpResultType

    protected abstract ClassNode getDevisionOpResultType()

#### getBitwiseOperationBytecode

    protected abstract int getBitwiseOperationBytecode(int type)

#### writeBitwiseOp

    protected boolean writeBitwiseOp(int type,
                                     boolean simulate)

writes some the bitwise operations. type is one of BITWISE_OR, BITWISE_AND, BIWISE_XOR

Parameters:
  `type` - the token type
Returns:
  true if a successful bitwise operation write

#### getShiftOperationBytecode

    protected abstract int getShiftOperationBytecode(int type)

#### writeShiftOp

    protected boolean writeShiftOp(int type,
                                   boolean simulate)

Write shifting operations. Type is one of LEFT_SHIFT, RIGHT_SHIFT, or RIGHT_SHIFT_UNSIGNED

Parameters:
  `type` - the token type
Returns:
  true on a successful shift operation write

#### write

    public boolean write(int operation,
                         boolean simulate)

#### getArrayGetCaller

    protected abstract MethodCaller getArrayGetCaller()

#### getArrayGetResultType

    protected ClassNode getArrayGetResultType()

#### getArraySetCaller

    protected abstract MethodCaller getArraySetCaller()

#### arrayGet

    public boolean arrayGet(int operation,
                            boolean simulate)

#### arraySet

    public boolean arraySet(boolean simulate)

#### writePostOrPrefixMethod

    public boolean writePostOrPrefixMethod(int operation,
                                           boolean simulate)

#### writePlusPlus

    protected abstract void writePlusPlus(org.objectweb.asm.MethodVisitor mv)

#### writeMinusMinus

    protected abstract void writeMinusMinus(org.objectweb.asm.MethodVisitor mv)