ucommon::assoc_pointer< T, I, M, P > Class Template Reference

A typed template for using a key association with typed objects. More...

#include <memory.h>

Inheritance diagram for ucommon::assoc_pointer< T, I, M, P >:

Inheritance graph
[legend]
Collaboration diagram for ucommon::assoc_pointer< T, I, M, P >:

Collaboration graph
[legend]

Public Member Functions

bool assign (char *name, T *pointer)
 Assign a name for a pointer to a typed object.
 assoc_pointer ()
 Construct an associated pointer hash map based on the class template.
unsigned count (void)
 Get the count of typed objects stored in our hash map.
bool create (char *name, T *pointer)
 Create a new name in the association table and assign typed object.
T * locate (char *name)
 Lookup a typed object by name.
T * operator() (char *name)
 Reference a typed object directly by name.
T * operator[] (char *name)
unsigned pages (void)
 Access to number of pages allocated from heap for our associated index pointer.
void purge (void)
 Purge the hash map of typed objects.
void remove (char *name)
 Remove a name and typed pointer association.
unsigned utilization (void)
 Access to pager utilization stats.

Detailed Description

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
class ucommon::assoc_pointer< T, I, M, P >

A typed template for using a key association with typed objects.

This essentially forms a form of "smart pointer" that is a reference to specific typed objects by symbolic name. This is commonly used as for associated indexing of typed objects.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 1166 of file memory.h.


Member Function Documentation

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
bool ucommon::assoc_pointer< T, I, M, P >::assign ( char *  name,
T *  pointer 
) [inline]

Assign a name for a pointer to a typed object.

If the name exists, it is re-assigned with the new pointer value, otherwise it is created.

Parameters:
name to assign.
pointer of typed object to assign with name.
Returns:
false if failed because name is too long for managed table.

Definition at line 1214 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
unsigned ucommon::assoc_pointer< T, I, M, P >::count ( void   )  [inline]

Get the count of typed objects stored in our hash map.

Returns:
typed objects in map.

Reimplemented from ucommon::keyassoc.

Definition at line 1178 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
bool ucommon::assoc_pointer< T, I, M, P >::create ( char *  name,
T *  pointer 
) [inline]

Create a new name in the association table and assign typed object.

Parameters:
name to create.
pointer of typed object to assign with name.
Returns:
false if already exists or name is too long for managed table.

Definition at line 1223 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
T* ucommon::assoc_pointer< T, I, M, P >::locate ( char *  name  )  [inline]

Lookup a typed object by name.

Parameters:
name of typed object to locate.
Returns:
typed object pointer or NULL if not found.

Reimplemented from ucommon::keyassoc.

Definition at line 1192 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
T* ucommon::assoc_pointer< T, I, M, P >::operator() ( char *  name  )  [inline]

Reference a typed object directly by name.

Parameters:
name of typed object to locate.
Returns:
typed object pointer or NULL if not found.

Reimplemented from ucommon::keyassoc.

Definition at line 1204 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
unsigned ucommon::assoc_pointer< T, I, M, P >::pages ( void   )  [inline]

Access to number of pages allocated from heap for our associated index pointer.

This is needed because we inherit keyassoc privately.

Returns:
count of heap pages used.

Reimplemented from ucommon::memalloc.

Definition at line 1248 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
void ucommon::assoc_pointer< T, I, M, P >::remove ( char *  name  )  [inline]

Remove a name and typed pointer association.

If managed key names are used then the memory allocated for the name will be re-used.

Parameters:
name to remove.

Reimplemented from ucommon::keyassoc.

Definition at line 1231 of file memory.h.

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
unsigned ucommon::assoc_pointer< T, I, M, P >::utilization ( void   )  [inline]

Access to pager utilization stats.

This is needed because we inherit keyassoc privately.

Returns:
pager utilization, 0-100.

Reimplemented from ucommon::mempager.

Definition at line 1239 of file memory.h.


The documentation for this class was generated from the following file:
Generated on 14 Aug 2013 for UCommon by  doxygen 1.4.7