Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Map_Manager Class Template Reference

Define a map abstraction that associates <EXT_ID>s with <INT_ID>s. More...

#include <Map_Manager.h>

Inheritance diagram for ACE_Map_Manager

Inheritance graph
[legend]
Collaboration diagram for ACE_Map_Manager:

Collaboration graph
[legend]
List of all members.

Public Types

typedef EXT_ID KEY
typedef INT_ID VALUE
typedef ACE_Map_Entry<EXT_ID,
INT_ID> 
ENTRY
typedef ACE_Map_Iterator<EXT_ID,
INT_ID, ACE_LOCK> 
ITERATOR
typedef ACE_Map_Const_Iterator<
EXT_ID, INT_ID, ACE_LOCK> 
CONST_ITERATOR
typedef ACE_Map_Reverse_Iterator<
EXT_ID, INT_ID, ACE_LOCK> 
REVERSE_ITERATOR
typedef ACE_Map_Iterator<EXT_ID,
INT_ID, ACE_LOCK> 
iterator
typedef ACE_Map_Const_Iterator<
EXT_ID, INT_ID, ACE_LOCK> 
const_iterator
typedef ACE_Map_Reverse_Iterator<
EXT_ID, INT_ID, ACE_LOCK> 
reverse_iterator

Public Methods

 ACE_Map_Manager (ACE_Allocator *alloc = 0)
 Initialize a <Map_Manager> with the .

 ACE_Map_Manager (size_t size, ACE_Allocator *alloc = 0)
 Initialize a <Map_Manager> with <size> entries.

int open (size_t length = ACE_DEFAULT_MAP_SIZE, ACE_Allocator *alloc = 0)
 Initialize a <Map_Manager> with size <length>.

int close (void)
 Close down a <Map_Manager> and release dynamically allocated resources.

 ~ACE_Map_Manager (void)
 Close down a <Map_Manager> and release dynamically allocated resources.

int bind (const EXT_ID &ext_id, const INT_ID &int_id)
int rebind (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id)
int rebind (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id)
int rebind (const EXT_ID &ext_id, const INT_ID &int_id)
 Reassociate <ext_id> with <int_id>. Old values in the map are ignored.

int trybind (const EXT_ID &ext_id, INT_ID &int_id)
int find (const EXT_ID &ext_id, INT_ID &int_id) const
 Locate <ext_id> and pass out parameter via <int_id>. Returns 0 if found, returns -1 if not found.

int find (const EXT_ID &ext_id) const
 Returns 0 if the <ext_id> is in the mapping, otherwise -1.

int unbind (const EXT_ID &ext_id)
int unbind (const EXT_ID &ext_id, INT_ID &int_id)
void unbind_all (void)
size_t current_size (void) const
 Return the current size of the map.

size_t total_size (void) const
 Return the total size of the map.

ACE_LOCK& mutex (void)
void dump (void) const
 Dump the state of an object.

ACE_Map_Iterator<EXT_ID, INT_ID,
ACE_LOCK> 
begin (void)
 Return forward iterator.

ACE_Map_Iterator<EXT_ID, INT_ID,
ACE_LOCK> 
end (void)
ACE_Map_Reverse_Iterator<EXT_ID,
INT_ID, ACE_LOCK> 
rbegin (void)
 Return reverse iterator.

ACE_Map_Reverse_Iterator<EXT_ID,
INT_ID, ACE_LOCK> 
rend (void)

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Protected Types

enum  { MAX_EXPONENTIAL = 64 * 1024, LINEAR_INCREASE = 32 * 1024 }

Protected Methods

int bind_i (const EXT_ID &ext_id, const INT_ID &int_id)
 Performs the binding of <ext_id> to <int_id>. Must be called with locks held.

int shared_bind (const EXT_ID &ext_id, const INT_ID &int_id)
 Bind an entry (without finding first). Must be called with locks held.

int rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id)
 Performs a rebinding of <ext_it> to <int_id>. Also, recovers old values. Must be called with locks held.

int rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id)
 Performs a rebinding of <ext_it> to <int_id>. Also, recovers old values. Must be called with locks held.

int rebind_i (const EXT_ID &ext_id, const INT_ID &int_id)
 Performs a rebinding of <ext_it> to <int_id>. Must be called with locks held.

int trybind_i (const EXT_ID &ext_id, INT_ID &int_id)
 Performs a conditional bind of <int_id> using <ext_id> as the key. Must be called with locks held.

int find_i (const EXT_ID &ext_id, INT_ID &int_id)
 Performs a find of <int_id> using <ext_id> as the key. Must be called with locks held.

int find_and_return_index (const EXT_ID &ext_id, ACE_UINT32 &slot)
 Performs a find using <ext_id> as the key. Must be called with locks held.

int unbind_i (const EXT_ID &ext_id, INT_ID &int_id)
 Performs an unbind of <int_id> using <ext_id> as the key. Must be called with locks held.

int unbind_i (const EXT_ID &ext_id)
 Performs an unbind using <ext_id> as the key. Must be called with locks held.

int unbind_and_return_index (const EXT_ID &ext_id, ACE_UINT32 &slot)
 Performs an unbind using <ext_id> as the key. Must be called with locks held.

void unbind_slot (ACE_UINT32 slot)
 Unbind <slot>.

int resize_i (ACE_UINT32 size)
 Resize the map. Must be called with locks held.

int close_i (void)
 Close down a <Map_Manager>. Must be called with locks held.

int equal (const EXT_ID &id1, const EXT_ID &id2)
 Returns 1 if <id1> == <id2>, else 0. This is defined as a separate method to facilitate template specialization.

ACE_UINT32 new_size (void)
 This function returns the new size of the Map Manager. This function is called when we run out of room and need to resize.

void free_search_structure (void)
 Explicitly call the destructors and free up the <search_structure_>.

ACE_UINT32 free_list_id (void) const
 Id of the free list sentinel.

ACE_UINT32 occupied_list_id (void) const
 Id of the occupied list sentinel.

int next_free (ACE_UINT32 &slot)
 Finds the next free slot.

void move_from_free_list_to_occupied_list (ACE_UINT32 slot)
 Move from free list to occupied list.

void move_from_occupied_list_to_free_list (ACE_UINT32 slot)
 Move from occupied list to free list.

void shared_move (ACE_UINT32 slot, ACE_Map_Entry<EXT_ID, INT_ID> &current_list, ACE_UINT32 current_list_id, ACE_Map_Entry<EXT_ID, INT_ID> &new_list, ACE_UINT32 new_list_id)
 Move helper.


Protected Attributes

ACE_Allocatorallocator_
 Pointer to a memory allocator.

ACE_LOCK lock_
 Synchronization variable for the MT_SAFE .

ACE_Map_Entry<EXT_ID, INT_ID>* search_structure_
 Implement the Map as a resizeable array of .

ACE_UINT32 total_size_
 Total number of elements in this->search_structure_.

ACE_UINT32 cur_size_
 Current size of the map.

ACE_Map_Entry<EXT_ID, INT_ID> free_list_
 Free list.

ACE_Map_Entry<EXT_ID, INT_ID> occupied_list_
 Occupied list.


Private Methods

void operator= (const ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> &)
 ACE_Map_Manager (const ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> &)

Friends

class  ACE_Map_Iterator_Base< EXT_ID,INT_ID,ACE_LOCK >
class  ACE_Map_Const_Iterator_Base< EXT_ID,INT_ID,ACE_LOCK >
class  ACE_Map_Iterator< EXT_ID,INT_ID,ACE_LOCK >
class  ACE_Map_Const_Iterator< EXT_ID,INT_ID,ACE_LOCK >
class  ACE_Map_Reverse_Iterator< EXT_ID,INT_ID,ACE_LOCK >

Detailed Description

template<class EXT_ID, class INT_ID, class ACE_LOCK> template class ACE_Map_Manager

Define a map abstraction that associates <EXT_ID>s with <INT_ID>s.

The <EXT_ID> must support <operator==>. This constraint can be alleviated via template specialization, as shown in the $ACE_ROOT/tests/Conn_Test.cpp test. This class uses an to allocate memory. The user can make this a persistant class by providing an with a persistable memory pool. This implementation of a map uses an array, which is searched linearly. For more efficient searching you should use the .


Member Typedef Documentation

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::CONST_ITERATOR
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ENTRY
 

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ITERATOR
 

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef EXT_ID ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::KEY
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::REVERSE_ITERATOR
 

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef INT_ID ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::VALUE
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::const_iterator
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::iterator
 

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
typedef ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::reverse_iterator
 

Reimplemented in ACE_Active_Map_Manager.


Member Enumeration Documentation

template<classEXT_ID, classINT_ID, classACE_LOCK>
anonymous enum [protected]
 

Enumeration values:
MAX_EXPONENTIAL   Grow map exponentially up to 64K.
LINEAR_INCREASE   Afterwards grow in chunks of 32K.


Constructor & Destructor Documentation

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> ( ACE_Allocator * alloc = 0 )
 

Initialize a <Map_Manager> with the .

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> ( size_t size,
ACE_Allocator * alloc = 0 )
 

Initialize a <Map_Manager> with <size> entries.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::~ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> ( void )
 

Close down a <Map_Manager> and release dynamically allocated resources.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> ( const ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >& ) [private]
 


Member Function Documentation

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Iterator< EXT_ID,INT_ID,ACE_LOCK > ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::begin ( void )
 

Return forward iterator.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::bind ( const EXT_ID & ext_id,
const INT_ID & int_id )
 

Associate <ext_id> with <int_id>. If <ext_id> is already in the map then the <Map_Entry> is not changed. Returns 0 if a new entry is bound successfully, returns 1 if an attempt is made to bind an existing entry, and returns -1 if failures occur.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::bind_i ( const EXT_ID & ext_id,
const INT_ID & int_id ) [protected]
 

Performs the binding of <ext_id> to <int_id>. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::close ( void )
 

Close down a <Map_Manager> and release dynamically allocated resources.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::close_i ( void ) [protected]
 

Close down a <Map_Manager>. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE size_t ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::current_size ( void ) const
 

Return the current size of the map.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::dump ( void ) const
 

Dump the state of an object.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Iterator< EXT_ID,INT_ID,ACE_LOCK > ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::end ( void )
 

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::equal ( const EXT_ID & id1,
const EXT_ID & id2 ) [protected]
 

Returns 1 if <id1> == <id2>, else 0. This is defined as a separate method to facilitate template specialization.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::find ( const EXT_ID & ext_id ) const
 

Returns 0 if the <ext_id> is in the mapping, otherwise -1.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::find ( const EXT_ID & ext_id,
INT_ID & int_id ) const
 

Locate <ext_id> and pass out parameter via <int_id>. Returns 0 if found, returns -1 if not found.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::find_and_return_index ( const EXT_ID & ext_id,
ACE_UINT32 & slot ) [protected]
 

Performs a find using <ext_id> as the key. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::find_i ( const EXT_ID & ext_id,
INT_ID & int_id ) [protected]
 

Performs a find of <int_id> using <ext_id> as the key. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_UINT32 ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::free_list_id ( void ) const [protected]
 

Id of the free list sentinel.

template<classEXT_ID, classINT_ID, classACE_LOCK>
void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::free_search_structure ( void ) [protected]
 

Explicitly call the destructors and free up the <search_structure_>.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE void ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::move_from_free_list_to_occupied_list ( ACE_UINT32 slot ) [protected]
 

Move from free list to occupied list.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE void ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::move_from_occupied_list_to_free_list ( ACE_UINT32 slot ) [protected]
 

Move from occupied list to free list.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_LOCK & ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::mutex ( void )
 

Returns a reference to the underlying . This makes it possible to acquire the lock explicitly, which can be useful in some cases if you instantiate the with an or , or if you need to guard the state of an iterator. NOTE: the right name would be <lock>, but HP/C++ will choke on that!

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_UINT32 ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::new_size ( void ) [protected]
 

This function returns the new size of the Map Manager. This function is called when we run out of room and need to resize.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::next_free ( ACE_UINT32 & slot ) [protected]
 

Finds the next free slot.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_UINT32 ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::occupied_list_id ( void ) const [protected]
 

Id of the occupied list sentinel.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::open ( size_t length = ACE_DEFAULT_MAP_SIZE,
ACE_Allocator * alloc = 0 )
 

Initialize a <Map_Manager> with size <length>.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::operator= ( const ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >& ) [private]
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Reverse_Iterator< EXT_ID,INT_ID,ACE_LOCK > ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::rbegin ( void )
 

Return reverse iterator.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::rebind ( const EXT_ID & ext_id,
const INT_ID & int_id )
 

Reassociate <ext_id> with <int_id>. Old values in the map are ignored.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::rebind ( const EXT_ID & ext_id,
const INT_ID & int_id,
INT_ID & old_int_id )
 

Reassociate <ext_id> with <int_id>. If <ext_id> is not in the map then behaves just like <bind>. Otherwise, store the old values of <int_id> into the "out" parameter and rebind the new parameters. Returns 0 if a new entry is bound successfully, returns 1 if an existing entry was rebound, and returns -1 if failures occur.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::rebind ( const EXT_ID & ext_id,
const INT_ID & int_id,
EXT_ID & old_ext_id,
INT_ID & old_int_id )
 

Reassociate <ext_id> with <int_id>. If <ext_id> is not in the map then behaves just like <bind>. Otherwise, store the old values of <ext_id> and <int_id> into the "out" parameters and rebind the new parameters. This is very useful if you need to have an atomic way of updating <Map_Entries> and you also need full control over memory allocation. Returns 0 if a new entry is bound successfully, returns 1 if an existing entry was rebound, and returns -1 if failures occur.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::rebind_i ( const EXT_ID & ext_id,
const INT_ID & int_id ) [protected]
 

Performs a rebinding of <ext_it> to <int_id>. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::rebind_i ( const EXT_ID & ext_id,
const INT_ID & int_id,
INT_ID & old_int_id ) [protected]
 

Performs a rebinding of <ext_it> to <int_id>. Also, recovers old values. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::rebind_i ( const EXT_ID & ext_id,
const INT_ID & int_id,
EXT_ID & old_ext_id,
INT_ID & old_int_id ) [protected]
 

Performs a rebinding of <ext_it> to <int_id>. Also, recovers old values. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE ACE_Map_Reverse_Iterator< EXT_ID,INT_ID,ACE_LOCK > ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::rend ( void )
 

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::resize_i ( ACE_UINT32 size ) [protected]
 

Resize the map. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::shared_bind ( const EXT_ID & ext_id,
const INT_ID & int_id ) [protected]
 

Bind an entry (without finding first). Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::shared_move ( ACE_UINT32 slot,
ACE_Map_Entry< EXT_ID,INT_ID >& current_list,
ACE_UINT32 current_list_id,
ACE_Map_Entry< EXT_ID,INT_ID >& new_list,
ACE_UINT32 new_list_id ) [protected]
 

Move helper.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE size_t ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::total_size ( void ) const
 

Return the total size of the map.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::trybind ( const EXT_ID & ext_id,
INT_ID & int_id )
 

Associate <ext_id> with <int_id> if and only if <ext_id> is not in the map. If <ext_id> is already in the map then the <int_id> parameter is overwritten with the existing value in the map Returns 0 if a new entry is bound successfully, returns 1 if an attempt is made to bind an existing entry, and returns -1 if failures occur.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::trybind_i ( const EXT_ID & ext_id,
INT_ID & int_id ) [protected]
 

Performs a conditional bind of <int_id> using <ext_id> as the key. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::unbind ( const EXT_ID & ext_id,
INT_ID & int_id )
 

Break any association of <ext_id>. Returns the value of <int_id> in case the caller needs to deallocate memory. Returns 0 if successful, else -1.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::unbind ( const EXT_ID & ext_id )
 

Unbind (remove) the <ext_id> from the map. Don't return the <int_id> to the caller (this is useful for collections where the <int_id>s are *not* dynamically allocated...) Returns 0 if successful, else -1.

template<classEXT_ID, classINT_ID, classACE_LOCK>
void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::unbind_all ( void )
 

Unbind all entires.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::unbind_and_return_index ( const EXT_ID & ext_id,
ACE_UINT32 & slot ) [protected]
 

Performs an unbind using <ext_id> as the key. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID,INT_ID,ACE_LOCK >::unbind_i ( const EXT_ID & ext_id ) [protected]
 

Performs an unbind using <ext_id> as the key. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::unbind_i ( const EXT_ID & ext_id,
INT_ID & int_id ) [protected]
 

Performs an unbind of <int_id> using <ext_id> as the key. Must be called with locks held.

template<classEXT_ID, classINT_ID, classACE_LOCK>
void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::unbind_slot ( ACE_UINT32 slot ) [protected]
 

Unbind <slot>.


Friends And Related Function Documentation

template<classEXT_ID, classINT_ID, classACE_LOCK>
class ACE_Map_Const_Iterator [friend]
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
class ACE_Map_Const_Iterator_Base [friend]
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
class ACE_Map_Iterator [friend]
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
class ACE_Map_Iterator_Base [friend]
 

template<classEXT_ID, classINT_ID, classACE_LOCK>
class ACE_Map_Reverse_Iterator [friend]
 


Member Data Documentation

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Reimplemented in ACE_Active_Map_Manager.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_Allocator * ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::allocator_ [protected]
 

Pointer to a memory allocator.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_UINT32 ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::cur_size_ [protected]
 

Current size of the map.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_Map_Entry< EXT_ID,INT_ID > ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::free_list_ [protected]
 

Free list.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_LOCK ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::lock_ [protected]
 

Synchronization variable for the MT_SAFE .

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_Map_Entry< EXT_ID,INT_ID > ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::occupied_list_ [protected]
 

Occupied list.

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_Map_Entry< EXT_ID,INT_ID >* ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::search_structure_ [protected]
 

Implement the Map as a resizeable array of .

template<classEXT_ID, classINT_ID, classACE_LOCK>
ACE_UINT32 ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::total_size_ [protected]
 

Total number of elements in this->search_structure_.


The documentation for this class was generated from the following files:
Generated at Sat Dec 1 11:02:54 2001 for ACE by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000