COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/deba/edge_map_base.h @ 339:768ebc700bae

Last change on this file since 339:768ebc700bae was 336:8ff3b3e05478, checked in by Balazs Dezso, 17 years ago
File size: 679 bytes
Line 
1#ifndef EDGE_MAP_BASE_H
2#define EDGE_MAP_BASE_H
3
4template <class G, class K>
5class EdgeMapBase {
6public:
7        typedef G Graph;
8
9        typedef K KeyType;
10       
11        EdgeMapBase() : graph(0) {}
12        EdgeMapBase(Graph& g) : graph(&g) {
13                graph->edge_maps.add(*this);
14        }
15
16        virtual ~EdgeMapBase() {
17                if (graph) {
18                        graph.edge_maps.erase(*this);
19                }
20        }
21       
22protected:
23       
24        Graph* graph;
25
26        int graph_index;
27       
28        void init() {
29                for (Graph::EdgeIt it(g); g.valid(it); g.next(it)) {
30                        add(it);
31                }
32        }
33       
34        void destroy() {
35                for (Graph::EdgeIt it(g); g.valid(it); g.next(it)) {
36                        erase(it);
37                }
38        }
39       
40        virtual void add(const KeyType&) = 0;
41        virtual void erase(const KeyType&) = 0;
42
43        friend class Graph;
44};
45
46#endif
Note: See TracBrowser for help on using the repository browser.