1.1 --- a/src/lemon/extendable_graph_extender.h Thu Nov 25 14:48:24 2004 +0000
1.2 +++ b/src/lemon/extendable_graph_extender.h Sun Nov 28 16:30:10 2004 +0000
1.3 @@ -29,6 +29,37 @@
1.4
1.5 };
1.6
1.7 + template <typename _Base>
1.8 + class ExtendableUndirGraphExtender : public _Base {
1.9 + public:
1.10 +
1.11 + typedef ExtendableUndirGraphExtender Graph;
1.12 + typedef _Base Parent;
1.13 +
1.14 + typedef typename Parent::Node Node;
1.15 + typedef typename Parent::Edge Edge;
1.16 + typedef typename Parent::UndirEdge UndirEdge;
1.17 +
1.18 + Node addNode() {
1.19 + Node node = Parent::addNode();
1.20 + Parent::getObserverRegistry(Node()).add(node);
1.21 + return node;
1.22 + }
1.23 +
1.24 + UndirEdge addEdge(const Node& from, const Node& to) {
1.25 + UndirEdge uedge = Parent::addEdge(from, to);
1.26 + Parent::getObserverRegistry(UndirEdge()).add(uedge);
1.27 +
1.28 + Edge edge_forward(uedge, true);
1.29 + Edge edge_backward(uedge, false);
1.30 + Parent::getObserverRegistry(Edge()).add(edge_forward);
1.31 + Parent::getObserverRegistry(Edge()).add(edge_backward);
1.32 +
1.33 + return uedge;
1.34 + }
1.35 +
1.36 + };
1.37 +
1.38 }
1.39
1.40 #endif