COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/lemon/extendable_graph_extender.h @ 1039:bd01c5a3f989

Last change on this file since 1039:bd01c5a3f989 was 1039:bd01c5a3f989, checked in by Balazs Dezso, 19 years ago

AlterationObserverRegistry? -> AlterationNotifier?
2 step

File size: 1.5 KB
RevLine 
[946]1// -*- c++ -*-
2
3#ifndef LEMON_EXTENDABLE_GRAPH_EXTENDER_H
4#define LEMON_EXTENDABLE_GRAPH_EXTENDER_H
5
6namespace 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();
[1039]20      Parent::getNotifier(Node()).add(node);
[946]21      return node;
22    }
23   
24    Edge addEdge(const Node& from, const Node& to) {
25      Edge edge = Parent::addEdge(from, to);
[1039]26      Parent::getNotifier(Edge()).add(edge);
[946]27      return edge;
28    }
29
30  };
31
[1022]32  template <typename _Base>
33  class ExtendableUndirGraphExtender : public _Base {
34  public:
35
36    typedef ExtendableUndirGraphExtender Graph;
37    typedef _Base Parent;
38
39    typedef typename Parent::Node Node;
40    typedef typename Parent::Edge Edge;
41    typedef typename Parent::UndirEdge UndirEdge;
42
43    Node addNode() {
44      Node node = Parent::addNode();
[1039]45      Parent::getNotifier(Node()).add(node);
[1022]46      return node;
47    }
48
49    UndirEdge addEdge(const Node& from, const Node& to) {
50      UndirEdge uedge = Parent::addEdge(from, to);
[1039]51      Parent::getNotifier(UndirEdge()).add(uedge);
[1022]52
53      Edge edge_forward(uedge, true);
54      Edge edge_backward(uedge, false);
[1039]55      Parent::getNotifier(Edge()).add(edge_forward);
56      Parent::getNotifier(Edge()).add(edge_backward);
[1022]57
58      return uedge;
59    }
60
61  };
62
[946]63}
64
65#endif
Note: See TracBrowser for help on using the repository browser.