OPunary (JEL API)
Description: declaration: package: gnu.jel, class: OPunary

Package gnu.jel

# Class OPunary

java.lang.Object
gnu.jel.OP
gnu.jel.OPunary

    public class OPunary
    extends OP

A tree node, representing unary operation.

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `int` | `code` | code of this operation
  `protected static byte[]` | `unary_prmtns` | unary promotions of base types

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

  `chi, resID, resType, specialTypes, unwrapType`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `OPunary​(java.util.Stack<OP> paramOPs, int code)` | Constructs a new unary operation.
  `OPunary​(java.util.Stack<OP> paramOPs, int targetID, java.lang.Class<?> targetClass, boolean allownarrowing)` | Creates conversion operation to the given class.

- ## Method Summary

  Modifier and Type | Method | 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 Details

  - ### code

    public int code
    code of this operation

  - ### unary_prmtns

    protected static final byte[] unary_prmtns
    unary promotions of base types

- ## Constructor Details

  - ### OPunary

    public OPunary​(java.util.Stack<OP> paramOPs, int code) throws CompilationException
    Constructs a new unary operation.

    Codes are following:

         0  -- negation (applicable to anything except boolean)
         1  -- bitwise not (applicable to all integral types)
         2  -- logical not (applicable to booleans only)
         3  -- return the type in stack

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

  - ### OPunary

    public OPunary​(java.util.Stack<OP> paramOPs, int targetID, java.lang.Class<?> targetClass, boolean allownarrowing) throws CompilationException
    Creates conversion operation to the given class.
    Parameters:
      `paramOPs` - stack holding the operands
      `targetID` - ID of primitive type to convert to.
      `targetClass` - the class to convert to, in case cldID=8
      `allownarrowing` - if narrowing conversions are allowed.
    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 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`