| ACE
    6.3.4
    | 
Define a map abstraction that associates EXT_IDs with INT_IDs. More...
#include <Map_Manager.h>

| Public Types | |
| typedef EXT_ID | KEY | 
| typedef INT_ID | VALUE | 
| typedef ACE_LOCK | lock_type | 
| 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 Member Functions | |
| ACE_Map_Manager (ACE_Allocator *alloc=0) | |
| Initialize a ACE_Map_Manager with the ACE_DEFAULT_MAP_SIZE.  More... | |
| ACE_Map_Manager (size_t size, ACE_Allocator *alloc=0) | |
| Initialize a ACE_Map_Manager with size entries.  More... | |
| int | open (size_t length=ACE_DEFAULT_MAP_SIZE, ACE_Allocator *alloc=0) | 
| Initialize a ACE_Map_Manager with size length.  More... | |
| int | close (void) | 
| ~ACE_Map_Manager (void) | |
| 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) | 
| int | trybind (const EXT_ID &ext_id, INT_ID &int_id) | 
| int | find (const EXT_ID &ext_id, INT_ID &int_id) const | 
| int | find (const EXT_ID &ext_id) const | 
| Returns 0 if the ext_id is in the mapping, otherwise -1.  More... | |
| 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.  More... | |
| size_t | total_size (void) const | 
| Return the total size of the map.  More... | |
| ACE_LOCK & | mutex (void) | 
| void | dump (void) const | 
| Dump the state of an object.  More... | |
| ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK > | begin (void) | 
| Return forward iterator.  More... | |
| 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.  More... | |
| ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK > | rend (void) | 
| Public Attributes | |
| ACE_ALLOC_HOOK_DECLARE | |
| Declare the dynamic allocation hooks.  More... | |
| Protected Types | |
| enum | { MAX_EXPONENTIAL = 64 * 1024, LINEAR_INCREASE = 32 * 1024 } | 
| Protected Member Functions | |
| int | bind_i (const EXT_ID &ext_id, const INT_ID &int_id) | 
| int | shared_bind (const EXT_ID &ext_id, const INT_ID &int_id) | 
| int | rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id) | 
| int | rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id) | 
| int | rebind_i (const EXT_ID &ext_id, const INT_ID &int_id) | 
| int | trybind_i (const EXT_ID &ext_id, INT_ID &int_id) | 
| int | find_i (const EXT_ID &ext_id, INT_ID &int_id) | 
| int | find_and_return_index (const EXT_ID &ext_id, ACE_UINT32 &slot) | 
| int | unbind_i (const EXT_ID &ext_id, INT_ID &int_id) | 
| int | unbind_i (const EXT_ID &ext_id) | 
| int | unbind_and_return_index (const EXT_ID &ext_id, ACE_UINT32 &slot) | 
| void | unbind_slot (ACE_UINT32 slot) | 
| Unbind slot.  More... | |
| int | resize_i (ACE_UINT32 size) | 
| Resize the map. Must be called with locks held.  More... | |
| int | close_i (void) | 
| Close down a <Map_Manager>. Must be called with locks held.  More... | |
| int | equal (const EXT_ID &id1, const EXT_ID &id2) | 
| ACE_UINT32 | new_size (void) | 
| void | free_search_structure (void) | 
| ACE_UINT32 | free_list_id (void) const | 
| Id of the free list sentinel.  More... | |
| ACE_UINT32 | occupied_list_id (void) const | 
| Id of the occupied list sentinel.  More... | |
| int | next_free (ACE_UINT32 &slot) | 
| Finds the next free slot.  More... | |
| void | move_from_free_list_to_occupied_list (ACE_UINT32 slot) | 
| Move from free list to occupied list.  More... | |
| void | move_from_occupied_list_to_free_list (ACE_UINT32 slot) | 
| Move from occupied list to free list.  More... | |
| void | shared_move (ACE_UINT32 slot, ACE_Map_Entry< EXT_ID, INT_ID > ¤t_list, ACE_UINT32 current_list_id, ACE_Map_Entry< EXT_ID, INT_ID > &new_list, ACE_UINT32 new_list_id) | 
| Move helper.  More... | |
| Protected Attributes | |
| ACE_Allocator * | allocator_ | 
| Pointer to a memory allocator.  More... | |
| ACE_LOCK | lock_ | 
| Synchronization variable for the MT_SAFE ACE_Map_Manager.  More... | |
| ACE_Map_Entry< EXT_ID, INT_ID > * | search_structure_ | 
| Implement the Map as a resizeable array of ACE_Map_Entry.  More... | |
| ACE_UINT32 | total_size_ | 
| Total number of elements in this->search_structure_.  More... | |
| ACE_UINT32 | cur_size_ | 
| Current size of the map.  More... | |
| ACE_Map_Entry< EXT_ID, INT_ID > | free_list_ | 
| Free list.  More... | |
| ACE_Map_Entry< EXT_ID, INT_ID > | occupied_list_ | 
| Occupied list.  More... | |
| Private Member Functions | |
| 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 > &) | |
Define a map abstraction that associates EXT_IDs with INT_IDs.
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 ACE_Allocator to allocate memory. The user can make this a persistant class by providing an ACE_Allocator 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 ACE_Hash_Map_Manager. 
| typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::CONST_ITERATOR | 
| typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::const_iterator | 
| typedef ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ENTRY | 
| typedef ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ITERATOR | 
| typedef ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::iterator | 
| typedef EXT_ID ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::KEY | 
| typedef ACE_LOCK ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::lock_type | 
| typedef ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::REVERSE_ITERATOR | 
| typedef ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::reverse_iterator | 
| typedef INT_ID ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::VALUE | 
| 
 | protected | 
| 
 | inline | 
Initialize a ACE_Map_Manager with the ACE_DEFAULT_MAP_SIZE.
| 
 | inline | 
Initialize a ACE_Map_Manager with size entries.
| 
 | inline | 
Close down a ACE_Map_Manager and release dynamically allocated resources.
| 
 | private | 
| 
 | inline | 
Return forward iterator.
| 
 | inline | 
Associate ext_id with int_id. If ext_id is already in the map then the ACE_Map_Entry is not changed.
| 0 | If a new entry is bound successfully. | 
| 1 | If an attempt is made to bind an existing entry. | 
| -1 | If failures occur. | 
| 
 | protected | 
Performs the binding of ext_id to int_id. Must be called with locks held.
| 
 | inline | 
Close down a ACE_Map_Manager and release dynamically allocated resources.
| 
 | protected | 
Close down a <Map_Manager>. Must be called with locks held.
| 
 | inline | 
Return the current size of the map.
| void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::dump | ( | void | ) | const | 
Dump the state of an object.
| 
 | inline | 
| 
 | inlineprotected | 
Returns 1 if <id1> == <id2>, else 0. This is defined as a separate method to facilitate template specialization.
| 
 | inline | 
Locate ext_id and pass out parameter via int_id.
| 0 | If found. | 
| -1 | If not found. | 
| 
 | inline | 
Returns 0 if the ext_id is in the mapping, otherwise -1.
| 
 | protected | 
Performs a find using ext_id as the key. Must be called with locks held.
| 
 | protected | 
Performs a find of int_id using ext_id as the key. Must be called with locks held.
| 
 | inlineprotected | 
Id of the free list sentinel.
| 
 | protected | 
Explicitly call the destructors and free up the <search_structure_>.
| 
 | inlineprotected | 
Move from free list to occupied list.
| 
 | inlineprotected | 
Move from occupied list to free list.
| 
 | inline | 
Returns a reference to the underlying ACE_LOCK. This makes it possible to acquire the lock explicitly, which can be useful in some cases if you instantiate the ACE_Atomic_Op with an ACE_Recursive_Mutex or ACE_Process_Mutex, or if you need to guard the state of an iterator.
| 
 | 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.
| 
 | protected | 
Finds the next free slot.
| 
 | inlineprotected | 
Id of the occupied list sentinel.
| class ACE_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 ACE_Map_Manager with size length.
| 
 | private | 
| 
 | inline | 
Return reverse iterator.
| 
 | inline | 
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.
| 0 | If a new entry is bound successfully. | 
| 1 | If an existing entry was rebound. | 
| -1 | If failures occur. | 
| 
 | inline | 
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.
| 0 | If a new entry is bound successfully. | 
| 1 | If an existing entry was rebound. | 
| -1 | If failures occur. | 
| 
 | inline | 
Reassociate ext_id with int_id. Old values in the map are ignored.
| 
 | protected | 
Performs a rebinding of <ext_it> to int_id. Also, recovers old values. Must be called with locks held.
| 
 | protected | 
Performs a rebinding of <ext_it> to int_id. Also, recovers old values. Must be called with locks held.
| 
 | protected | 
Performs a rebinding of <ext_it> to int_id. Must be called with locks held.
| 
 | inline | 
| 
 | protected | 
Resize the map. Must be called with locks held.
| 
 | protected | 
Bind an entry (without finding first). Must be called with locks held.
| 
 | protected | 
Move helper.
| 
 | inline | 
Return the total size of the map.
| 
 | inline | 
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
| 0 | If a new entry is bound successfully. | 
| 1 | If an attempt is made to bind an existing entry. | 
| -1 | If failures occur. | 
| 
 | protected | 
Performs a conditional bind of int_id using ext_id as the key. Must be called with locks held.
| 
 | inline | 
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_ids are not dynamically allocated...) Returns 0 if successful, else -1.
| 
 | inline | 
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.
| void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_all | ( | void | ) | 
Unbind all entires.
| 
 | protected | 
Performs an unbind using ext_id as the key. Must be called with locks held.
| 
 | protected | 
Performs an unbind of int_id using ext_id as the key. Must be called with locks held.
| 
 | inlineprotected | 
Performs an unbind using ext_id as the key. Must be called with locks held.
| 
 | protected | 
Unbind slot.
| 
 | friend | 
| 
 | friend | 
| 
 | friend | 
| 
 | friend | 
| 
 | friend | 
| ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE | 
Declare the dynamic allocation hooks.
| 
 | protected | 
Pointer to a memory allocator.
| 
 | protected | 
Current size of the map.
| 
 | protected | 
Free list.
| 
 | mutableprotected | 
Synchronization variable for the MT_SAFE ACE_Map_Manager.
| 
 | protected | 
Occupied list.
| 
 | protected | 
Implement the Map as a resizeable array of ACE_Map_Entry.
| 
 | protected | 
Total number of elements in this->search_structure_.
 1.8.9.1
 1.8.9.1