UCommon
Public Member Functions
ucommon::keypager< T, M > Class Template Reference

A template class for a hash pager. More...

#include <memory.h>

Inheritance diagram for ucommon::keypager< T, M >:
Inheritance graph
[legend]
Collaboration diagram for ucommon::keypager< T, M >:
Collaboration graph
[legend]

Public Member Functions

T * begin (void)
 Find first typed object in hash map to iterate.
unsigned count (void)
 Count the number of typed objects in our hash map.
T * get (char *name)
 Find a typed object derived from NamedObject in the hash map by name.
T ** index (void)
 Convert our hash map into a linear object pointer array.
 keypager (size_t size)
 Create the object cache.
T * next (T *current)
 Find next typed object in hash map for iteration.
T * operator[] (char *name)
 Find a typed object derived from NamedObject in the hash map by name.
T ** sort (void)
 Convert our hash map into an alphabetically sorted linear object pointer array.
bool test (char *name)
 Test if a name exists in the pool.
 ~keypager ()
 Destroy the hash pager by purging the index chains and memory pools.
- Public Member Functions inherited from ucommon::mempager
virtual void * _alloc (size_t size)
 Allocate memory from the pager heap.
virtual void dealloc (void *memory)
 Return memory back to pager heap.
 mempager (size_t page=0)
 Construct a memory pager.
void purge (void)
 Purge all allocated memory and heap pages immediately.
unsigned utilization (void)
 Determine fragmentation level of acquired heap pages.
virtual ~mempager ()
 Destroy a memory pager.
- Public Member Functions inherited from ucommon::memalloc
unsigned getAlloc (void)
 Get the size of a memory page.
unsigned getLimit (void)
 Get the maximum number of pages that are permitted.
unsigned getPages (void)
 Get the number of pages that have been allocated from the real heap.
 memalloc (size_t page=0)
 Construct a memory pager.
virtual ~memalloc ()
 Destroy a memory pager.
- Public Member Functions inherited from ucommon::MemoryProtocol
void * alloc (size_t size)
 Convenience function.
char * dup (const char *string)
 Duplicate NULL terminated string into allocated memory.
void * dup (void *memory, size_t size)
 Duplicate existing memory block into allocated memory.
void * zalloc (size_t size)
 Allocate memory from the pager heap.

Additional Inherited Members

- Protected Member Functions inherited from ucommon::mempager
virtual void _lock (void)
 Lock the memory pager mutex.
virtual void _unlock (void)
 Unlock the memory pager mutex.
- Protected Member Functions inherited from ucommon::memalloc
page_t * pager (void)
 Acquire a new page from the heap.
- Protected Member Functions inherited from ucommon::MemoryProtocol
virtual void * _alloc (size_t size)=0
 Protocol to allocate memory from the pager heap.

Detailed Description

template<class T, unsigned M = 177>
class ucommon::keypager< T, M >

A template class for a hash pager.

This creates objects from a pager pool when they do not already exist in the hash map.

Author:
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 830 of file memory.h.


Constructor & Destructor Documentation

template<class T , unsigned M = 177>
ucommon::keypager< T, M >::keypager ( size_t  size)
inline

Create the object cache.

Parameters:
sizeof allocation units.

Definition at line 840 of file memory.h.


Member Function Documentation

template<class T , unsigned M = 177>
T* ucommon::keypager< T, M >::begin ( void  )
inline

Find first typed object in hash map to iterate.

Returns:
first typed object or NULL if nothing in list.

Definition at line 884 of file memory.h.

template<class T , unsigned M = 177>
unsigned ucommon::keypager< T, M >::count ( void  )
inline

Count the number of typed objects in our hash map.

Returns:
count of typed objects.

Definition at line 899 of file memory.h.

template<class T , unsigned M = 177>
T* ucommon::keypager< T, M >::get ( char *  name)
inline

Find a typed object derived from NamedObject in the hash map by name.

If the object is not found, it is created from the memory pool.

Parameters:
nameto search for.
Returns:
typed object if found through map or NULL.

Definition at line 854 of file memory.h.

template<class T , unsigned M = 177>
T** ucommon::keypager< T, M >::index ( void  )
inline

Convert our hash map into a linear object pointer array.

The object pointer array is created from the heap and must be deleted when no longer used.

Returns:
array of typed named object pointers.

Definition at line 908 of file memory.h.

template<class T , unsigned M = 177>
T* ucommon::keypager< T, M >::next ( T *  current)
inline

Find next typed object in hash map for iteration.

Parameters:
currenttyped object we are referencing.
Returns:
next iterative object or NULL if past end of map.

Definition at line 892 of file memory.h.

template<class T , unsigned M = 177>
T* ucommon::keypager< T, M >::operator[] ( char *  name)
inline

Find a typed object derived from NamedObject in the hash map by name.

If the object is not found, it is created from the pager pool.

Parameters:
nameto search for.
Returns:
typed object if found through map or NULL.

Definition at line 877 of file memory.h.

template<class T , unsigned M = 177>
T** ucommon::keypager< T, M >::sort ( void  )
inline

Convert our hash map into an alphabetically sorted linear object pointer array.

The object pointer array is created from the heap and must be deleted when no longer used.

Returns:
sorted array of typed named object pointers.

Definition at line 917 of file memory.h.

template<class T , unsigned M = 177>
bool ucommon::keypager< T, M >::test ( char *  name)
inline

Test if a name exists in the pool.

Parameters:
nameto test.
Returns:
true if found.

Definition at line 868 of file memory.h.


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