#ifndef DEFAULTCOLORMAP_H #define DEFAULTCOLORMAP_H #include "UnorderedMap.h" #include #include template class DefaultColorMap { public: typedef typename boost::graph_traits::vertex_descriptor key_type; typedef typename boost::graph_traits::vertex_descriptor& reference; typedef boost::default_color_type value_type; typedef boost::read_write_property_map_tag category; typedef unordered_map > map_type; map_type map; }; namespace boost { template struct property_traits< DefaultColorMap > { typedef typename DefaultColorMap::key_type key_type; typedef typename DefaultColorMap::reference reference; typedef typename DefaultColorMap::value_type value_type; typedef typename DefaultColorMap::category category; }; } template typename DefaultColorMap::value_type get(const DefaultColorMap& colorMap, typename DefaultColorMap::key_type key) { typedef typename DefaultColorMap::map_type::const_iterator It; It i = colorMap.map.find(key); if (i != colorMap.map.end()) return i->second; return boost::white_color; } template void put(DefaultColorMap& colorMap, typename DefaultColorMap::key_type key, typename DefaultColorMap::value_type value) { colorMap.map[key] = value; } #endif