ucommon
7.0.0
About: GNU uCommon C++ is a portable and optimized class framework for writing C++ applications that need to use threads and support concurrent synchronization, and that use sockets, XML parsing, object serialization, thread-optimized string and data structure classes, etc..
![]() ![]() |
A linked object base class with members found by name. More...
#include <linked.h>
Public Member Functions | |
void | add (NamedObject **hash, char *name, unsigned size=1) |
Add object to hash indexed list. More... | |
NamedObject * | getNext (void) const |
Get next effective object when iterating. More... | |
char * | getId (void) const |
Get the named id string of this object. More... | |
virtual int | compare (const char *name) const |
Compare the name of our object to see if equal. More... | |
bool | equal (const char *name) const |
Equal function which calls compare. More... | |
bool | operator== (const char *name) const |
Comparison operator between our name and a string. More... | |
bool | operator!= (const char *name) const |
Comparison operator between our name and a string. More... | |
![]() | |
void | enlistTail (OrderedIndex *index) |
List our ordered object at end of a linked list on an index. More... | |
void | enlistHead (OrderedIndex *index) |
List our ordered object at start of a linked list on an index. More... | |
virtual void | enlist (OrderedIndex *index) |
List our ordered object in default strategy mode. More... | |
void | delist (OrderedIndex *index) |
Remove our ordered object from an existing index. More... | |
OrderedObject * | getNext (void) const |
Get next ordered member when iterating. More... | |
![]() | |
virtual | ~LinkedObject () |
virtual void | release (void) __OVERRIDE |
Release list, mark as no longer linked. More... | |
virtual void | retain (void) __OVERRIDE |
Retain by marking as self referenced list. More... | |
void | enlist (LinkedObject **root) |
Add our object to an existing linked list through a pointer. More... | |
void | delist (LinkedObject **root) |
Locate and remove ourselves from a list of objects. More... | |
bool | is_member (LinkedObject *list) const |
Search to see if we are a member of a specific list. More... | |
LinkedObject * | getNext (void) const |
Get next effective object when iterating. More... | |
Static Public Member Functions | |
static void | purge (NamedObject **hash, unsigned size) |
Purge a hash indexed table of named objects. More... | |
static NamedObject ** | index (NamedObject **hash, unsigned size) |
Convert a hash index into a linear object pointer array. More... | |
static unsigned | count (NamedObject **hash, unsigned size) |
Count the total named objects in a hash table. More... | |
static NamedObject * | find (NamedObject *root, const char *name) |
Find a named object from a simple list. More... | |
static NamedObject * | remove (NamedObject **root, const char *name) |
Remove a named object from a simple list. More... | |
static NamedObject * | map (NamedObject **hash, const char *name, unsigned size) |
Find a named object through a hash map table. More... | |
static NamedObject * | remove (NamedObject **hash, const char *name, unsigned size) |
Remove an object from a hash map table. More... | |
static NamedObject * | skip (NamedObject **hash, NamedObject *current, unsigned size) |
Iterate through a hash map table. More... | |
static unsigned | keyindex (const char *name, unsigned size) |
Internal function to convert a name to a hash index number. More... | |
static NamedObject ** | sort (NamedObject **list, size_t count=0) |
Sort an array of named objects in alphabetical order. More... | |
![]() | |
static void | purge (LinkedObject *root) |
Release all objects from a list. More... | |
static unsigned | count (const LinkedObject *root) |
Count the number of linked objects in a list. More... | |
static LinkedObject * | getIndexed (LinkedObject *root, unsigned index) |
Get member by index. More... | |
Protected Member Functions | |
NamedObject () | |
Create an empty unnamed cell object. More... | |
NamedObject (NamedObject **hash, char *name, unsigned size=1) | |
Create a named object and add to hash indexed list. More... | |
NamedObject (OrderedIndex *index, char *name) | |
Created a named object on an ordered list. More... | |
~NamedObject () | |
Destroy named object. More... | |
virtual void | clearId (void) |
The behavior of clearing id's can be overridden if they are not assigned as strdup's from the heap... More... | |
![]() | |
OrderedObject (OrderedIndex *index) | |
Construct an ordered object aot end of a an index. More... | |
OrderedObject () | |
Construct an ordered object unattached. More... | |
OrderedObject (const OrderedObject &from) | |
![]() | |
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 | |
char * | Id |
![]() | |
LinkedObject * | Next |
A linked object base class with members found by name.
This class is used to help form named option lists and other forms of name indexed associative data structures. The id is assumed to be passed from a dupped or dynamically allocated string. If a constant string is used then you must not call delete for this object.
Named objects are either listed on an ordered list or keyed through an associate hash map table. When using a hash table, the name id string is used to determine the slot number to use in a list of n sized linked object lists. Hence, a hash index refers to a specific sized array of object indexes.
|
protected |
|
protected |
Create a named object and add to hash indexed list.
hash | map table to list node on. |
name | of the object we are listing. |
size | of hash map table used. |
Definition at line 135 of file linked.cpp.
References add(), Id, and ucommon::max().
|
protected |
Created a named object on an ordered list.
This is commonly used to form attribute lists.
index | to list object on. |
name | of the object we are listing. |
Definition at line 101 of file linked.cpp.
References equal(), getNext(), ucommon::OrderedIndex::head, Id, ucommon::LinkedObject::Next, ucommon::LinkedObject::release(), and ucommon::OrderedIndex::tail.
|
protected |
Destroy named object.
We do not always destroy named objects, since we may use them in reusable pools or we may initialize a list that we keep permanently. If we do invoke delete for something based on NamedObject, then be aware the object id is assumed to be formed from a dup'd string which will also be freed unless clearId is overridden.
Definition at line 192 of file linked.cpp.
References clearId().
void ucommon::NamedObject::add | ( | NamedObject ** | hash, |
char * | name, | ||
unsigned | size = 1 |
||
) |
Add object to hash indexed list.
hash | map table to list node on. |
name | of the object we are listing. |
size | of hash map table used. |
Definition at line 146 of file linked.cpp.
References clearId(), equal(), getNext(), Id, keyindex(), ucommon::max(), ucommon::LinkedObject::Next, and ucommon::LinkedObject::release().
Referenced by NamedObject().
|
protectedvirtual |
The behavior of clearing id's can be overridden if they are not assigned as strdup's from the heap...
Definition at line 184 of file linked.cpp.
References Id.
Referenced by add(), ucommon::NamedTree::purge(), and ~NamedObject().
|
virtual |
Compare the name of our object to see if equal.
This is a virtual so that it can be overridden when using named lists or hash lookups that must be case insensitive.
name | to compare our name to. |
Definition at line 251 of file linked.cpp.
References Id.
|
static |
Count the total named objects in a hash table.
hash | map table of objects to index. |
size | of hash map table used. |
Definition at line 339 of file linked.cpp.
References count(), ucommon::max(), and ucommon::LinkedObject::Next.
Referenced by count(), and index().
|
inline |
|
static |
Find a named object from a simple list.
This may also use the begin() member of an ordered index of named objects.
root | node of named object list. |
name | of object to find. |
Definition at line 384 of file linked.cpp.
References equal(), and getNext().
Referenced by map().
|
inline |
|
inline |
Get next effective object when iterating.
Definition at line 519 of file linked.h.
Referenced by add(), find(), NamedObject(), ucommon::NamedTree::purge(), remove(), and skip().
|
static |
Convert a hash index into a linear object pointer array.
The object pointer array is created from the heap and must be deleted when no longer used.
hash | map table of objects to index. |
size | of hash map table used. |
Definition at line 287 of file linked.cpp.
References count(), ucommon::max(), and skip().
Referenced by ucommon::treemap< T >::getIndexed().
|
static |
Internal function to convert a name to a hash index number.
name | to convert into index. |
size | of map table. |
Definition at line 238 of file linked.cpp.
References ucommon::max().
Referenced by add(), map(), remove(), and skip().
|
static |
Find a named object through a hash map table.
hash | map table of objects to search. |
name | of object to find. |
size | of hash map table. |
Definition at line 372 of file linked.cpp.
References find(), keyindex(), and ucommon::max().
|
inline |
|
inline |
|
static |
Purge a hash indexed table of named objects.
hash | map table to purge. |
size | of hash map table used. |
Definition at line 323 of file linked.cpp.
References ucommon::max(), and ucommon::LinkedObject::purge().
|
static |
Remove an object from a hash map table.
hash | map table of object to remove from. |
name | of object to remove. |
size | of hash map table. |
Definition at line 360 of file linked.cpp.
References keyindex(), ucommon::max(), and remove().
|
static |
Remove a named object from a simple list.
root | node of named object list. |
name | of object to find. |
Definition at line 396 of file linked.cpp.
References equal(), getNext(), and ucommon::LinkedObject::Next.
Referenced by remove().
|
static |
Iterate through a hash map table.
hash | map table to iterate. |
current | named object we iterated or NULL to find start of list. |
size | of map table. |
Definition at line 303 of file linked.cpp.
References getNext(), Id, keyindex(), ucommon::max(), and ucommon::LinkedObject::Next.
Referenced by index().
|
static |
Sort an array of named objects in alphabetical order.
This would typically be used to sort a list created and returned by index().
list | of named objects to sort. |
count | of objects in the list or 0 to find by NULL pointer. |
Definition at line 274 of file linked.cpp.
References ucommon::ncompare().
|
protected |
Definition at line 384 of file linked.h.
Referenced by add(), clearId(), compare(), NamedObject(), ucommon::NamedTree::NamedTree(), ucommon::NamedTree::remove(), ucommon::NamedTree::setId(), skip(), and ucommon::NamedTree::~NamedTree().