#ifndef __JMULTIMAP__ #define __JMULTIMAP__ #include "JTools/JMixedMultiMap.hh" namespace JTOOLS { namespace { using JLANG::JMultipleMap; } /** * Multi-dimensional map. * * The first template parameter refers to the number of dimensions, * the second to the data type of the (multi-dimensional) key, * the third to the data type of the overall mapped value and * the (optional) fourth template parameter to the map used. * * The first_type and second_type refer to the pair-wise element of this map, respectively. * The key_type and mapped_type refer to the data type of the (multi-dimensional) key and * the data type of overall mapped value, respectively. */ template class JMap_t> class JMultiMap : public JMixedMultiMap::type_list> { public: typedef JMixedMultiMap::type_list> JMultiMap_t; typedef JKey_t key_type; typedef JValue_t mapped_type; typedef typename JMultiMap_t::key_type first_type; typedef typename JMultiMap_t::mapped_type second_type; typedef typename JMultiMap_t::value_type value_type; typedef typename JMultiMap_t::iterator iterator; typedef typename JMultiMap_t::reverse_iterator reverse_iterator; typedef typename JMultiMap_t::const_iterator const_iterator; typedef typename JMultiMap_t::const_reverse_iterator const_reverse_iterator; /** * Default constructor. */ JMultiMap() : JMultiMap_t() {} }; /** * Template specialisation of obsolete JMultiMap class. */ template class JMap_t> class JMultiMap<0, JKey_t, JValue_t, JMap_t> {}; } #endif