UList - circular, doubly-linked list class
#include <Unidraw/ulist.h>
UList implements a circular, doubly-linked list. The sentinel and
each entry in the list are instances of the UList class, each containing a
void pointer to the data they contain as well as pointers to the next and
previous UList instance in the list. The sentinel UList instance is
considered to represent the list.
- UList(void* =
nil)
- Create a new UList instance, optionally supplying the value for the void
pointer it stores.
- virtual
~UList()
- Delete the entire list. Normally the sentinel, which represents the list,
is the entry that is deleted explicitly. Note that the data on the list,
stored as void*'s, cannot be deleted in this manner.
- void
Append(UList*)
- void
Prepend(UList*)
- When performed on the sentinel, Append appends an element to the end of
the list and Prepend prepends it to the beginning of the list. When
performed on a UList instance other than the sentinel, Append has the
effect of inserting its argument before the instance, while Prepend
has the effect of inserting it after the instance.
- void
Remove(UList*)
- Unlink the specified UList instance from the list it is in. The object on
which this operation is called is irrelevant.
- void
Delete(void*)
- Find the UList instance in this list containing the given void pointer,
remove it from the list it is in, and delete it.
- UList*
Find(void*)
- Return the UList instance in this list containing the given void
pointer.
- UList*
First()
- UList*
Last()
- UList*
End()
- UList*
Next()
- UList*
Prev()
- Return various UList instance in the list relative to this, i.e.,
as if it were the sentinel. End returns the sentinel (this) and is
useful for detecting the end of an iteration through the list; the other
operations are self-explanatory.
- boolean
IsEmpty()
- Return whether or not the list has any elements.
- void*
operator()()
- Return the void pointer that the UList stores.
- UList*
operator[](int i)
- Return the ith UList in the list, where the next element is the
first, etc.