src/lemon/undir_graph_extender.h
changeset 1060 7a24bb2e7480
parent 1054 6a62b1b4cf23
child 1158 29961fa390a3
     1.1 --- a/src/lemon/undir_graph_extender.h	Fri Jan 07 08:50:38 2005 +0000
     1.2 +++ b/src/lemon/undir_graph_extender.h	Fri Jan 07 18:53:02 2005 +0000
     1.3 @@ -140,53 +140,55 @@
     1.4  
     1.5      template <typename E>
     1.6      void _dirFirstOut(E &e, const Node &n) const {
     1.7 -      Parent::firstOut(e,n);
     1.8 +      Parent::firstIn(e,n);
     1.9        if( UndirEdge(e) != INVALID ) {
    1.10 -	e.forward = true;
    1.11 +	e.forward = false;
    1.12        }
    1.13        else {
    1.14 -	Parent::firstIn(e,n);
    1.15 -	e.forward = false;
    1.16 +	Parent::firstOut(e,n);
    1.17 +	e.forward = true;
    1.18        }
    1.19      }
    1.20      template <typename E>
    1.21      void _dirFirstIn(E &e, const Node &n) const {
    1.22 -      Parent::firstIn(e,n);
    1.23 +      Parent::firstOut(e,n);
    1.24        if( UndirEdge(e) != INVALID ) {
    1.25 -	e.forward = true;
    1.26 +	e.forward = false;
    1.27        }
    1.28        else {
    1.29 -	Parent::firstOut(e,n);
    1.30 -	e.forward = false;
    1.31 +	Parent::firstIn(e,n);
    1.32 +	e.forward = true;
    1.33        }
    1.34      }
    1.35  
    1.36      template <typename E>
    1.37      void _dirNextOut(E &e) const {
    1.38 -      if( e.forward ) {
    1.39 +      if( ! e.forward ) {
    1.40 +	Node n = Parent::target(e);
    1.41 +	Parent::nextIn(e);
    1.42 +	if( UndirEdge(e) == INVALID ) {
    1.43 +	  Parent::firstOut(e, n);
    1.44 +	  e.forward = true;
    1.45 +	}
    1.46 +      }
    1.47 +      else {
    1.48 +	Parent::nextOut(e);
    1.49 +      }
    1.50 +    }
    1.51 +    template <typename E>
    1.52 +    void _dirNextIn(E &e) const {
    1.53 +      if( ! e.forward ) {
    1.54 +	Node n = Parent::source(e);
    1.55  	Parent::nextOut(e);
    1.56  	if( UndirEdge(e) == INVALID ) {
    1.57 -	  Parent::firstIn(e, Parent::source(e));
    1.58 -	  e.forward = false;
    1.59 +	  Parent::firstIn(e, n);
    1.60 +	  e.forward = true;
    1.61  	}
    1.62        }
    1.63        else {
    1.64  	Parent::nextIn(e);
    1.65        }
    1.66      }
    1.67 -    template <typename E>
    1.68 -    void _dirNextIn(E &e) const {
    1.69 -      if( e.forward ) {
    1.70 -	Parent::nextIn(e);
    1.71 -	if( UndirEdge(e) == INVALID ) {
    1.72 -	  Parent::firstOut(e, Parent::target(e));
    1.73 -	  e.forward = false;
    1.74 -	}
    1.75 -      }
    1.76 -      else {
    1.77 -	Parent::nextOut(e);
    1.78 -      }
    1.79 -    }
    1.80  
    1.81    public:
    1.82  
    1.83 @@ -226,7 +228,7 @@
    1.84      }
    1.85  
    1.86  
    1.87 -    int maxId(Node n) const {
    1.88 +    int maxId(Node) const {
    1.89        return Parent::maxId(Node());
    1.90      }
    1.91