30#ifndef __CLAW_MULTI_TYPE_MAP_HPP__
31#define __CLAW_MULTI_TYPE_MAP_HPP__
59 template <
typename ValueType,
typename Map>
67 template <
typename Map>
89 template <
typename Key,
typename TypeList>
95 template <
typename Key>
103 template <
typename Key,
typename Head,
typename Tail>
108 typedef Key key_type;
109 typedef Head value_type;
112 typedef std::map<key_type, value_type> container_type;
120 template <
typename ValueType>
124 typedef typename std::map<key_type, ValueType>::iterator
type;
128 typename std::map<key_type, ValueType>::const_iterator
const_type;
136 template <
typename ValueType>
139 template <
typename ValueType>
140 std::size_t erase(
const key_type& k);
142 template <
typename ValueType>
143 const ValueType& get(
const key_type& k)
const;
145 template <
typename ValueType>
146 ValueType& get(
const key_type& k);
148 template <
typename ValueType>
149 void set(
const key_type& k,
const ValueType& v);
151 void set(
const self_type& m);
153 template <
typename ValueType>
154 bool exists(
const key_type& k)
const;
156 std::size_t size()
const;
158 template <
typename ValueType>
161 template <
typename ValueType>
164 template <
typename ValueType>
167 template <
typename ValueType>
172 container_type m_data;
178#include <claw/multi_type_map.tpp>
This class provides types and methods to allow the call of methods recursively along the inherintance...
This class provides types and methods to allow the call of methods for a given type in the inheritanc...
This class can associate values of different types to a key.
This is the main namespace.
An empty class not considered as a effective type.
Template classes for lists of types.