| java.lang.Object xtc.tree.Node xtc.tree.GNode
GNode | abstract public class GNode extends Node (Code) | | A generic node in an abstract syntax tree.
A note on memory conservation: Generic nodes created through
the
GNode.create(String) or
GNode.create(String,int) methods
can have a variable number of children. While such nodes provide
considerable flexibility in creating and managing an abstract
syntax tree, their implementation also has a relatively high memory
and thus performance overhead. Consequently, this class provides
another set of create() methods, which directly take
the new node's children as arguments and return nodes specialized
for that number of children. After creation, the number of
children cannot be changed anymore. Code using generic nodes can
test whether a node supports a variable number of children through
GNode.hasVariable() and convert fixed size nodes into variable
sized nodes through
GNode.ensureVariable(GNode) .
author: Robert Grimm version: $Revision: 1.48 $ |
Inner Class :abstract static class Fixed extends GNode | |
Inner Class :static class Fixed0 extends Fixed | |
Inner Class :static class Fixed1 extends Fixed | |
Inner Class :static class Fixed2 extends Fixed | |
Inner Class :static class Fixed3 extends Fixed | |
Inner Class :static class Fixed4 extends Fixed | |
Inner Class :static class Fixed5 extends Fixed | |
Inner Class :static class Fixed6 extends Fixed | |
Inner Class :static class Fixed7 extends Fixed | |
Inner Class :static class Fixed8 extends Fixed | |
Inner Class :static class Variable extends GNode | |
Field Summary | |
final public static int | MAX_FIXED The maximum number of children for generic nodes that are
optimized to hold a fixed number of children. | final String | name The name. |
Constructor Summary | |
| GNode(String name) Create a new generic node with the specified name. |
Method Summary | |
final public static GNode | cast(Object o) Cast the specified object to a generic node. | public static GNode | create(String name) Create a new generic node with the specified name. | public static GNode | create(String name, int capacity) Create a new generic node with the specified name. | public static GNode | create(String name, boolean variable) Create a new generic node with the specified name. | public static GNode | create(String name, Object child) Create a new generic node with the specified name and child. | public static GNode | create(String name, Object c1, Object c2) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. | public static GNode | create(String name, Object c1, Object c2, Object c3) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. | public static GNode | create(String name, Object c1, Object c2, Object c3, Object c4) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. | public static GNode | create(String name, Object c1, Object c2, Object c3, Object c4, Object c5) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. | public static GNode | create(String name, Object c1, Object c2, Object c3, Object c4, Object c5, Object c6) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. Parameters: c6 - The sixth child. | public static GNode | create(String name, Object c1, Object c2, Object c3, Object c4, Object c5, Object c6, Object c7) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. Parameters: c6 - The sixth child. Parameters: c7 - The seventh child. | public static GNode | create(String name, Object c1, Object c2, Object c3, Object c4, Object c5, Object c6, Object c7, Object c8) Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. Parameters: c6 - The sixth child. Parameters: c7 - The seventh child. Parameters: c8 - The eigth child. | public static GNode | create(GNode node) Create a new generic node that is a (shallow) copy of the
specified node.
Parameters: node - The node to copy. | public static GNode | createFromPair(String name, Pair p) Create a new generic node with the list's nodes as its children.
If possible, this method returns a fixed size node.
Parameters: name - The name. Parameters: p - The list of children. | public static GNode | createFromPair(String name, Object base, Pair rest) Create a new generic node with the specified children. | public static GNode | ensureVariable(GNode node) Ensure that the specified node supports a variable number of
children.
Parameters: node - The generic node. | public boolean | equals(Object o) Determine whether this generic node equals the specified object.
This node equals the object, if both are generic nodes with the
same names and the same number of equal children.
Parameters: o - The object to compare to. | final public String | getName() | final public boolean | hasName(String name) | final public boolean | hasTraversal() | public int | hashCode() Get this generic node's hash code. | final public boolean | isGeneric() Determine whether this node is generic. | final public static boolean | test(Object o) Test whether the specified object is a generic node, possibly
wrapped in annotations.
Parameters: o - The object. |
MAX_FIXED | final public static int MAX_FIXED(Code) | | The maximum number of children for generic nodes that are
optimized to hold a fixed number of children.
|
GNode | GNode(String name)(Code) | | Create a new generic node with the specified name.
|
cast | final public static GNode cast(Object o)(Code) | | Cast the specified object to a generic node. If the specified
object has any
Annotation annotations , they are
Node.strip stripped before returning the object as a generic
node.
See Also: GNode.test(Object) Parameters: o - The object. The object as a stripped generic node. |
create | public static GNode create(String name)(Code) | | Create a new generic node with the specified name. The new node
supports a variable number of children and has a default
capacity.
Parameters: name - The name. The corresponding generic node. |
create | public static GNode create(String name, int capacity)(Code) | | Create a new generic node with the specified name. The new node
supports a variable number of children and has the specified
capacity.
Parameters: name - The name. Parameters: capacity - The initial capacity. The corresponding generic node. throws: IllegalArgumentException - Signals that the capacity is negative. |
create | public static GNode create(String name, boolean variable)(Code) | | Create a new generic node with the specified name. Invoking this
method with a true variable flag is equivalent to invoking
GNode.create(String) . Invoking this method with a false variabel
flag results in a generic node with no children.
Parameters: name - The name. Parameters: variable - Flag for whether the new node supports a variablenumber of children. The corresponding generic node. |
create | public static GNode create(String name, Object child)(Code) | | Create a new generic node with the specified name and child. The
new node does not support a variable number of children.
Parameters: name - The name. Parameters: child - The child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2, Object c3)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2, Object c3, Object c4)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2, Object c3, Object c4, Object c5)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2, Object c3, Object c4, Object c5, Object c6)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. Parameters: c6 - The sixth child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2, Object c3, Object c4, Object c5, Object c6, Object c7)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. Parameters: c6 - The sixth child. Parameters: c7 - The seventh child. The corresponding generic node. |
create | public static GNode create(String name, Object c1, Object c2, Object c3, Object c4, Object c5, Object c6, Object c7, Object c8)(Code) | | Create a new generic node with the specified name and children.
The new node does not support a variable number of children.
Parameters: name - The name. Parameters: c1 - The first child. Parameters: c2 - The second child. Parameters: c3 - The third child. Parameters: c4 - The fourth child. Parameters: c5 - The fifth child. Parameters: c6 - The sixth child. Parameters: c7 - The seventh child. Parameters: c8 - The eigth child. The corresponding generic node. |
create | public static GNode create(GNode node)(Code) | | Create a new generic node that is a (shallow) copy of the
specified node.
Parameters: node - The node to copy. The copy. |
createFromPair | public static GNode createFromPair(String name, Pair p)(Code) | | Create a new generic node with the list's nodes as its children.
If possible, this method returns a fixed size node.
Parameters: name - The name. Parameters: p - The list of children. The corresponding generic node. |
createFromPair | public static GNode createFromPair(String name, Object base, Pair rest)(Code) | | Create a new generic node with the specified children. If
possible, this method returns a fixed size node.
Parameters: name - The name. Parameters: base - The first child. Parameters: rest - The rest of the children. The corresponding generic node. |
ensureVariable | public static GNode ensureVariable(GNode node)(Code) | | Ensure that the specified node supports a variable number of
children.
Parameters: node - The generic node. A shallow copy of the specified node if it does notsupport a variable number of children; otherwise, the specifiednode. |
equals | public boolean equals(Object o)(Code) | | Determine whether this generic node equals the specified object.
This node equals the object, if both are generic nodes with the
same names and the same number of equal children.
Parameters: o - The object to compare to. true if this generic node equals the object. |
hasTraversal | final public boolean hasTraversal()(Code) | | |
hashCode | public int hashCode()(Code) | | Get this generic node's hash code.
This node's hash code. |
isGeneric | final public boolean isGeneric()(Code) | | Determine whether this node is generic.
true . |
test | final public static boolean test(Object o)(Code) | | Test whether the specified object is a generic node, possibly
wrapped in annotations.
Parameters: o - The object. true if the object is a possibly annotatedgeneric node. |
|
|