Changeset 340:a2ce3c4780b7 in lemon-0.x for src/work/deba/node_map_base.h
- Timestamp:
- 04/16/04 15:42:03 (20 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@459
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/work/deba/node_map_base.h
r336 r340 2 2 #define NODE_MAP_BASE_H 3 3 4 template <class G, class K> 4 /** 5 Template base class for implementing mapping on nodes. 6 \param The first template parameter is the Graph class. The Graph 7 must have an \emp node_maps member with \emp NodeMapRegistry class. 8 \param The second template parameter is the Node type of the class. 9 10 */ 11 12 template <typename G, typename K> 5 13 class NodeMapBase { 6 14 public: … … 9 17 typedef K KeyType; 10 18 19 /** 20 Default constructor. 21 */ 22 11 23 NodeMapBase() : graph(0) {} 24 25 /** 26 Simple constructor to register into a graph. 27 */ 28 12 29 NodeMapBase(Graph& g) : graph(&g) { 13 30 graph->node_maps.add(*this); 14 31 } 32 33 /** 34 Copy constructor with registering into the map. 35 */ 36 37 NodeMapBase(const NodeMapBase& copy) : graph(copy.graph) { 38 if (graph) { 39 graph->node_maps.add(*this); 40 } 41 } 42 43 /** 44 Assign operator. 45 */ 46 47 const NodeMapBase& operator=(const NodeMapBase& copy) { 48 if (graph) { 49 graph.node_maps.erase(*this); 50 } 51 graph = copy.graph; 52 if (graph) { 53 graph->node_maps.add(*this); 54 } 55 56 } 57 58 59 /** 60 Destructor. 61 */ 15 62 16 63 virtual ~NodeMapBase() { … … 26 73 int graph_index; 27 74 75 /** 76 Helper function to implement the default constructor in the subclasses. 77 */ 78 28 79 void init() { 29 80 for (Graph::NodeIt it(g); g.valid(it); g.next(it)) { … … 31 82 } 32 83 } 84 85 /** 86 Helper function to implement the destructor in the subclasses. 87 */ 33 88 34 89 void destroy() { … … 38 93 } 39 94 95 /** 96 The add member function should be overloaded in the subclasses. 97 \e Add extends the map with the new node. 98 */ 99 40 100 virtual void add(const KeyType&) = 0; 101 102 /** 103 The erase member function should be overloaded in the subclasses. 104 \e Erase removes the node from the map. 105 */ 106 41 107 virtual void erase(const KeyType&) = 0; 108 109 /** 110 Exception class to throw at unsupported operation. 111 */ 112 113 class NotSupportedOperationException {}; 42 114 43 115 friend class Graph;
Note: See TracChangeset
for help on using the changeset viewer.