src/work/deba/node_map_base.h
changeset 337 6e1b7efa577f
parent 262 60de0f16a4a1
child 340 a2ce3c4780b7
equal deleted inserted replaced
0:39db94cbcc44 1:44f1516f2872
     6 public:
     6 public:
     7 	typedef G Graph;
     7 	typedef G Graph;
     8 
     8 
     9 	typedef K KeyType;
     9 	typedef K KeyType;
    10 	
    10 	
       
    11 	NodeMapBase() : graph(0) {}
       
    12 	NodeMapBase(Graph& g) : graph(&g) {
       
    13 		graph->node_maps.add(*this);
       
    14 	}
    11 
    15 
    12 	MapBase() : graph(0) {}
    16 	virtual ~NodeMapBase() {
    13 	MapBase(Graph& g) : graph(&g) {graph.node_maps.add(*this);}
    17 		if (graph) {
    14 
    18 			graph.node_maps.erase(*this);
    15 	virtual ~MapBase() {graph.node_maps.erase(*this);}	
    19 		}
    16 
    20 	}
       
    21 	
    17 protected:
    22 protected:
    18 	
    23 	
    19 	Graph* graph;
    24 	Graph* graph;
    20 
    25 
    21 	int graph_index;
    26 	int graph_index;
    22 	
    27 	
       
    28 	void init() {
       
    29 		for (Graph::NodeIt it(g); g.valid(it); g.next(it)) {
       
    30 			add(it);
       
    31 		}
       
    32 	}
       
    33 	
       
    34 	void destroy() {
       
    35 		for (Graph::NodeIt it(g); g.valid(it); g.next(it)) {
       
    36 			erase(it);
       
    37 		}
       
    38 	}
    23 	
    39 	
    24 	virtual void add(const KeyType&) = 0;
    40 	virtual void add(const KeyType&) = 0;
    25 	virtual void erase(const KeyType&) = 0;
    41 	virtual void erase(const KeyType&) = 0;
    26 
    42 
    27 	friend class Graph;
    43 	friend class Graph;