]> git.tdb.fi Git - libs/core.git/blob - source/core/maputils.h
1a7c0ae6ce8e952d1ab9b10113e47172dc4b3136
[libs/core.git] / source / core / maputils.h
1 #ifndef MSP_CORE_MAPUTILS_H_
2 #define MSP_CORE_MAPUTILS_H_
3
4 #include <stdexcept>
5 #include <typeinfo>
6
7 namespace Msp {
8
9 class key_error: public std::runtime_error
10 {
11 public:
12         key_error(const std::type_info &);
13 };
14
15
16 template<typename T>
17 typename T::mapped_type &get_item(T &map, const typename T::key_type &key)
18 {
19         typename T::iterator i = map.find(key);
20         if(i==map.end())
21                 throw key_error(typeid(T));
22
23         return i->second;
24 }
25
26 template<typename T>
27 const typename T::mapped_type &get_item(const T &map, const typename T::key_type &key)
28 {
29         typename T::const_iterator i = map.find(key);
30         if(i==map.end())
31                 throw key_error(typeid(T));
32
33         return i->second;
34 }
35
36 } // namespace Msp
37
38 #endif