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 final 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(Stack<OP> paramOPs, int code)`
Constructs a new unary operation.
`OPunary(Stack<OP> paramOPs, int targetID, 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.
`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(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(Stack<OP> paramOPs, int targetID, 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 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`