src/lemon/extendable_graph_extender.h
changeset 1022 567f392d1d2e
parent 980 0f1044b7a3af
child 1039 bd01c5a3f989
     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