Package gnu.jel

# Class OPbinary

java.lang.Object
gnu.jel.OP
gnu.jel.OPbinary

public class OPbinary extends OP
A tree node, representing binary operation.

## Field Summary

Fields
Modifier and Type
Field
Description
`int`
`code`
code of this operation
`protected static final byte[][]`
`promotions`
binary promotions of base types

### Fields inherited from class gnu.jel.OP

`chi, resID, resType, specialTypes, unwrapType`

## Constructor Summary

Constructors
Constructor
Description
`OPbinary(Stack<OP> paramOPs, int opcode)`
Constructs a new binary operation.

## Method Summary

Modifier and Type
Method
Description
`void`
`compile(ClassFile cf)`
Called to generate the code implementing this OP.
`Object`
`eval()`
Called to evaluate this node and all its sub-nodes.

### Methods inherited from class gnu.jel.OP

`isWidening, isWidening, narrow, typeID, typeIDObject, widen`

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

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

## Field Details

### code

public int code
code of this operation

### promotions

protected static final byte[][] promotions
binary promotions of base types

## Constructor Details

### OPbinary

public OPbinary(Stack<OP> paramOPs, int opcode) throws CompilationException
Constructs a new binary operation.

Codes are following:

     0   --  addition
     1   --  substraction
     2   --  multiplication
     3   --  division
     4   --  remainder
     5   --  bitwise AND
     6   --  bitwise OR
     7   --  bitwise and logical XOR
     8   --  comparizon for equality
     9   --  comparizon for non-equality
     10  --  comparizon for "less" <
     11  --  comparizon for "greater or equal" >=
     12  --  comparizon for "greater" >
     13  --  comparizon for "less or equal" <=
     14  --  bitwise left shift <<
     15  --  bitwise right signed shift >>
     16  --  bitwise right unsigned shift >>>
     17  --  logical conjunction operator (AND)
     18  --  logical disjunction operator (OR)
     19  --  array element access operation
     20  --  reserved (used internally for string concatenation)

Parameters:
  `paramOPs` - stack holding the operands
  `opcode` - is the operation code
Throws:
  `CompilationException`

## Method Details

### compile

public void compile(ClassFile cf)
Description copied from class: `OP`
Called to generate the code implementing this OP.

Specified by:
  `compile` in class `OP`
Parameters:
  `cf` - class file with a new open method to write the code into.

### eval

public Object eval() throws Exception
Description copied from class: `OP`
Called to evaluate this node and all its sub-nodes.

Upon success this node is to be replaced by the constant node holding the returned object.

Specified by:
  `eval` in class `OP`
Returns:
  an object to which this node evaluates
Throws:
  `Exception`