[Lemon-commits] alpar: r3283 - lemon/trunk/lemon

Lemon SVN svn at lemon.cs.elte.hu
Tue Jun 5 12:57:30 CEST 2007


Author: alpar
Date: Tue Jun  5 12:57:26 2007
New Revision: 3283

Modified:
   lemon/trunk/lemon/euler.h

Log:

- Fix a serious bug in UEulerIt
- Add a conversion to UEdge
- Make some member funtions to be 'const'


Modified: lemon/trunk/lemon/euler.h
==============================================================================
--- lemon/trunk/lemon/euler.h	(original)
+++ lemon/trunk/lemon/euler.h	Tue Jun  5 12:57:26 2007
@@ -149,6 +149,7 @@
     typedef typename Graph::Node Node;
     typedef typename Graph::NodeIt NodeIt;
     typedef typename Graph::Edge Edge;
+    typedef typename Graph::UEdge UEdge;
     typedef typename Graph::EdgeIt EdgeIt;
     typedef typename Graph::OutEdgeIt OutEdgeIt;
     typedef typename Graph::InEdgeIt InEdgeIt;
@@ -172,16 +173,22 @@
       for(NodeIt n(g);n!=INVALID;++n) nedge[n]=OutEdgeIt(g,n);
       while(nedge[start]!=INVALID) {
 	euler.push_back(nedge[start]);
+	visited[nedge[start]]=true;
 	Node next=g.target(nedge[start]);
 	++nedge[start];
-	start=next;	while(nedge[start]!=INVALID && visited[nedge[start]]) ++nedge[start];
+	start=next;
+	while(nedge[start]!=INVALID && visited[nedge[start]]) ++nedge[start];
       }
     }
     
     ///Edge Conversion
-    operator Edge() { return euler.empty()?INVALID:euler.front(); }
-    bool operator==(Invalid) { return euler.empty(); }
-    bool operator!=(Invalid) { return !euler.empty(); }
+    operator Edge() const { return euler.empty()?INVALID:euler.front(); }
+    ///Edge Conversion
+    operator UEdge() const { return euler.empty()?INVALID:euler.front(); }
+    ///\e
+    bool operator==(Invalid) const { return euler.empty(); }
+    ///\e
+    bool operator!=(Invalid) const { return !euler.empty(); }
     
     ///Next edge of the tour
     UEulerIt &operator++() {
@@ -194,6 +201,7 @@
 	if(nedge[s]==INVALID) break;
 	else {
 	  euler.insert(next,nedge[s]);
+	  visited[nedge[s]]=true;
 	  Node n=g.target(nedge[s]);
 	  ++nedge[s];
 	  s=n;



More information about the Lemon-commits mailing list