7 ///\brief Some utils to help implement maps.
12 /// \addtogroup graphmaps
15 /// Helper class to get information about the key type.
16 template <typename Graph, typename KeyIt>
19 template <typename Graph>
20 struct KeyInfo<Graph, typename Graph::NodeIt> {
21 static int maxId(const Graph& graph) {
22 return graph.maxNodeId();
24 static int id(const Graph& graph, const typename Graph::Node& node) {
25 return graph.id(node);
29 template <typename Graph>
30 struct KeyInfo<Graph, typename Graph::EdgeIt> {
31 static int maxId(const Graph& graph) {
32 return graph.maxEdgeId();
34 static int id(const Graph& graph, const typename Graph::Edge& edge) {
35 return graph.id(edge);
39 template <typename Graph>
40 struct KeyInfo<Graph, typename Graph::SymEdgeIt> {
41 static int maxId(const Graph& graph) {
42 return graph.maxEdgeId() >> 1;
44 static int id(const Graph& graph, const typename Graph::Edge& edge) {
45 return graph.id(edge) >> 1;