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

A double linked list object. More...

#include <linked.h>

Inheritance diagram for ucommon::DLinkedObject:
Inheritance graph
[legend]
Collaboration diagram for ucommon::DLinkedObject:
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. More...
 
void enlistHead (OrderedIndex *index)
 Attach our object to the start of a linked list though an ordered index. More...
 
void enlistTail (OrderedIndex *index)
 Attach our object to the end of a linked list though an ordered index. More...
 
DLinkedObjectgetNext (void) const
 Get next node in the list when iterating. More...
 
DLinkedObjectgetPrev (void) const
 Get previous node in the list for reverse iteration. More...
 
virtual void insert (DLinkedObject *object)
 Insert object, method in derived object. More...
 
void insertHead (DLinkedObject *object)
 Insert object in front of our object. More...
 
void insertTail (DLinkedObject *object)
 Insert object behind our object. More...
 
bool is_head (void) const
 Test if we are at the head of a list. More...
 
bool is_tail (void) const
 Test if we are at the end of a list. More...
 
DLinkedObjectoperator *= (DLinkedObject *object)
 Insert object in list with our object. More...
 
DLinkedObjectoperator+= (DLinkedObject *object)
 Insert object behind our object. More...
 
DLinkedObjectoperator-= (DLinkedObject *object)
 Insert object in front of our object. More...
 
- Public Member Functions inherited from ucommon::OrderedObject
void delist (OrderedIndex *index)
 Remove our ordered object from an existing index. More...
 
void enlistHead (OrderedIndex *index)
 List our ordered object at start of a linked list on an index. More...
 
void enlistTail (OrderedIndex *index)
 List our ordered object at end of a linked list on an index. More...
 
OrderedObjectgetNext (void) const
 Get next ordered member when iterating. More...
 
- Public Member Functions inherited from ucommon::LinkedObject
void delist (LinkedObject **root)
 Locate and remove ourselves from a list of objects. More...
 
void enlist (LinkedObject **root)
 Add our object to an existing linked list through a pointer. More...
 
LinkedObjectgetNext (void) const
 Get next effective object when iterating. More...
 
bool is_member (LinkedObject *list) const
 Search to see if we are a member of a specific list. More...
 
virtual void release (void)
 Release list, mark as no longer linked. More...
 
virtual void retain (void)
 Retain by marking as self referenced list. More...
 
- Public Member Functions inherited from ucommon::ObjectProtocol
ObjectProtocolcopy (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

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

Protected Attributes

DLinkedObjectPrev
 
OrderedIndexRoot
 
- Protected Attributes inherited from ucommon::LinkedObject
LinkedObjectNext
 

Friends

class ObjectQueue
 

Additional Inherited Members

- Static Public Member Functions inherited from ucommon::LinkedObject
static unsigned count (const LinkedObject *root)
 Count the number of linked objects in a list. More...
 
static LinkedObjectgetIndexed (LinkedObject *root, unsigned index)
 Get member by index. More...
 
static void purge (LinkedObject *root)
 Release all objects from a list. More...
 

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
Examples
linked.cpp.

Definition at line 768 of file linked.h.

Constructor & Destructor Documentation

◆ DLinkedObject()

ucommon::DLinkedObject::DLinkedObject ( OrderedIndex index)
protected

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

Parameters
indexof linked list we are listed in.

◆ ~DLinkedObject()

virtual ucommon::DLinkedObject::~DLinkedObject ( )
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

◆ enlist()

void ucommon::DLinkedObject::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.

◆ enlistHead()

void ucommon::DLinkedObject::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.

◆ enlistTail()

void ucommon::DLinkedObject::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.

◆ getNext()

DLinkedObject* ucommon::DLinkedObject::getNext ( void  ) const
inline

Get next node in the list when iterating.

Returns
next node in list.

Definition at line 850 of file linked.h.

Here is the call graph for this function:

◆ getPrev()

DLinkedObject* ucommon::DLinkedObject::getPrev ( void  ) const
inline

Get previous node in the list for reverse iteration.

Returns
previous node in list.

Definition at line 842 of file linked.h.

◆ insert()

virtual void ucommon::DLinkedObject::insert ( DLinkedObject object)
virtual

Insert object, method in derived object.

Parameters
objectto add to list.

◆ insertHead()

void ucommon::DLinkedObject::insertHead ( DLinkedObject object)

Insert object in front of our object.

Parameters
objectto add to list.

◆ insertTail()

void ucommon::DLinkedObject::insertTail ( DLinkedObject object)

Insert object behind our object.

Parameters
objectto add to list.

◆ is_head()

bool ucommon::DLinkedObject::is_head ( void  ) const
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 826 of file linked.h.

◆ is_tail()

bool ucommon::DLinkedObject::is_tail ( void  ) const
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 834 of file linked.h.

◆ operator *=()

DLinkedObject& ucommon::DLinkedObject::operator *= ( DLinkedObject object)
inline

Insert object in list with our object.

Parameters
objectto add to list.

Definition at line 894 of file linked.h.

◆ operator+=()

DLinkedObject& ucommon::DLinkedObject::operator+= ( DLinkedObject object)
inline

Insert object behind our object.

Parameters
objectto add to list.

Definition at line 876 of file linked.h.

◆ operator-=()

DLinkedObject& ucommon::DLinkedObject::operator-= ( DLinkedObject object)
inline

Insert object in front of our object.

Parameters
objectto add to list.

Definition at line 885 of file linked.h.


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