src/work/deba/node_map_base.h
changeset 336 8ff3b3e05478
parent 262 60de0f16a4a1
child 340 a2ce3c4780b7
     1.1 --- a/src/work/deba/node_map_base.h	Fri Apr 16 08:26:00 2004 +0000
     1.2 +++ b/src/work/deba/node_map_base.h	Fri Apr 16 12:13:07 2004 +0000
     1.3 @@ -8,18 +8,34 @@
     1.4  
     1.5  	typedef K KeyType;
     1.6  	
     1.7 +	NodeMapBase() : graph(0) {}
     1.8 +	NodeMapBase(Graph& g) : graph(&g) {
     1.9 +		graph->node_maps.add(*this);
    1.10 +	}
    1.11  
    1.12 -	MapBase() : graph(0) {}
    1.13 -	MapBase(Graph& g) : graph(&g) {graph.node_maps.add(*this);}
    1.14 -
    1.15 -	virtual ~MapBase() {graph.node_maps.erase(*this);}	
    1.16 -
    1.17 +	virtual ~NodeMapBase() {
    1.18 +		if (graph) {
    1.19 +			graph.node_maps.erase(*this);
    1.20 +		}
    1.21 +	}
    1.22 +	
    1.23  protected:
    1.24  	
    1.25  	Graph* graph;
    1.26  
    1.27  	int graph_index;
    1.28  	
    1.29 +	void init() {
    1.30 +		for (Graph::NodeIt it(g); g.valid(it); g.next(it)) {
    1.31 +			add(it);
    1.32 +		}
    1.33 +	}
    1.34 +	
    1.35 +	void destroy() {
    1.36 +		for (Graph::NodeIt it(g); g.valid(it); g.next(it)) {
    1.37 +			erase(it);
    1.38 +		}
    1.39 +	}
    1.40  	
    1.41  	virtual void add(const KeyType&) = 0;
    1.42  	virtual void erase(const KeyType&) = 0;