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 ClearableUGraphExtender : public _Base {
48 typedef ClearableUGraphExtender Graph;
50 typedef typename Parent::Node Node;
51 typedef typename Parent::UEdge UEdge;
52 typedef typename Parent::Edge Edge;
55 Parent::getNotifier(Node()).clear();
56 Parent::getNotifier(UEdge()).clear();
57 Parent::getNotifier(Edge()).clear();
62 template <typename _Base>
63 class ClearableUEdgeSetExtender : public _Base {
66 typedef ClearableUEdgeSetExtender Graph;
68 typedef typename Parent::Node Node;
69 typedef typename Parent::UEdge UEdge;
70 typedef typename Parent::Edge Edge;
73 Parent::getNotifier(UEdge()).clear();
74 Parent::getNotifier(Edge()).clear();
81 template <typename _Base>
82 class ClearableUBipartiteGraphExtender : public _Base {
86 typedef ClearableUBipartiteGraphExtender 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::UEdge UEdge;
95 Parent::getNotifier(Edge()).clear();
96 Parent::getNotifier(UEdge()).clear();
97 Parent::getNotifier(Node()).clear();
98 Parent::getNotifier(LowerNode()).clear();
99 Parent::getNotifier(UpperNode()).clear();