|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectTreeNode
ListNode
abstract class ListNode
Base class for lists of AST elements.
(See TreeNode for a discussion of AST nodes in general)
List phyla have a distinct set of operations for constructing and
accessing lists. For each phylum named X there is a phylum
called Xs (except for Classes
, which is a list
of Class_
nodes) of type List[X]
.
An empty list is created with new Xs(lineno)
. Elements
may be appended to the list using either addElement()
or appendElement()
. appendElement
returns
the list itself, so calls to it may be chained, as in
list.appendElement(Foo).appendElement(Bar).appendElement(Baz)
.
You can use java.util.Enumeration
to iterate through
lists. If you are not familiar with that interface, look it up in
the Java API documentation. Here's an example of iterating through
a list:
for (Enumeration e = list.getElements(); e.hasMoreElements(); ) { Object n = e.nextElement(); ... do something with n ... }Alternatively, it is possible to iterate using an integer index:
for (int i = 0; i < list.getLength(); i++) { ... do something with list.getNth(i) ... }Note:
nextElement()
returns the value of type
Object
and getNth()
returns the value of
type TreeNode
. You will most likely need to cast it to
the type appropriate for the list element. This is one of the
very few cases where casting is actually necessary and
appropriate.
Field Summary | |
---|---|
private java.util.Vector |
elements
|
Fields inherited from class TreeNode |
---|
lineNumber |
Constructor Summary | |
---|---|
protected |
ListNode(int lineNumber)
Builds a new list node |
protected |
ListNode(int lineNumber,
java.util.Vector elements)
|
Method Summary | |
---|---|
void |
addElement(TreeNode node)
Appends an element to the list. |
protected java.util.Vector |
copyElements()
Creates a deep copy of this list. |
void |
dump(java.io.PrintStream out,
int n)
Pretty-prints this list to this output stream. |
abstract java.lang.Class |
getElementClass()
Returns the class of list elements. |
java.util.Enumeration |
getElements()
Retreives the elements of the list as Enumeration. |
int |
getLength()
Retreives the length of the list. |
TreeNode |
getNth(int n)
Retreives nth element of the list. |
java.lang.String |
toString()
Returns a string representation of this list. |
Methods inherited from class TreeNode |
---|
copy_AbstractSymbol, copy_Boolean, copy, dump_AbstractSymbol, dump_Boolean, dump_line, getLineNumber, set |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private java.util.Vector elements
Constructor Detail |
---|
protected ListNode(int lineNumber, java.util.Vector elements)
protected ListNode(int lineNumber)
lineNumber
- line in the source file from which this node came.Method Detail |
---|
protected java.util.Vector copyElements()
public abstract java.lang.Class getElementClass()
public TreeNode getNth(int n)
n
- the index of the element
public int getLength()
public java.util.Enumeration getElements()
public void addElement(TreeNode node)
Note: each generated subclass of ListNode also has an
appendElement() method, which calls addElement() and returns the
list of the appropriate type, so that it can be used like this:
l.appendElement(i).appendElement(j).appendElement(k);
node
- a node to appendpublic void dump(java.io.PrintStream out, int n)
dump
in class TreeNode
out
- the output streamn
- the number of spaces to indent the outputpublic java.lang.String toString()
toString
in class java.lang.Object
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |