Provided by: ivtools-dev_1.2.11a1-2_amd64 bug


       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

       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

       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.