3 #ifndef LEMON_ERASABLE_GRAPH_EXTENDER_H
4 #define LEMON_ERASABLE_GRAPH_EXTENDER_H
6 #include <lemon/invalid.h>
11 template <typename _Base>
12 class ErasableGraphExtender : public _Base {
15 typedef ErasableGraphExtender Graph;
18 typedef typename Parent::Node Node;
19 typedef typename Parent::Edge Edge;
21 void erase(const Node& node) {
23 Parent::firstOut(edge, node);
24 while (edge != INVALID ) {
26 Parent::firstOut(edge, node);
29 Parent::firstIn(edge, node);
30 while (edge != INVALID ) {
32 Parent::firstIn(edge, node);
35 Parent::getObserverRegistry(Node()).erase(node);
39 void erase(const Edge& edge) {
40 Parent::getObserverRegistry(Edge()).erase(edge);