lemon/graph_adaptor.h
changeset 1627 3fd1ba6e9872
parent 1576 e5957f8866e6
child 1631 e15162d8eca1
equal deleted inserted replaced
4:96b73485dc61 5:3743011ded3f
   103     void erase(const Node& i) const { graph->erase(i); }
   103     void erase(const Node& i) const { graph->erase(i); }
   104     void erase(const Edge& i) const { graph->erase(i); }
   104     void erase(const Edge& i) const { graph->erase(i); }
   105   
   105   
   106     void clear() const { graph->clear(); }
   106     void clear() const { graph->clear(); }
   107     
   107     
   108     bool forward(const Edge& e) const { return graph->forward(e); }
       
   109     bool backward(const Edge& e) const { return graph->backward(e); }
       
   110 
       
   111     int id(const Node& v) const { return graph->id(v); }
   108     int id(const Node& v) const { return graph->id(v); }
   112     int id(const Edge& e) const { return graph->id(e); }
   109     int id(const Edge& e) const { return graph->id(e); }
   113     
   110     
   114     Edge opposite(const Edge& e) const { return Edge(graph->opposite(e)); }
   111     Edge oppositeNode(const Edge& e) const { 
       
   112       return Edge(graph->opposite(e)); 
       
   113     }
   115 
   114 
   116     template <typename _Value>
   115     template <typename _Value>
   117     class NodeMap : public _Graph::template NodeMap<_Value> {
   116     class NodeMap : public _Graph::template NodeMap<_Value> {
   118     public:
   117     public:
   119       typedef typename _Graph::template NodeMap<_Value> Parent;
   118       typedef typename _Graph::template NodeMap<_Value> Parent;
   606 
   605 
   607       EdgeMap(const UndirGraphAdaptorBase<_Graph>& _g, T a) : g(&_g), 
   606       EdgeMap(const UndirGraphAdaptorBase<_Graph>& _g, T a) : g(&_g), 
   608 	forward_map(*(g->graph), a), backward_map(*(g->graph), a) { }
   607 	forward_map(*(g->graph), a), backward_map(*(g->graph), a) { }
   609       
   608       
   610       void set(Edge e, T a) { 
   609       void set(Edge e, T a) { 
   611 	if (g->forward(e)) 
   610 	if (g->direction(e)) 
   612 	  forward_map.set(e, a); 
   611 	  forward_map.set(e, a); 
   613 	else 
   612 	else 
   614 	  backward_map.set(e, a); 
   613 	  backward_map.set(e, a); 
   615       }
   614       }
   616 
   615 
   617       T operator[](Edge e) const { 
   616       T operator[](Edge e) const { 
   618 	if (g->forward(e)) 
   617 	if (g->direction(e)) 
   619 	  return forward_map[e]; 
   618 	  return forward_map[e]; 
   620 	else 
   619 	else 
   621 	  return backward_map[e]; 
   620 	  return backward_map[e]; 
   622       }
   621       }
   623     };
   622     };