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