1
2 package org.codehaus.aspectwerkz.annotation.expression.ast;
3
4 public class SimpleNode implements Node {
5 protected Node parent;
6
7 protected Node[] children;
8
9 protected int id;
10
11 protected AnnotationParser parser;
12
13 public SimpleNode(int i) {
14 id = i;
15 }
16
17 public SimpleNode(AnnotationParser p, int i) {
18 this(i);
19 parser = p;
20 }
21
22 public void jjtOpen() {
23 }
24
25 public void jjtClose() {
26 }
27
28 public void jjtSetParent(Node n) {
29 parent = n;
30 }
31
32 public Node jjtGetParent() {
33 return parent;
34 }
35
36 public void jjtAddChild(Node n, int i) {
37 if (children == null) {
38 children = new Node[i + 1];
39 } else if (i >= children.length) {
40 Node[] c = new Node[i + 1];
41 System.arraycopy(children, 0, c, 0, children.length);
42 children = c;
43 }
44 children[i] = n;
45 }
46
47 public Node jjtGetChild(int i) {
48 return children[i];
49 }
50
51 public int jjtGetNumChildren() {
52 return (children == null) ? 0 : children.length;
53 }
54
55 /***
56 * Accept the visitor. *
57 */
58 public Object jjtAccept(AnnotationParserVisitor visitor, Object data) {
59 return visitor.visit(this, data);
60 }
61
62 /***
63 * Accept the visitor. *
64 */
65 public Object childrenAccept(AnnotationParserVisitor visitor, Object data) {
66 if (children != null) {
67 for (int i = 0; i < children.length; ++i) {
68 children[i].jjtAccept(visitor, data);
69 }
70 }
71 return data;
72 }
73
74
75
76
77
78
79 public String toString() {
80 return AnnotationParserTreeConstants.jjtNodeName[id];
81 }
82
83 public String toString(String prefix) {
84 return prefix + toString();
85 }
86
87
88
89
90 public void dump(String prefix) {
91 System.out.println(toString(prefix));
92 if (children != null) {
93 for (int i = 0; i < children.length; ++i) {
94 SimpleNode n = (SimpleNode) children[i];
95 if (n != null) {
96 n.dump(prefix + " ");
97 }
98 }
99 }
100 }
101 }