Completions.
3 #ifndef LEMON_EXTENDABLE_GRAPH_EXTENDER_H
4 #define LEMON_EXTENDABLE_GRAPH_EXTENDER_H
8 template <typename _Base>
9 class ExtendableGraphExtender : public _Base {
12 typedef ExtendableGraphExtender Graph;
15 typedef typename Parent::Node Node;
16 typedef typename Parent::Edge Edge;
19 Node node = Parent::addNode();
20 Parent::getNotifier(Node()).add(node);
24 Edge addEdge(const Node& from, const Node& to) {
25 Edge edge = Parent::addEdge(from, to);
26 Parent::getNotifier(Edge()).add(edge);
32 template <typename _Base>
33 class ExtendableUndirGraphExtender : public _Base {
36 typedef ExtendableUndirGraphExtender Graph;
39 typedef typename Parent::Node Node;
40 typedef typename Parent::Edge Edge;
41 typedef typename Parent::UndirEdge UndirEdge;
44 Node node = Parent::addNode();
45 Parent::getNotifier(Node()).add(node);
49 UndirEdge addEdge(const Node& from, const Node& to) {
50 UndirEdge uedge = Parent::addEdge(from, to);
51 Parent::getNotifier(UndirEdge()).add(uedge);
53 Edge edge_forward(uedge, true);
54 Edge edge_backward(uedge, false);
55 Parent::getNotifier(Edge()).add(edge_forward);
56 Parent::getNotifier(Edge()).add(edge_backward);