## NAME

ACE_Active_Map_Manager - Define a map abstraction that associates system generated keys with user specified values.

## SYNOPSIS

    #include <ace/Active_Map_Manager_T.h>

    template<class T>
    class ACE_Active_Map_Manager :
      public ACE_Map_Manager<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex>
    {
      public:
        typedef ACE_Active_Map_Manager_Key key_type;
        typedef T mapped_type;
        typedef ACE_Map_Entry<ACE_Active_Map_Manager_Key, T> ENTRY;
            typedef ACE_Map_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> ITERATOR;

            typedef ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> REVERSE_ITERATOR;

        typedef ENTRY entry;
        typedef ITERATOR iterator;
        typedef REVERSE_ITERATOR reverse_iterator;
        ACE_Active_Map_Manager (ACE_Allocator *alloc = 0);
        ACE_Active_Map_Manager (size_t size, ACE_Allocator *alloc = 0);
        ~ACE_Active_Map_Manager (void);
        int open (
            size_t length = ACE_DEFAULT_MAP_SIZE,
            ACE_Allocator *alloc = 0
            );
        int close (void);
        int bind (const T &value, ACE_Active_Map_Manager_Key &key);
        int bind (const T &value);
        int bind (ACE_Active_Map_Manager_Key &key, T *&internal_value);
        int rebind (
            const ACE_Active_Map_Manager_Key &key,
            const T &value
            );
        int rebind (
            const ACE_Active_Map_Manager_Key &key,
            const T &value,
            T &old_value
            );
        int rebind (
            const ACE_Active_Map_Manager_Key &key,
            const T &value,
            ACE_Active_Map_Manager_Key &old_key,
            T &old_value
            );
        int find (const ACE_Active_Map_Manager_Key &key, T &value);
        int find (const ACE_Active_Map_Manager_Key &key);
        int find (
            const ACE_Active_Map_Manager_Key &key,
            T *&internal_value
            );
        int unbind (const ACE_Active_Map_Manager_Key &key);
        int unbind (const ACE_Active_Map_Manager_Key &key, T &value);
        int unbind (
            const ACE_Active_Map_Manager_Key &key,
            T *&internal_value
            );
        size_t current_size (void) const;
        size_t total_size (void) const;
        static const ACE_Active_Map_Manager_Key npos (void);
        void dump (void) const;
        ACE_Map_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> begin (
            void
            );
        ACE_Map_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> end (
            void
            );
        ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> rbegin (
            void
            );
        ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> rend (
            void
            );
        ACE_ALLOC_HOOK_DECLARE;
      protected:
            typedef ACE_Map_Manager<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> ACE_AMM_BASE;

      private:
        inline ACE_UNIMPLEMENTED_FUNC (
            void operator= (const ACE_Active_Map_Manager<T> &)
            );
    };

## DESCRIPTION

Since the key is system generated, searches are very fast and take a constant amount of time.

## Traits.

    typedef ACE_Active_Map_Manager_Key key_type;

    typedef T mapped_type;

    typedef ACE_Map_Entry<ACE_Active_Map_Manager_Key, T> ENTRY;

        typedef ACE_Map_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> ITERATOR;

        typedef ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> REVERSE_ITERATOR;

    typedef ENTRY entry;

    typedef ITERATOR iterator;

    typedef REVERSE_ITERATOR reverse_iterator;

## Initialization and termination methods.

    ACE_Active_Map_Manager (ACE_Allocator *alloc = 0);

Initialize a `Active_Map_Manager` with the `ACE_DEFAULT_MAP_SIZE`.

    ACE_Active_Map_Manager (size_t size, ACE_Allocator *alloc = 0);

Initialize a `Active_Map_Manager` with `size` entries.

    ~ACE_Active_Map_Manager (void);

Close down a `Active_Map_Manager` and release dynamically allocated resources.

    int open (
        size_t length = ACE_DEFAULT_MAP_SIZE,
        ACE_Allocator *alloc = 0
        );

Initialize a `Active_Map_Manager` with size `length`.

    int close (void);

Close down a `Active_Map_Manager` and release dynamically allocated resources.

    int bind (const T &value, ACE_Active_Map_Manager_Key &key);

Add `value` to the map, and the corresponding key produced by the Active_Map_Manager is returned through `key`.

    int bind (const T &value);

Add `value` to the map. The user does not care about the corresponding key produced by the Active_Map_Manager.

    int bind (ACE_Active_Map_Manager_Key &key, T *&internal_value);

Reserves a slot in the internal structure and returns the key and a pointer to the value. User should place their `value` into `*internal_value`. This method is useful in reducing the number of copies required in some cases. Note that `internal_value` is only a temporary pointer and will change when the map resizes. Therefore, the user should use the pointer immediately and not hold on to it.

    int rebind (const ACE_Active_Map_Manager_Key &key, const T &value);

Reassociate `key` with `value`. The function fails if `key` is not in the map.

    int rebind (
        const ACE_Active_Map_Manager_Key &key,
        const T &value,
        T &old_value
        );

Reassociate `key` with `value`, storing the old value into the "out" parameter `old_value`. The function fails if `key` is not in the map.

    int rebind (
        const ACE_Active_Map_Manager_Key &key,
        const T &value,
        ACE_Active_Map_Manager_Key &old_key,
        T &old_value
        );

Reassociate `key` with `value`, storing the old key and value into the "out" parameter `old_key` and `old_value`. The function fails if `key` is not in the map.

    int find (const ACE_Active_Map_Manager_Key &key, T &value);

Locate `value` associated with `key`.

    int find (const ACE_Active_Map_Manager_Key &key);

Is `key` in the map?

    int find (const ACE_Active_Map_Manager_Key &key, T *&internal_value);

Locate `value` associated with `key`. The value is returned via `internal_value` and hence a copy is saved. Note that `internal_value` is only a temporary pointer and will change when the map resizes. Therefore, the user should use the pointer immediately and not hold on to it.

Creates a key. User should place their `value` into `*internal_value`. This method is useful in reducing the number of copies required in some cases.

    int unbind (const ACE_Active_Map_Manager_Key &key);

Remove `key` from the map.

    int unbind (const ACE_Active_Map_Manager_Key &key, T &value);

Remove `key` from the map, and return the `value` associated with `key`.

    int unbind (
        const ACE_Active_Map_Manager_Key &key,
        T *&internal_value
        );

Locate `value` associated with `key`. The value is returned via `internal_value` and hence a copy is saved. Note that `internal_value` is only a temporary pointer and will change when the map resizes or when this slot is reused. Therefore, the user should use the pointer immediately and not hold on to it.

    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.

    static const ACE_Active_Map_Manager_Key npos (void);

Returns a key that cannot be found in the map.

    void dump (void) const;

Dump the state of an object.

## STL styled iterator factory functions.

    ACE_Map_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> begin (
        void
        );

    ACE_Map_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> end (
        void
        );

Return forward iterator.

    ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> rbegin (
        void
        );

    ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, T, ACE_Null_Mutex> rend (
        void
        );

Return reverse iterator.

    ACE_ALLOC_HOOK_DECLARE;

Declare the dynamic allocation hooks.

## Disallow these operations.

    inline ACE_UNIMPLEMENTED_FUNC (
        void operator= (const ACE_Active_Map_Manager<T> &)
        );

## AUTHOR

Irfan Pyarali

## LIBRARY

ace