Reference

ACE_Map(3)

Defines a map interface.

NAME

ACE_Map - Defines a map interface.

SYNOPSIS

#include <ace/Map_T.h>
template<class KEY, class VALUE>
class ACE_Map
{
  public:
    typedef KEY  key_type;
    typedef VALUE  mapped_type;
    typedef ACE_Reference_Pair<const KEY, VALUE>  value_type;
    typedef ACE_Iterator<value_type>  iterator;
    typedef ACE_Reverse_Iterator<value_type>  reverse_iterator;
    typedef ACE_Iterator_Impl<value_type>  iterator_implementation;
        typedef ACE_Reverse_Iterator_Impl<value_type>  reverse_iterator_implementation;
        
    virtual ~ACE_Map (void);
    virtual int open (
        size_t length = ACE_DEFAULT_MAP_SIZE,
        ACE_Allocator *alloc = 0
        ) = 0;
    virtual int close (void) = 0;
    virtual int bind (const KEY &key, const VALUE &value) = 0;
    virtual int bind_modify_key (const VALUE &value, KEY &key) = 0;
    virtual int bind_create_key (const VALUE &value, KEY &key) = 0;
    virtual int bind_create_key (const VALUE &value) = 0;
    virtual int recover_key (
        const KEY &modified_key,
        KEY &original_key
        ) = 0;
    virtual int rebind (const KEY &key, const VALUE &value) = 0;
    virtual int rebind (
        const KEY &key,
        const VALUE &value,
        VALUE &old_value
        ) = 0;
    virtual int rebind (
        const KEY &key,
        const VALUE &value,
        KEY &old_key,
        VALUE &old_value
        ) = 0;
    virtual int trybind (const KEY &key, VALUE &value) = 0;
    virtual int find (const KEY &key, VALUE &value) = 0;
    virtual int find (const KEY &key) = 0;
    virtual int unbind (const KEY &key) = 0;
    virtual int unbind (const KEY &key, VALUE &value) = 0;
    virtual size_t current_size (void) const = 0;
    virtual size_t total_size (void) const = 0;
    virtual void dump (void) const = 0;
    iterator begin (void);
    iterator end (void);
    reverse_iterator rbegin (void);
    reverse_iterator rend (void);
  protected:
    ACE_Map (void);
    virtual ACE_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *begin_impl (
        void
        ) = 0;
    virtual ACE_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *end_impl (
        void
        ) = 0;
    virtual ACE_Reverse_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *rbegin_impl (
        void
        ) = 0;
    virtual ACE_Reverse_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *rend_impl (
        void
        ) = 0;
  private:
    inline ACE_UNIMPLEMENTED_FUNC (
        void operator= (const ACE_Map<KEY, VALUE> &)
        );
};

DESCRIPTION

Implementation to be provided by subclasses.

Traits.

typedef KEY  key_type;

typedef VALUE  mapped_type;

typedef ACE_Reference_Pair<const KEY, VALUE>  value_type;

typedef ACE_Iterator<value_type>  iterator;

typedef ACE_Reverse_Iterator<value_type>  reverse_iterator;

typedef ACE_Iterator_Impl<value_type>  iterator_implementation;

    typedef ACE_Reverse_Iterator_Impl<value_type>  reverse_iterator_implementation;
    

virtual ~ACE_Map (void);

Close down and release dynamically allocated resources.

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

Initialize a Map with size length.

virtual int close (void) = 0;

Close down a Map and release dynamically allocated resources.

virtual int bind (const KEY &key, const VALUE &value) = 0;

Add key/value pair to the map. If key is already in the map then no changes are made and 1 is returned. Returns 0 on a successful addition. This function fails for maps that do not allow user specified keys. key is an "in" parameter.

virtual int bind_modify_key (const VALUE &value, KEY &key) = 0;

Add key/value pair to the map. key is an "inout" parameter and maybe modified/extended by the map to add additional information. To recover original key, call the recover_key method.

virtual int bind_create_key (const VALUE &value, KEY &key) = 0;

Add value to the map, and the corresponding key produced by the Map is returned through key which is an "out" parameter. For maps that do not naturally produce keys, the map adapters will use the KEY_GENERATOR class to produce a key. However, the users are responsible for not jeopardizing this key production scheme by using user specified keys with keys produced by the key generator.

virtual int bind_create_key (const VALUE &value) = 0;

Add value to the map. The user does not care about the corresponding key produced by the Map. For maps that do not naturally produce keys, the map adapters will use the KEY_GENERATOR class to produce a key. However, the users are responsible for not jeopardizing this key production scheme by using user specified keys with keys produced by the key generator.

virtual int recover_key (
    const KEY &modified_key,
    KEY &original_key
    ) = 0;

Recovers the original key potentially modified by the map during bind_modify_key.

virtual int rebind (const KEY &key, const VALUE &value) = 0;

Reassociate key with value. The function fails if key is not in the map for maps that do not allow user specified keys. However, for maps that allow user specified keys, if the key is not in the map, a new key/value association is created.

virtual int rebind (
    const KEY &key,
    const VALUE &value,
    VALUE &old_value
    ) = 0;

Reassociate key with value, storing the old value into the "out" parameter old_value. The function fails if key is not in the map for maps that do not allow user specified keys. However, for maps that allow user specified keys, if the key is not in the map, a new key/value association is created.

virtual int rebind (
    const KEY &key,
    const VALUE &value,
    KEY &old_key,
    VALUE &old_value
    ) = 0;

Reassociate key with value, storing the old key and value into the "out" parameters old_key and old_value. The function fails if key is not in the map for maps that do not allow user specified keys. However, for maps that allow user specified keys, if the key is not in the map, a new key/value association is created.

virtual int trybind (const KEY &key, VALUE &value) = 0;

Associate key with value if and only if key is not in the map. If key is already in the map, then the value parameter is overwritten with the existing value in the map. Returns 0 if a new key/value association is created. Returns 1 if an attempt is made to bind an existing entry. This function fails for maps that do not allow user specified keys.

virtual int find (const KEY &key, VALUE &value) = 0;

Locate value associated with key.

virtual int find (const KEY &key) = 0;

Is key in the map?

virtual int unbind (const KEY &key) = 0;

Remove key from the map.

virtual int unbind (const KEY &key, VALUE &value) = 0;

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

virtual size_t current_size (void) const = 0;

Return the current size of the map.

virtual size_t total_size (void) const = 0;

Return the total size of the map.

virtual void dump (void) const = 0;

Dump the state of an object.

STL styled iterator factory functions.

iterator begin (void);

iterator end (void);

Return forward iterator.

reverse_iterator rbegin (void);

reverse_iterator rend (void);

Return reverse iterator.

Protected no-op constructor.

ACE_Map (void);

virtual ACE_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *begin_impl (
    void
    ) = 0;

virtual ACE_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *end_impl (
    void
    ) = 0;

Return forward iterator.

virtual ACE_Reverse_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *rbegin_impl (
    void
    ) = 0;

virtual ACE_Reverse_Iterator_Impl<ACE_Reference_Pair<const KEY, VALUE> > *rend_impl (
    void
    ) = 0;

Return reverse iterator.

Disallow these operations.

inline ACE_UNIMPLEMENTED_FUNC (
    void operator= (const ACE_Map<KEY, VALUE> &)
    );

AUTHOR

Irfan Pyarali [email protected]

LIBRARY

ace