- EdgeIterator() : e(0), t(0), d(0) { }
- EdgeIterator(Graph::Edge *first, int dir) : e(first), t(first), d(dir) { }
+ EdgeIterator() : e(0), t(0), d(0), rev(false) { }
+ EdgeIterator(Graph::Edge *first, int dir, bool reverse)
+ : d(dir), rev(reverse)
+ {
+ t = e = ((rev && first) ? first->prev[d] : first);
+ }