1
2
3
4
5 package com.randomnoun.common.jexl.ast;
6
7
8
9
10 public class NodeOptional implements Node {
11 public NodeOptional() {
12 node = null;
13 }
14
15 public NodeOptional(Node n) {
16 addNode(n);
17 }
18
19 public void addNode(Node n) {
20 if ( node != null)
21 throw new Error("Attempt to set optional node twice");
22
23 node = n;
24 }
25 public void accept(com.randomnoun.common.jexl.visitor.Visitor v) {
26 v.visit(this);
27 }
28 public <R,A> R accept(com.randomnoun.common.jexl.visitor.GJVisitor<R,A> v, A argu) {
29 return v.visit(this,argu);
30 }
31 public <R> R accept(com.randomnoun.common.jexl.visitor.GJNoArguVisitor<R> v) {
32 return v.visit(this);
33 }
34 public <A> void accept(com.randomnoun.common.jexl.visitor.GJVoidVisitor<A> v, A argu) {
35 v.visit(this,argu);
36 }
37 public boolean present() { return node != null; }
38
39 public Node node;
40 }
41