1 #ifndef EDGE_MAP_REGISTRY_H
2 #define EDGE_MAP_REGISTRY_H
6 template <typename G, typename E>
7 class EdgeMapRegistry {
12 typedef EdgeMapBase<Graph, Edge> EdgeMapBase;
15 typedef std::vector<EdgeMapBase*> Container;
19 void add(EdgeMapBase& map_base) {
21 map_base.graph->edge_maps.erase(map_base);
23 container.push_back(&map_base);
24 map_base.graph = this;
25 map_base.graph_index = container.size()-1;
28 void erase(EdgeMapBase& map_base) {
29 if (map_base.graph != this) return;
30 container.back()->graph_index = map_base.graph_index;
31 container[map_base.graph_index] = container.back();
36 void addEdge(Edge& edge) {
37 typename Container::iterator it;
38 for (it = container.begin(); it != container.end(); ++it) {
43 void eraseEdge(Edge& edge) {
44 typename Container::iterator it;
45 for (it = container.begin(); it != container.end(); ++it) {
50 friend class EdgeMapBase;