UCommon
ucommon::LinkedObject Class Reference

Common base class for all objects that can be formed into a linked list. More...

#include <linked.h>

Inheritance diagram for ucommon::LinkedObject:
Collaboration diagram for ucommon::LinkedObject:

Public Member Functions

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.
LinkedObjectgetNext (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
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.

Static Public Member Functions

static unsigned count (const LinkedObject *root)
 Count the number of linked objects in a list.
static LinkedObjectgetIndexed (LinkedObject *root, unsigned index)
 Get member by index.
static void purge (LinkedObject *root)
 Release all objects from a list.

Protected Member Functions

 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

LinkedObjectNext

Friends

class NamedObject
class OrderedIndex

Detailed Description

Common base class for all objects that can be formed into a linked list.

This base class is used directly for objects that can be formed into a single linked list. It is also used directly as a type for a pointer to the start of list of objects that are linked together as a list.

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

Definition at line 55 of file linked.h.

Constructor & Destructor Documentation

◆ LinkedObject() [1/2]

ucommon::LinkedObject::LinkedObject ( LinkedObject ** root)
protected

Construct base class attached to a chain of objects.

Parameters
rootpointer to chain of objects we are part of.
Here is the call graph for this function:

◆ LinkedObject() [2/2]

ucommon::LinkedObject::LinkedObject ( )
protected

Construct base class unattached to anyone.

This might be used to construct intermediary base classes that may form lists through indexing objects.

Here is the call graph for this function:

Member Function Documentation

◆ count()

unsigned ucommon::LinkedObject::count ( const LinkedObject * root)
static

Count the number of linked objects in a list.

Parameters
rootpointer to list we are counting.
Here is the call graph for this function:

◆ delist()

void ucommon::LinkedObject::delist ( LinkedObject ** root)

Locate and remove ourselves from a list of objects.

This searches the list to locate our object and if found relinks the list around us.

Parameters
rootpointer to list we are removing ourselves from.
Here is the call graph for this function:

◆ enlist()

void ucommon::LinkedObject::enlist ( LinkedObject ** root)

Add our object to an existing linked list through a pointer.

This forms a container sorted in lifo order since we become the head of the list, and the previous head becomes our next.

Parameters
rootpointer to list we are adding ourselves to.
Here is the call graph for this function:

◆ getIndexed()

LinkedObject * ucommon::LinkedObject::getIndexed ( LinkedObject * root,
unsigned index )
static

Get member by index.

Returns
indexed member in linked list.
Parameters
rootpointer to list we are indexing.
indexmember to find.
Here is the call graph for this function:

◆ getNext()

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

Get next effective object when iterating.

Returns
next linked object in list.

Definition at line 138 of file linked.h.

Here is the call graph for this function:

◆ is_member()

bool ucommon::LinkedObject::is_member ( LinkedObject * list) const

Search to see if we are a member of a specific list.

Returns
true if we are member of the list.
Here is the call graph for this function:

◆ purge()

void ucommon::LinkedObject::purge ( LinkedObject * root)
static

Release all objects from a list.

Parameters
rootpointer to list we are purging.
Here is the call graph for this function:

◆ release()

virtual void ucommon::LinkedObject::release ( void )
virtual

Release list, mark as no longer linked.

Inherited from base Object.

Implements ucommon::ObjectProtocol.

Reimplemented in ucommon::PagerObject, and ucommon::ReusableObject.

◆ retain()

virtual void ucommon::LinkedObject::retain ( void )
virtual

Retain by marking as self referenced list.

Inherited from base Object.

Implements ucommon::ObjectProtocol.

Reimplemented in ucommon::PagerObject.

◆ NamedObject

friend class NamedObject
friend

Definition at line 59 of file linked.h.

◆ OrderedIndex

friend class OrderedIndex
friend

Definition at line 58 of file linked.h.

Field Documentation

◆ Next

LinkedObject* ucommon::LinkedObject::Next
protected

Definition at line 62 of file linked.h.


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