deba@262: #ifndef NODE_MAP_BASE_H deba@262: #define NODE_MAP_BASE_H deba@262: deba@262: template deba@262: class NodeMapBase { deba@262: public: deba@262: typedef G Graph; deba@262: deba@262: typedef K KeyType; deba@262: deba@262: deba@262: MapBase() : graph(0) {} deba@262: MapBase(Graph& g) : graph(&g) {graph.node_maps.add(*this);} deba@262: deba@262: virtual ~MapBase() {graph.node_maps.erase(*this);} deba@262: deba@262: protected: deba@262: deba@262: Graph* graph; deba@262: deba@262: int graph_index; deba@262: deba@262: deba@262: virtual void add(const KeyType&) = 0; deba@262: virtual void erase(const KeyType&) = 0; deba@262: deba@262: friend class Graph; deba@262: }; deba@262: deba@262: #endif