src/lemon/extendable_graph_extender.h
author marci
Wed, 17 Nov 2004 19:56:46 +0000
changeset 1004 b94037830dc8
parent 946 c94ef40a22ce
child 1022 567f392d1d2e
permissions -rw-r--r--
misc
     1 // -*- c++ -*-
     2 
     3 #ifndef LEMON_EXTENDABLE_GRAPH_EXTENDER_H
     4 #define LEMON_EXTENDABLE_GRAPH_EXTENDER_H
     5 
     6 namespace lemon {
     7 
     8   template <typename _Base> 
     9   class ExtendableGraphExtender : public _Base {
    10   public:
    11 
    12     typedef ExtendableGraphExtender Graph;
    13     typedef _Base Parent;
    14 
    15     typedef typename Parent::Node Node;
    16     typedef typename Parent::Edge Edge;
    17 
    18     Node addNode() {
    19       Node node = Parent::addNode();
    20       Parent::getObserverRegistry(Node()).add(node);
    21       return node;
    22     }
    23     
    24     Edge addEdge(const Node& from, const Node& to) {
    25       Edge edge = Parent::addEdge(from, to);
    26       Parent::getObserverRegistry(Edge()).add(edge);
    27       return edge;
    28     }
    29 
    30   };
    31 
    32 }
    33 
    34 #endif