# ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > Class Template Reference

Define a map abstraction that associates <ext_id>s with <int_id>s. More...

`#include <Map_Manager.h>`

Collaboration diagram for ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >:

[legend]
List of all members.

## 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.
| ACE_Map_Manager (size_t size, ACE_Allocator *alloc=0)
| Initialize a ACE_Map_Manager with size entries.
int | open (size_t length=ACE_DEFAULT_MAP_SIZE, ACE_Allocator *alloc=0)
| Initialize a ACE_Map_Manager with size length.
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.
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 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>.
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)
ACE_UINT32 | new_size (void)
void | free_search_structure (void)
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_Allocator * | allocator_
| Pointer to a memory allocator.
ACE_LOCK | lock_
| Synchronization variable for the MT_SAFE <ace_map_manager>.
ACE_Map_Entry< EXT_ID, INT_ID > * | search_structure_
| Implement the Map as a resizeable array of <ace_map_entry>.
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 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 > &)

## 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>
class ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >

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 <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>.

## Member Typedef Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::const_iterator

template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::CONST_ITERATOR

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef EXT_ID ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::KEY

template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_LOCK ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::lock_type

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef INT_ID ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::VALUE

## Member Enumeration Documentation

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Manager | ( | ACE_Allocator * | alloc = `0` | ) |

| Initialize a ACE_Map_Manager with the ACE_DEFAULT_MAP_SIZE.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Manager | ( | size_t | size,
|  | ACE_Allocator * | alloc = `0`
| ) |

| Initialize a ACE_Map_Manager with size entries.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::~ACE_Map_Manager | ( | void |  | ) |

| Close down a ACE_Map_Manager and release dynamically allocated resources.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Manager | ( | const ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > & |  | ) | `[private]`

## Member Function Documentation

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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 ACE_Map_Entry is not changed.

Return values:

  | 0 | If a new entry is bound successfully.
  | 1 | If an attempt is made to bind an existing entry.
  | -1 | If failures occur.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::close | ( | void |  | ) |

| Close down a ACE_Map_Manager and release dynamically allocated resources. Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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. Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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>.

Return values:

  | 0 | If found.
  | -1 | If not found.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_LOCK & ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::mutex | ( | void |  | ) |

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.

Note:
  The right name would be <lock>, but HP/C++ will choke on that!

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_LOCK>
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::next_free | ( | ACE_UINT32 & | slot | ) | `[protected]`

| Finds the next free slot.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_BEGIN_VERSIONED_NAMESPACE_DECL 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. Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::operator= | ( | const ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > & |  | ) | `[private]`

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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. Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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.

Return values:

  | 0 | If a new entry is bound successfully.
  | 1 | If an existing entry was rebound.
  | -1 | If failures occur.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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.

Return values:

  | 0 | If a new entry is bound successfully.
  | 1 | If an existing entry was rebound.
  | -1 | If failures occur.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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

Return values:

  | 0 | If a new entry is bound successfully.
  | 1 | If an attempt is made to bind an existing entry.
  | -1 | If failures occur.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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. Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_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. Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_all | ( | void |  | ) |

| Unbind all entires.

template<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_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<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK>`[friend]`

template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Const_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK>`[friend]`

template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK>`[friend]`

template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK>`[friend]`

template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK>`[friend]`

## Member Data Documentation

template<class EXT_ID, class INT_ID, class ACE_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< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Allocator* ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::allocator_`[protected]`

| Pointer to a memory allocator.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_UINT32 ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::cur_size_`[protected]`

| Current size of the map.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::free_list_`[protected]`

| Free list.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_LOCK ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::lock_`[mutable, protected]`

| Synchronization variable for the MT_SAFE <ace_map_manager>.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::occupied_list_`[protected]`

| Occupied list.

template<class EXT_ID, class INT_ID, class ACE_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 <ace_map_entry>.

template<class EXT_ID, class INT_ID, class ACE_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:

- Map_Manager.h
- Map_Manager.cpp
- Map_Manager.inl