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 assoc_pointer< T, I, M, P >:
Inheritance graph
[legend]
Collaboration diagram for assoc_pointer< T, I, M, P >:
Collaboration graph
[legend]

Public Member Functions

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

Detailed Description

template<class T, unsigned I = 177, size_t M = 0, size_t P = 0>
class 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 479 of file memory.h.


Member Function Documentation

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
bool 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 523 of file memory.h.

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
bool 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 532 of file memory.h.

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

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

Returns:
typed objects in map.

Reimplemented from keyassoc.

Definition at line 491 of file memory.h.

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
unsigned assoc_pointer< T, I, M, P >::getPages ( 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 memalloc.

Definition at line 557 of file memory.h.

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
T* assoc_pointer< T, I, M, P >::locate ( const 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 keyassoc.

Definition at line 505 of file memory.h.

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
T* assoc_pointer< T, I, M, P >::operator() ( const 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 keyassoc.

Definition at line 513 of file memory.h.

Here is the call graph for this function:

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
void 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.

Definition at line 540 of file memory.h.

template<class T , unsigned I = 177, size_t M = 0, size_t P = 0>
unsigned 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 mempager.

Definition at line 548 of file memory.h.


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

Generated on 28 Dec 2009 for UCommon by  doxygen 1.6.1