deba@595: #ifndef PAC_MAP_FACTORY_H deba@595: #define PAC_MAP_FACTORY_H deba@595: deba@595: #include "map_base.h" deba@595: deba@595: /** deba@595: Converter class to use the standard template deba@595: libary's pair associative containers as a graph map. deba@595: */ deba@595: deba@595: namespace hugo { deba@595: deba@595: template class PAC> deba@595: class PacMapFactory { deba@595: deba@595: deba@595: public: deba@595: deba@595: typedef G Graph; deba@595: typedef K Key; deba@595: typedef KIt KeyIt; deba@595: deba@595: template deba@595: class Map : public MapBase { deba@595: public: deba@595: typedef V Value; deba@595: deba@595: Map() {} deba@595: deba@595: Map(Graph& g, MapRegistry& r) deba@595: : MapBase(g, r) { deba@595: init(); deba@595: } deba@595: deba@595: virtual ~Map() { deba@595: destroy(); deba@595: } deba@595: deba@595: deba@595: V& operator[](const K& key) { deba@595: return container.find(key)->second; deba@595: } deba@595: deba@595: const V& operator[](const K& key) const { deba@595: return container.find(key)->second; deba@595: } deba@595: deba@595: const V& get(const K& key) const { deba@595: return container.find(key)->second; deba@595: } deba@595: deba@595: void set(const K& key, const V& value) { deba@595: container.find(key)->second = value; deba@595: } deba@595: deba@595: void add(const K& key) { deba@595: container.insert(key); deba@595: } deba@595: deba@595: void erase(const K& key) { deba@595: container.erase(key); deba@595: } deba@595: deba@595: private: deba@595: typedef PAC Container; deba@595: deba@595: Container container; deba@595: }; deba@595: deba@595: }; deba@595: } deba@595: deba@595: #endif