1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jexl.parser;
18
19 import org.apache.commons.jexl.JexlContext;
20 import org.apache.commons.jexl.util.Coercion;
21
22 /***
23 * Bitwise Complement. Syntax: ~a Result is a Long
24 *
25 * @author Dion Gillard
26 * @since 1.1
27 */
28 public class ASTBitwiseComplNode extends SimpleNode {
29 /***
30 * Create the node given an id.
31 *
32 * @param id node id.
33 */
34 public ASTBitwiseComplNode(int id) {
35 super(id);
36 }
37
38 /***
39 * Create a node with the given parser and id.
40 *
41 * @param p a parser.
42 * @param id node id.
43 */
44 public ASTBitwiseComplNode(Parser p, int id) {
45 super(p, id);
46 }
47
48 /*** {@inheritDoc} */
49 public Object jjtAccept(ParserVisitor visitor, Object data) {
50 return visitor.visit(this, data);
51 }
52
53 /*** {@inheritDoc} */
54 public Object value(JexlContext context) throws Exception {
55 Object left = ((SimpleNode) jjtGetChild(0)).value(context);
56
57 Long l = left == null ? new Long(0) : Coercion.coerceLong(left);
58 return new Long(~l.longValue());
59 }
60
61 }