UCommon
|
A map table allows for entities to be mapped (hash index) onto it. More...
#include <object.h>
Inherits ost::Mutex.
Public Member Functions | |
void | addFree (MapObject *obj) |
Add an object to the managed free list. | |
void | addObject (MapObject &obj) |
Map an object to our table. | |
void * | getEnd () |
Get table's end, useful for cycle control; it is returned as void * for easy re-cast. | |
void * | getFirst () |
Get the first element into table, it is returned as void * for easy re-cast. | |
void * | getFree (void) |
Get next object from managed free list. | |
virtual unsigned | getIndex (const char *id) |
Get index value from id string. | |
void * | getLast () |
Get the last element into table, it is returned as void * for easy re-cast. | |
void * | getObject (const char *id) |
Lookup an object by id key. | |
unsigned | getRange (void) |
Return range of this table. | |
unsigned | getSize (void) |
Return the number of object stored in this table. | |
MapTable (unsigned size) | |
Create a map table with a specified number of slots. | |
MapTable & | operator+= (MapObject &obj) |
An operator to map an object to the table. | |
virtual MapTable & | operator-= (MapObject &obj) |
This operator is virtual in case it must also add the object to a managed free list. | |
virtual | ~MapTable () |
Destroy the table, calls cleanup. | |
Protected Member Functions | |
void | cleanup (void) |
Protected Attributes | |
unsigned | count |
MapObject ** | map |
unsigned | range |
Friends | |
class | MapIndex |
class | MapObject |
A map table allows for entities to be mapped (hash index) onto it.
Unlike with Assoc, This form of map table also allows objects to be removed from the table. This table also includes a mutex lock for thread safety. A free list is also optionally maintained for reusable maps.
ost::MapTable::MapTable | ( | unsigned | size | ) |
Create a map table with a specified number of slots.
number | of slots. |
void ost::MapTable::addFree | ( | MapObject * | obj | ) |
Add an object to the managed free list.
Some MapObject's may override delete operator to detach and do this.
object | to add. |
void ost::MapTable::addObject | ( | MapObject & | obj | ) |
Map an object to our table.
If it is in another table already, it is removed there first.
object | to map. |
void* ost::MapTable::getEnd | ( | ) | [inline] |
void* ost::MapTable::getFirst | ( | ) |
Get the first element into table, it is returned as void * for easy re-cast.
void* ost::MapTable::getFree | ( | void | ) |
Get next object from managed free list.
This returns as a void so it can be recast into the actual type being used in derived MapObject's. A derived version of MapTable may well offer an explicit type version of this. Some derived MapObject's may override new to use managed list.
virtual unsigned ost::MapTable::getIndex | ( | const char * | id | ) | [virtual] |
Get index value from id string.
This function can be changed as needed to provide better collision avoidence for specific tables.
id | string |
void* ost::MapTable::getLast | ( | ) |
Get the last element into table, it is returned as void * for easy re-cast.
void* ost::MapTable::getObject | ( | const char * | id | ) |
Lookup an object by id key.
It is returned as void * for easy re-cast.
key | to find. |
unsigned ost::MapTable::getRange | ( | void | ) | [inline] |
unsigned ost::MapTable::getSize | ( | void | ) | [inline] |
An operator to map an object to the table.
object | being mapped. |
This operator is virtual in case it must also add the object to a managed free list.
object | entity to remove. |