# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1251236018 7200
# Node ID afad5d01ef8e6510a734f77735be66a372fbf568
# Parent 4cad1981d18da48cd043d39cb4c827ada4ddf146
Simplify StaticDigraph::OutArcIt implementation (#68)
diff git a/lemon/static_graph.h b/lemon/static_graph.h
a

b


238  238  
239  239  protected: 
240  240  
241   void fastFirstOut(Arc& e, const Node& n) const { 
242   e.id = node_first_out[n.id]; 
 241  int outArcsBegin(const Node& n) const { 
 242  return node_first_out[n.id]; 
243  243  } 
244  244  
245   static void fastNextOut(Arc& e) { 
246   ++e.id; 
247   } 
248   void fastLastOut(Arc& e, const Node& n) const { 
249   e.id = node_first_out[n.id + 1]; 
 245  int outArcsEnd(const Node& n) const { 
 246  return node_first_out[n.id + 1]; 
250  247  } 
251  248  
252  249  protected: 
… 
… 

404  401  void clear() { 
405  402  Parent::clear(); 
406  403  } 
407   
408   protected: 
409   
410   using Parent::fastFirstOut; 
411   using Parent::fastNextOut; 
412   using Parent::fastLastOut; 
413  404  
414  405  public: 
415  406  
… 
… 

421  412  OutArcIt(Invalid i) : Arc(i) { } 
422  413  
423  414  OutArcIt(const StaticDigraph& digraph, const Node& node) { 
424   digraph.fastFirstOut(*this, node); 
425   digraph.fastLastOut(last, node); 
426   if (last == *this) *this = INVALID; 
 415  id = digraph.outArcsBegin(node); 
 416  end = digraph.outArcsEnd(node); 
 417  if (id == end) id = 1; 
427  418  } 
428  419  
429  420  OutArcIt(const StaticDigraph& digraph, const Arc& arc) : Arc(arc) { 
430  421  if (arc != INVALID) { 
431   digraph.fastLastOut(last, digraph.source(arc)); 
 422  end = digraph.outArcsEnd(digraph.source(arc)); 
432  423  } 
433  424  } 
434  425  
435  426  OutArcIt& operator++() { 
436   StaticDigraph::fastNextOut(*this); 
437   if (last == *this) *this = INVALID; 
 427  id = id+1 != end ? id+1 : 1; 
438  428  return *this; 
439  429  } 
440  430  
441  431  private: 
442   Arc last; 
 432  int end; 
443  433  }; 
444  434  
445  435  Node baseNode(const OutArcIt &arc) const { 