]> Creatis software - bbtk.git/blob - kernel/src/bbtkTypeMapping.h
95d706b21b91673d7ad247fcb58d9cbc7e17cac1
[bbtk.git] / kernel / src / bbtkTypeMapping.h
1 #ifndef __bbtkTypeMapping_h_INCLUDED__
2 #define __bbtkTypeMapping_h_INCLUDED__
3
4
5 namespace bbtk 
6 {
7
8 /// 
9 template <typename ValueType>
10 class TypeMapping 
11 {
12 public:
13   TypeMapping() {}
14
15   template <typename T>
16   ValueType& value() 
17   {
18     return m_map[ (void*)typeid(T).name() ];
19   }
20   template <typename T>
21   ValueType& operator[]( const T& ) 
22   {
23     return m_map[ (void*)typeid(T).name() ];
24   }
25
26   ValueType& operator[]( const std::type_info& t) 
27   {
28     return m_map[ (void*)t.name() ];
29   }
30   
31   unsigned int size() const { return m_map.size(); }
32
33   typedef typename std::map<void*, ValueType>::const_iterator const_iterator;
34
35   const_iterator begin() const { return m_map.begin(); }
36   const_iterator end() const { return m_map.end(); }
37
38 protected:
39   std::map<void*, ValueType> m_map;
40 };
41
42
43
44 }
45 #endif