| 1 |  |   | 
    
      | 2 |  |   | 
    
      | 3 |  |   | 
    
      | 4 |  |   | 
    
      | 5 |  |   | 
    
      | 6 |  |   | 
    
      | 7 |  |   | 
    
      | 8 |  |   | 
    
      | 9 |  |   | 
    
      | 10 |  |   | 
    
      | 11 |  |   | 
    
      | 12 |  |   | 
    
      | 13 |  |   | 
    
      | 14 |  |   | 
    
      | 15 |  |   | 
    
      | 16 |  |  package org.apache.commons.jexl.parser; | 
    
      | 17 |  |   | 
    
      | 18 |  |  import java.math.BigDecimal; | 
    
      | 19 |  |  import java.math.BigInteger; | 
    
      | 20 |  |   | 
    
      | 21 |  |  import org.apache.commons.jexl.JexlContext; | 
    
      | 22 |  |   | 
    
      | 23 |  |   | 
    
      | 24 |  |   | 
    
      | 25 |  |   | 
    
      | 26 |  |   | 
    
      | 27 |  |   | 
    
      | 28 |  |   | 
    
      | 29 |  |  public class ASTUnaryMinusNode extends SimpleNode { | 
    
      | 30 |  |       | 
    
      | 31 |  |   | 
    
      | 32 |  |   | 
    
      | 33 |  |   | 
    
      | 34 |  |   | 
    
      | 35 |  |      public ASTUnaryMinusNode(int id) { | 
    
      | 36 | 0 |          super(id); | 
    
      | 37 | 0 |      } | 
    
      | 38 |  |   | 
    
      | 39 |  |       | 
    
      | 40 |  |   | 
    
      | 41 |  |   | 
    
      | 42 |  |   | 
    
      | 43 |  |   | 
    
      | 44 |  |   | 
    
      | 45 |  |      public ASTUnaryMinusNode(Parser p, int id) { | 
    
      | 46 | 14 |          super(p, id); | 
    
      | 47 | 14 |      } | 
    
      | 48 |  |   | 
    
      | 49 |  |       | 
    
      | 50 |  |      public Object jjtAccept(ParserVisitor visitor, Object data) { | 
    
      | 51 | 0 |          return visitor.visit(this, data); | 
    
      | 52 |  |      } | 
    
      | 53 |  |   | 
    
      | 54 |  |       | 
    
      | 55 |  |      public Object value(JexlContext jc) throws Exception { | 
    
      | 56 | 14 |          Object val = ((SimpleNode) jjtGetChild(0)).value(jc); | 
    
      | 57 |  |   | 
    
      | 58 | 14 |          if (val instanceof Byte) { | 
    
      | 59 | 1 |              byte valueAsByte = ((Byte) val).byteValue(); | 
    
      | 60 | 1 |              return new Byte((byte) -valueAsByte); | 
    
      | 61 | 13 |          } else if (val instanceof Short) { | 
    
      | 62 | 1 |              short valueAsShort = ((Short) val).class="keyword">shortValue(); | 
    
      | 63 | 1 |              return new Short((short) -valueAsShort); | 
    
      | 64 | 12 |          } else if (val instanceof Integer) { | 
    
      | 65 | 6 |              int valueAsInt = ((Integer) val).class="keyword">intValue(); | 
    
      | 66 | 6 |              return new Integer(-valueAsInt); | 
    
      | 67 | 6 |          } else if (val instanceof Long) { | 
    
      | 68 | 1 |              long valueAsLong = ((Long) val).class="keyword">longValue(); | 
    
      | 69 | 1 |              return new Long(-valueAsLong); | 
    
      | 70 | 5 |          } else if (val instanceof Float) { | 
    
      | 71 | 2 |              float valueAsFloat = ((Float) val).class="keyword">floatValue(); | 
    
      | 72 | 2 |              return new Float(-valueAsFloat); | 
    
      | 73 | 3 |          } else if (val instanceof Double) { | 
    
      | 74 | 1 |              double valueAsDouble = ((Double) val).class="keyword">doubleValue(); | 
    
      | 75 | 1 |              return new Double(-valueAsDouble); | 
    
      | 76 | 2 |          } else if (val instanceof BigDecimal) { | 
    
      | 77 | 1 |              BigDecimal valueAsBigD = (BigDecimal) val; | 
    
      | 78 | 1 |              return valueAsBigD.negate(); | 
    
      | 79 | 1 |          } else if (val instanceof BigInteger) { | 
    
      | 80 | 1 |              BigInteger valueAsBigI = (BigInteger) val; | 
    
      | 81 | 1 |              return valueAsBigI.negate(); | 
    
      | 82 |  |          } | 
    
      | 83 | 0 |          throw new Exception("expression not a number"); | 
    
      | 84 |  |      } | 
    
      | 85 |  |  } |