klao@946: // -*- c++ -*- klao@946: klao@946: #ifndef LEMON_IDMAPPABLE_GRAPH_EXTENDER_H klao@946: #define LEMON_IDMAPPABLE_GRAPH_EXTENDER_H klao@946: klao@946: klao@946: namespace lemon { klao@946: klao@946: template klao@946: class IdMappableGraphExtender : public Base { klao@946: public: klao@946: klao@946: typedef IdMappableGraphExtender Graph; klao@946: typedef Base Parent; klao@946: klao@946: typedef typename Parent::Node Node; klao@946: typedef typename Parent::Edge Edge; klao@946: klao@946: klao@946: public: klao@946: klao@946: class NodeIdMap { klao@946: private: klao@946: const Graph* graph; klao@946: klao@946: public: klao@946: NodeIdMap(const Graph& g) : graph(&g) {} klao@946: klao@946: int operator[](const Node& node) const { return graph->id(node); } klao@946: klao@946: int maxId() const {return graph->maxNodeId(); } klao@946: klao@946: }; klao@946: klao@946: class EdgeIdMap { klao@946: private: klao@946: const Graph* graph; klao@946: klao@946: public: klao@946: EdgeIdMap(const Graph& g) : graph(&g) {} klao@946: klao@946: int operator[](const Edge& edge) const { return graph->id(edge); } klao@946: klao@946: int maxId() const {return graph->maxEdgeId(); } klao@946: klao@946: }; klao@946: klao@946: }; klao@946: klao@946: } klao@946: klao@946: #endif