UCommon
Public Member Functions | Protected Member Functions | Protected Attributes | Friends
ucommon::LinkedList Class Reference

A double linked list object. More...

#include <linked.h>

Inheritance diagram for ucommon::LinkedList:
Inheritance graph
[legend]
Collaboration diagram for ucommon::LinkedList:
Collaboration graph
[legend]

Public Member Functions

void delist (void)
 Remove our object from the list it is currently part of.
void enlist (OrderedIndex *index)
 Attach our object to a linked list.
void enlistHead (OrderedIndex *index)
 Attach our object to the start of a linked list though an ordered index.
void enlistTail (OrderedIndex *index)
 Attach our object to the end of a linked list though an ordered index.
LinkedList * getNext (void)
 Get next node in the list when iterating.
LinkedList * getPrev (void)
 Get previous node in the list for reverse iteration.
virtual void insert (LinkedList *object)
 Insert object, method in derived object.
void insertHead (LinkedList *object)
 Insert object in front of our object.
void insertTail (LinkedList *object)
 Insert object behind our object.
bool isHead (void)
 Test if we are at the head of a list.
bool isTail (void)
 Test if we are at the end of a list.
void operator*= (LinkedList *object)
 Insert object in list with our object.
void operator+= (LinkedList *object)
 Insert object behind our object.
void operator-= (LinkedList *object)
 Insert object in front of our object.
- Public Member Functions inherited from ucommon::OrderedObject
void delist (OrderedIndex *index)
 Remove our ordered object from an existing index.
- Public Member Functions inherited from ucommon::LinkedObject
void delist (LinkedObject **root)
 Locate and remove ourselves from a list of objects.
void enlist (LinkedObject **root)
 Add our object to an existing linked list through a pointer.
bool isMember (LinkedObject *list)
 Search to see if we are a member of a specific list.
virtual void release (void)
 Release list, mark as no longer linked.
virtual void retain (void)
 Retain by marking as self referenced list.
- Public Member Functions inherited from ucommon::ObjectProtocol
ObjectProtocol * copy (void)
 Retain (increase retention of) object when copying.
void operator++ (void)
 Increase retention operator.
void operator-- (void)
 Decrease retention operator.
virtual ~ObjectProtocol ()
 Required virtual destructor.

Protected Member Functions

 LinkedList (OrderedIndex *index)
 Construct and add our object to an existing double linked list at end.
 LinkedList ()
 Construct an unlinked object.
virtual ~LinkedList ()
 Delete linked list object.
- Protected Member Functions inherited from ucommon::OrderedObject
 OrderedObject (OrderedIndex *index)
 Construct an ordered object aot end of a an index.
 OrderedObject ()
 Construct an ordered object unattached.
- Protected Member Functions inherited from ucommon::LinkedObject
 LinkedObject (LinkedObject **root)
 Construct base class attached to a chain of objects.
 LinkedObject ()
 Construct base class unattached to anyone.

Protected Attributes

LinkedList * prev
OrderedIndex * root

Friends

class ObjectQueue

Detailed Description

A double linked list object.

This is used as a base class for objects that will be organized through ordered double linked lists which allow convenient insertion and deletion of list members anywhere in the list.

Author:
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 757 of file linked.h.


Constructor & Destructor Documentation

ucommon::LinkedList::LinkedList ( OrderedIndex *  index)
protected

Construct and add our object to an existing double linked list at end.

Parameters:
indexof linked list we are listed in.
virtual ucommon::LinkedList::~LinkedList ( )
protectedvirtual

Delete linked list object.

If it is a member of a list of objects, then the list is reformed around us.


Member Function Documentation

void ucommon::LinkedList::enlist ( OrderedIndex *  index)
virtual

Attach our object to a linked list.

The default strategy is to add to tail.

Parameters:
indexof linked list we are joining.

Reimplemented from ucommon::OrderedObject.

void ucommon::LinkedList::enlistHead ( OrderedIndex *  index)

Attach our object to the start of a linked list though an ordered index.

If we are already attached to a list we are delisted first.

Parameters:
indexof linked list we are joining.

Reimplemented from ucommon::OrderedObject.

void ucommon::LinkedList::enlistTail ( OrderedIndex *  index)

Attach our object to the end of a linked list though an ordered index.

If we are already attached to a list we are delisted first.

Parameters:
indexof linked list we are joining.

Reimplemented from ucommon::OrderedObject.

LinkedList* ucommon::LinkedList::getNext ( void  )
inline

Get next node in the list when iterating.

Returns:
next node in list.

Reimplemented from ucommon::OrderedObject.

Definition at line 834 of file linked.h.

LinkedList* ucommon::LinkedList::getPrev ( void  )
inline

Get previous node in the list for reverse iteration.

Returns:
previous node in list.

Definition at line 827 of file linked.h.

virtual void ucommon::LinkedList::insert ( LinkedList *  object)
virtual

Insert object, method in derived object.

Parameters:
objectto add to list.
void ucommon::LinkedList::insertHead ( LinkedList *  object)

Insert object in front of our object.

Parameters:
objectto add to list.
void ucommon::LinkedList::insertTail ( LinkedList *  object)

Insert object behind our object.

Parameters:
objectto add to list.
bool ucommon::LinkedList::isHead ( void  )
inline

Test if we are at the head of a list.

Returns:
true if we are the first node in a list.

Definition at line 813 of file linked.h.

bool ucommon::LinkedList::isTail ( void  )
inline

Test if we are at the end of a list.

Returns:
true if we are the last node in a list.

Definition at line 820 of file linked.h.

void ucommon::LinkedList::operator*= ( LinkedList *  object)
inline

Insert object in list with our object.

Parameters:
objectto add to list.

Definition at line 873 of file linked.h.

void ucommon::LinkedList::operator+= ( LinkedList *  object)
inline

Insert object behind our object.

Parameters:
objectto add to list.

Definition at line 859 of file linked.h.

void ucommon::LinkedList::operator-= ( LinkedList *  object)
inline

Insert object in front of our object.

Parameters:
objectto add to list.

Definition at line 866 of file linked.h.


The documentation for this class was generated from the following file: