OPbinary (JEL API)
Date: 2016-05-09

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 and Description
    --- | ---
    `int` | `code` code of this operation
    `protected static byte[][]` | `promotions` binary promotions of base types

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

      `chi, resID, resType, specialTypes, unwrapType`

  - ### Constructor Summary

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `compile(ClassFile cf)` Called to generate the code implementing this OP.
    `java.lang.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 Detail

    - #### code

          public int code

      code of this operation

    - #### promotions

          protected static final byte[][] promotions

      binary promotions of base types

  - ### Constructor Detail

    - #### OPbinary

          public OPbinary(java.util.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 Detail

    - #### 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 java.lang.Object eval()
                                throws java.lang.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:
        `java.lang.Exception`

Copyright © 1998-2016 Konstantin L. Metlov All Rights Reserved.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the JEL manual.