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