45#ifndef COMMONCPP_OBJECT_H_
46#define COMMONCPP_OBJECT_H_
48#ifndef COMMONCPP_CONFIG_H_
49#include <commoncpp/config.h>
155 inline void *operator*()
const {
159 void *getObject(
void)
const;
161 operator bool()
const;
163 bool operator!()
const;
246 nextObject = prevObject = NULL;
251 virtual void enterLock(
void);
253 virtual void leaveLock(
void);
524 return (
void*)thisObject;
547 return this->operator++();
556 return thisObject == theIndex.thisObject;
559 bool operator!=(
const MapIndex& theIndex)
const {
560 return !(*
this == theIndex);
570 return thisObject == theObject;
573 bool operator!=(
const MapObject* theObject)
const {
574 return !(*
this == theObject);
595 const char *idObject;
A reference countable object.
virtual ~RefObject()
The destructor is called when the reference count returns to zero.
RefObject()
The constructor simply initializes the count.
virtual void * getObject(void)=0
The actual object being managed can be returned by this method as a void and then recast to the actua...
Pointer to reference counted objects.
virtual void enterLock(void)
Patch point for mutex in derived class.
RefPointer()
Create an unattached pointer.
RefPointer(RefObject *obj)
Create a pointer attached to a reference counted object.
RefPointer(const RefPointer &ptr)
A copy constructor.
virtual void leaveLock(void)
Patch point for a mutex in derived class.
void detach(void)
Detach current object, for example, when changing pointer.
Self managed single linked list object chain.
virtual void insert(LinkedSingle &obj)
Insert object into chain.
virtual LinkedSingle * getFirst(void)
Get first linked object in list.
LinkedSingle * getNext(void)
Get next object, for convenience.
virtual LinkedSingle * getLast(void)
Gets the last object in the list.
Self managed double linked list object chain.
virtual LinkedDouble * getInsert(void)
Virtual to get the insert point to use when adding new members.
InsertMode
Requested in overloaded insert() method to indicate how to insert data into list.
@ modeAtLast
insert at last position in list pointed by current object
@ modeBefore
insert in list before current object
@ modeAtFirst
insert at first position in list pointed by current object
virtual LinkedDouble * getFirst(void)
Get first linked object in list.
LinkedDouble * getNext(void)
Get next object, for convenience.
virtual void insert(LinkedDouble &obj, InsertMode position=modeAtLast)
Insert object into chain at given pos, as indicated by InsertMode; If no pos is given,...
virtual LinkedDouble * getLast(void)
Gets the last object in the list.
virtual void detach(void)
Remove object from chain.
LinkedDouble * getPrev(void)
Get prev object in the list.
A map table allows for entities to be mapped (hash index) onto it.
virtual unsigned getIndex(const char *id)
Get index value from id string.
void * getEnd()
Get table's end, useful for cycle control; it is returned as void * for easy re-cast.
void addObject(MapObject &obj)
Map an object to our table.
virtual ~MapTable()
Destroy the table, calls cleanup.
MapTable & operator+=(MapObject &obj)
An operator to map an object to the table.
MapTable(unsigned size)
Create a map table with a specified number of slots.
void * getObject(const char *id)
Lookup an object by id key.
unsigned getSize(void)
Return the number of object stored in this table.
unsigned getRange(void)
Return range of this table.
void * getLast()
Get the last element into table, it is returned as void * for easy re-cast.
virtual MapTable & operator-=(MapObject &obj)
This operator is virtual in case it must also add the object to a managed free list.
void * getFirst()
Get the first element into table, it is returned as void * for easy re-cast.
void addFree(MapObject *obj)
Add an object to the managed free list.
void * getFree(void)
Get next object from managed free list.
The MapIndex allows linear access into a MapTable, that otherwise could have its elements being retri...
bool operator==(const MapObject *theObject) const
Comparison operator, between the MapIndex and a MapObject, useful to avoid casts for sake of clearnes...
MapIndex(const MapIndex &theIndex)
Creates a copy of a given map index.
MapIndex & operator++()
Prefix increment operator, to be used in loops and such.
MapIndex()
Creates an empty map index (pointing to nothing).
bool operator==(const MapIndex &theIndex) const
Comparison operator, between two MapIndex's.
MapIndex & operator=(MapObject *theObject)
Assignment operator to avoid implicit cast.
MapIndex(MapObject *theObject)
Creates a map index pointing to a specific map object.
void * operator*() const
Dereference operator: the pointed object it is returned as void * for easy re-cast.
MapIndex operator++(int)
Postfix increment operator, to be used in loops and such.
The MapObject is a base class which can be used to make a derived class operate on a MapTable.
void detach(void)
Remove the object from it's current table.
MapObject(const char *id)
Save id, mark as not using any table.