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.
 
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.
 
DLinkedObject * getNext (void) const
 Get next node in the list when iterating.
 
DLinkedObject * getPrev (void) const
 Get previous node in the list for reverse iteration.
 
virtual void insert (DLinkedObject *object)
 Insert object, method in derived object.
 
void insertHead (DLinkedObject *object)
 Insert object in front of our object.
 
void insertTail (DLinkedObject *object)
 Insert object behind our object.
 
bool is_head (void) const
 Test if we are at the head of a list.
 
bool is_tail (void) const
 Test if we are at the end of a list.
 
DLinkedObject & operator*= (DLinkedObject *object)
 Insert object in list with our object.
 
DLinkedObject & operator+= (DLinkedObject *object)
 Insert object behind our object.
 
DLinkedObject & operator-= (DLinkedObject *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.
 
void enlistHead (OrderedIndex *index)
 List our ordered object at start of a linked list on an index.
 
void enlistTail (OrderedIndex *index)
 List our ordered object at end of a linked list on an index.
 
OrderedObject * getNext (void) const
 Get next ordered member when iterating.
 
- 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.
 
LinkedObject * getNext (void) const
 Get next effective object when iterating.
 
bool is_member (LinkedObject *list) const
 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

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

Protected Attributes

DLinkedObject * Prev
 
OrderedIndex * Root
 
- Protected Attributes inherited from ucommon::LinkedObject
LinkedObject * Next
 

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.
 
static LinkedObject * getIndexed (LinkedObject *root, unsigned index)
 Get member by index.
 
static void purge (LinkedObject *root)
 Release all objects from a list.
 

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.

◆ 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.

Friends And Related Symbol Documentation

◆ ObjectQueue

friend class ObjectQueue
friend

Definition at line 771 of file linked.h.

Field Documentation

◆ Prev

DLinkedObject* ucommon::DLinkedObject::Prev
protected

Definition at line 773 of file linked.h.

◆ Root

OrderedIndex* ucommon::DLinkedObject::Root
protected

Definition at line 774 of file linked.h.


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