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

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

    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

    - #### unary_prmtns

          protected static final byte[] unary_prmtns

      unary promotions of base types

  - ### Constructor Detail

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