BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
OrderedMap< Key, Object > Class Template Reference
Inheritance diagram for OrderedMap< Key, Object >:
Collaboration diagram for OrderedMap< Key, Object >:

Public Types

typedef std::pair< Key, Object > entry_t
 
typedef std::list< entry_tlist_t
 
typedef list_t::iterator iterator
 
typedef list_t::const_iterator const_iterator
 
typedef std::unordered_map< Key, iteratormap_t
 

Public Member Functions

 OrderedMap ()
 
virtual ~OrderedMap ()
 
void clear ()
 
const_iterator begin () const
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
size_t size () const
 
bool empty () const
 
void insert (const Key &key, const Object &object)
 
iterator find (const Key &key)
 
const_iterator find (const Key &key) const
 
size_t erase (const Key &key)
 
const Object & value (const Key &key) const
 
const Object & operator[] (const Key &key)
 

Private Attributes

map_t m_map
 
list_t m_list
 

Detailed Description

template<class Key, class Object>
class OrderedMap< Key, Object >

Ordered map which saves the order of insertion.

Definition at line 28 of file OrderedMap.h.

Member Typedef Documentation

◆ entry_t

template<class Key , class Object >
typedef std::pair<Key, Object> OrderedMap< Key, Object >::entry_t

Definition at line 31 of file OrderedMap.h.

◆ list_t

template<class Key , class Object >
typedef std::list<entry_t> OrderedMap< Key, Object >::list_t

Definition at line 32 of file OrderedMap.h.

◆ iterator

template<class Key , class Object >
typedef list_t::iterator OrderedMap< Key, Object >::iterator

Definition at line 33 of file OrderedMap.h.

◆ const_iterator

template<class Key , class Object >
typedef list_t::const_iterator OrderedMap< Key, Object >::const_iterator

Definition at line 34 of file OrderedMap.h.

◆ map_t

template<class Key , class Object >
typedef std::unordered_map<Key, iterator> OrderedMap< Key, Object >::map_t

Definition at line 35 of file OrderedMap.h.

Constructor & Destructor Documentation

◆ OrderedMap()

template<class Key , class Object >
OrderedMap< Key, Object >::OrderedMap ( )
inline

Definition at line 37 of file OrderedMap.h.

37 {}

◆ ~OrderedMap()

template<class Key , class Object >
virtual OrderedMap< Key, Object >::~OrderedMap ( )
inlinevirtual

Definition at line 38 of file OrderedMap.h.

38 {}

Member Function Documentation

◆ clear()

template<class Key , class Object >
void OrderedMap< Key, Object >::clear ( )
inline

Definition at line 40 of file OrderedMap.h.

41  {
42  m_map.clear();
43  m_list.clear();
44  }
list_t m_list
Definition: OrderedMap.h:109
map_t m_map
Definition: OrderedMap.h:108

References OrderedMap< Key, Object >::m_list, and OrderedMap< Key, Object >::m_map.

◆ begin() [1/2]

template<class Key , class Object >
const_iterator OrderedMap< Key, Object >::begin ( ) const
inline

Definition at line 46 of file OrderedMap.h.

46 { return m_list.begin(); }

References OrderedMap< Key, Object >::m_list.

Referenced by SampleToPython::defineMaterials(), and SampleLabelHandler::insertMaterial().

◆ end() [1/2]

template<class Key , class Object >
const_iterator OrderedMap< Key, Object >::end ( ) const
inline

Definition at line 47 of file OrderedMap.h.

47 { return m_list.end(); }

References OrderedMap< Key, Object >::m_list.

Referenced by SampleToPython::defineMaterials(), and SampleLabelHandler::insertMaterial().

◆ begin() [2/2]

template<class Key , class Object >
iterator OrderedMap< Key, Object >::begin ( )
inline

Definition at line 48 of file OrderedMap.h.

48 { return m_list.begin(); }

References OrderedMap< Key, Object >::m_list.

◆ end() [2/2]

template<class Key , class Object >
iterator OrderedMap< Key, Object >::end ( )
inline

Definition at line 49 of file OrderedMap.h.

49 { return m_list.end(); }

References OrderedMap< Key, Object >::m_list.

◆ size()

◆ empty()

template<class Key , class Object >
bool OrderedMap< Key, Object >::empty ( ) const
inline

Definition at line 56 of file OrderedMap.h.

56 { return size() == 0; }
size_t size() const
Definition: OrderedMap.h:51

References OrderedMap< Key, Object >::size().

Referenced by SampleToPython::defineMaterials().

Here is the call graph for this function:

◆ insert()

template<class Key , class Object >
void OrderedMap< Key, Object >::insert ( const Key &  key,
const Object &  object 
)
inline

◆ find() [1/2]

template<class Key , class Object >
iterator OrderedMap< Key, Object >::find ( const Key &  key)
inline

Definition at line 66 of file OrderedMap.h.

67  {
68  iterator result = m_list.end();
69  if (m_map.find(key) != m_map.end()) {
70  result = m_map[key];
71  }
72  return result;
73  }

References OrderedMap< Key, Object >::m_list, and OrderedMap< Key, Object >::m_map.

◆ find() [2/2]

template<class Key , class Object >
const_iterator OrderedMap< Key, Object >::find ( const Key &  key) const
inline

Definition at line 75 of file OrderedMap.h.

76  {
77  const_iterator result = m_list.end();
78  if (m_map.find(key) != m_map.end()) {
79  result = m_map[key];
80  }
81  return result;
82  }
list_t::const_iterator const_iterator
Definition: OrderedMap.h:34

References OrderedMap< Key, Object >::m_list, and OrderedMap< Key, Object >::m_map.

◆ erase()

template<class Key , class Object >
size_t OrderedMap< Key, Object >::erase ( const Key &  key)
inline

Definition at line 84 of file OrderedMap.h.

85  {
86  size_t result(0);
87  if (m_map.find(key) == m_map.end())
88  return result;
89  iterator it = m_map[key];
90  m_list.erase(it);
91  m_map.erase(key);
92  return 1;
93  }

References OrderedMap< Key, Object >::m_list, and OrderedMap< Key, Object >::m_map.

Referenced by OrderedMap< Key, Object >::insert().

◆ value()

template<class Key , class Object >
const Object& OrderedMap< Key, Object >::value ( const Key &  key) const
inline

Definition at line 95 of file OrderedMap.h.

96  {
97  typename map_t::const_iterator mit = m_map.find(key);
98  if (mit == m_map.end()) {
99  throw std::runtime_error("OrderedMap::value() -> No such key");
100  }
101  const_iterator it = mit->second;
102  return (*it).second;
103  }

References OrderedMap< Key, Object >::m_map.

Referenced by OrderedMap< Key, Object >::operator[]().

◆ operator[]()

template<class Key , class Object >
const Object& OrderedMap< Key, Object >::operator[] ( const Key &  key)
inline

Definition at line 105 of file OrderedMap.h.

105 { return value(key); }
const Object & value(const Key &key) const
Definition: OrderedMap.h:95

References OrderedMap< Key, Object >::value().

Here is the call graph for this function:

Member Data Documentation

◆ m_map

◆ m_list


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