3 #ifndef LEMON_CLEARABLE_GRAPH_EXTENDER_H
4 #define LEMON_CLEARABLE_GRAPH_EXTENDER_H
6 #include <lemon/invalid.h>
11 template <typename _Base>
12 class ClearableGraphExtender : public _Base {
15 typedef ClearableGraphExtender Graph;
17 typedef typename Parent::Node Node;
18 typedef typename Parent::Edge Edge;
21 Parent::getNotifier(Node()).clear();
22 Parent::getNotifier(Edge()).clear();
28 template <typename _Base>
29 class ClearableEdgeSetExtender : public _Base {
32 typedef ClearableEdgeSetExtender Graph;
34 typedef typename Parent::Node Node;
35 typedef typename Parent::Edge Edge;
38 Parent::getNotifier(Edge()).clear();
44 template <typename _Base>
45 class ClearableUndirGraphExtender : public _Base {
48 typedef ClearableUndirGraphExtender Graph;
50 typedef typename Parent::Node Node;
51 typedef typename Parent::UndirEdge UndirEdge;
52 typedef typename Parent::Edge Edge;
55 Parent::getNotifier(Node()).clear();
56 Parent::getNotifier(UndirEdge()).clear();
57 Parent::getNotifier(Edge()).clear();
62 template <typename _Base>
63 class ClearableUndirEdgeSetExtender : public _Base {
66 typedef ClearableUndirEdgeSetExtender Graph;
68 typedef typename Parent::Node Node;
69 typedef typename Parent::UndirEdge UndirEdge;
70 typedef typename Parent::Edge Edge;
73 Parent::getNotifier(UndirEdge()).clear();
74 Parent::getNotifier(Edge()).clear();
81 template <typename _Base>
82 class ClearableUndirBipartiteGraphExtender : public _Base {
86 typedef ClearableUndirBipartiteGraphExtender Graph;
88 typedef typename Parent::Node Node;
89 typedef typename Parent::LowerNode LowerNode;
90 typedef typename Parent::UpperNode UpperNode;
91 typedef typename Parent::Edge Edge;
92 typedef typename Parent::UndirEdge UndirEdge;
95 Parent::getNotifier(Edge()).clear();
96 Parent::getNotifier(UndirEdge()).clear();
97 Parent::getNotifier(Node()).clear();
98 Parent::getNotifier(LowerNode()).clear();
99 Parent::getNotifier(UpperNode()).clear();