// -*- c++ -*- #ifndef LEMON_ERASABLE_GRAPH_EXTENDER_H #define LEMON_ERASABLE_GRAPH_EXTENDER_H #include namespace lemon { template class ErasableGraphExtender : public _Base { public: typedef ErasableGraphExtender Graph; typedef _Base Parent; typedef typename Parent::Node Node; typedef typename Parent::Edge Edge; void erase(const Node& node) { Edge edge; Parent::firstOut(edge, node); while (edge != INVALID ) { erase(edge); Parent::firstOut(edge, node); } Parent::firstIn(edge, node); while (edge != INVALID ) { erase(edge); Parent::firstIn(edge, node); } Parent::getNodeObserverRegistry().erase(node); Parent::erase(node); } void erase(const Edge& edge) { Parent::getEdgeObserverRegistry().erase(edge); Parent::erase(edge); } }; } #endif