| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | List of all members
GaudiUtils::HashMap< K, T, H, M > Class Template Reference

Common class providing an architecture-independent hash map. More...

`#include <GaudiKernel/HashMap.h>`

Inheritance diagram for GaudiUtils::HashMap< K, T, H, M >:
[legend]
Collaboration diagram for GaudiUtils::HashMap< K, T, H, M >:
[legend]

## Public Types
typedef H | hasher
Public Types inherited from GaudiUtils::Map< K, T, M >
typedef M | map_type
typedef K | key_type
typedef T | mapped_type
typedef K | argument_type
typedef T | result_type
typedef std::pair< const K, T > | value_type
typedef const value_type & | const_reference
typedef map_type::size_type | size_type
typedef map_type::iterator | iterator
typedef map_type::const_iterator | const_iterator

## Public Member Functions
hasher | hash_funct () const
Public Member Functions inherited from GaudiUtils::Map< K, T, M >
| Map ()=default
| Standard constructor. More...
| Map (const map_type &other)
| Constructor from a standard map. More...
template<typename In >
| Map (In &&first, In &&last)
| Construct from a subset. More...
virtual | ~Map ()=default
| Virtual destructor. You can inherit from this map type. More...
iterator | begin ()
iterator | end ()
const_iterator | begin () const
const_iterator | end () const
mapped_type & | operator[] (const key_type &key)
iterator | find (const key_type &key)
const_iterator | find (const key_type &key) const
size_type | count (const key_type &key) const
iterator | lower_bound (const key_type &key)
const_iterator | lower_bound (const key_type &key) const
iterator | upper_bound (const key_type &key)
const_iterator | upper_bound (const key_type &key) const
std::pair< iterator, iterator > | equal_range (const key_type &key)
std::pair< const_iterator, const_iterator > | equal_range (const key_type &key) const
template<class... Args>
std::pair< iterator, bool > | emplace (Args &&...args)
template<typename ValueType >
std::pair< iterator, bool > | insert (ValueType &&val)
std::pair< iterator, bool > | insert (value_type &&val)
template<typename In >
void | insert (In &&first, In &&last)
template<typename ValueType >
iterator | insert (iterator, ValueType &&val)
iterator | erase (const_iterator pos)
size_type | erase (const key_type &key)
iterator | erase (const_iterator first, const_iterator last)
void | clear ()
size_type | size () const
size_type | max_size () const
bool | empty () const
void | swap (map_type &other)
const result_type & | operator() (const argument_type &key) const
| Allow to use Map as an unary function. More...
const mapped_type & | operator[] (const key_type &key) const
| Access elements of a const Map. More...
const result_type & | at (const argument_type &key) const
  | checked access to the map Exceptions
  std::out_of_range | for missing keys
More...
Map & | merge (const map_type &other)
| Merge two maps. More...
Map & | merge (const Map &other)
| Merge two maps. More...
template<class K1 , class K2 , class K3 >
Map & | merge (const Map< K1, K2, K3 > &other)
| Merge two maps. More...
void | update (const key_type &key, const mapped_type &mapped)
| operator map_type & ()
| Allows to use the Map wherever an std::map is explicitly requested. More...
| operator const map_type & () const
const key_type & | key_at (const size_type index) const
| useful method for python decoration: More...
const mapped_type & | value_at (const size_type index) const
| useful method for python decoration: More...
Public Member Functions inherited from Gaudi::Utils::MapBase
virtual | ~MapBase ()
| virtual destructor More...

## Additional Inherited Members
Protected Member Functions inherited from Gaudi::Utils::MapBase
void | throw_out_of_range_exception () const
| throw std::out_of_range exception More...
Protected Attributes inherited from GaudiUtils::Map< K, T, M >
map_type | m_map
Static Protected Attributes inherited from GaudiUtils::Map< K, T, M >
static const result_type | s_null_value = typename Map<K,T,M>::result_type()

## Detailed Description

### template<typename K, typename T, typename H = Hash<K>, typename M = std::unordered_map<K,T,H>>
class GaudiUtils::HashMap< K, T, H, M >

Common class providing an architecture-independent hash map.

Due to helper base class Gaudi::Utils::MapBase, this class is "python-friendly", and one can perform all python manipulaitons in intuitive way:

>>> m = ... ## get the map
>>> print m ## print the map a'la python class dict
...
>>> for key in m : print key, m[key] ## iteration over the map
...
>>> for key,value in m.iteritems() : print key, value
...
>>> keys = m.keys() ## get the list of keys
>>> values = m.values () ## get the list of values
>> items = m.items () ## get the list of items
>>> if 'one' in m ## check the presence of the key in map
>>> v = m.get(key', None) ## return m[key] for existing key, else None
>>> del m[key] ## erase the key form the map
>>> value m[key] ## unchecked access through the key
...
>>> m.update( key, value ) ## update/insert key/value pair

Attention
  One needs to redfine `__setitem__` and `__getitem__` methods in python:

>>> type(m).__setitem__ = Gaudi.Utils.MapBase.__setitem__
>>> type(m).__getitem__ = Gaudi.Utils.MapBase.__getitem__
>>> m[key] = value ## much more intuitive semantics for key insertion

In a similar way `__delitem__` methods can be redefined.

Warning
  To bypass some compilation problme (and to avoid the unnesessary expansion of dictionaries) it is nesessary to exclude from dictionary the following methods:
  - lower_bound
  - upper_bound
  - equal_range
  - insert

See also
  Gaudi::Utils::MapBase

Author
  Marco Clemencic

Date
  2005-10-06

Definition at line 77 of file HashMap.h.

## Member Typedef Documentation

template<typename K, typename T, typename H = Hash<K>, typename M = std::unordered_map<K,T,H>>

typedef H GaudiUtils::HashMap< K, T, H, M >::hasher

Definition at line 79 of file HashMap.h.

## Member Function Documentation

template<typename K, typename T, typename H = Hash<K>, typename M = std::unordered_map<K,T,H>>

hasher GaudiUtils::HashMap< K, T, H, M >::hash_funct | ( |  | ) | const
| inline

Definition at line 80 of file HashMap.h.

80 { return this->m_map.hash_funct(); }
GaudiUtils::Map::m_map
map_type m_map
Definition: Map.h:106

The documentation for this class was generated from the following file:

- GaudiKernel/GaudiKernel/HashMap.h