22 #include <lemon/core.h>  | 
    22 #include <lemon/core.h>  | 
    23 #include <lemon/error.h>  | 
    23 #include <lemon/error.h>  | 
    24 #include <lemon/bits/default_map.h>  | 
    24 #include <lemon/bits/default_map.h>  | 
    25 #include <lemon/bits/map_extender.h>  | 
    25 #include <lemon/bits/map_extender.h>  | 
    26   | 
    26   | 
    27 ///\ingroup digraphbits  | 
    27 //\ingroup digraphbits  | 
    28 ///\file  | 
    28 //\file  | 
    29 ///\brief Extenders for the arc set types  | 
    29 //\brief Extenders for the arc set types  | 
    30 namespace lemon { | 
    30 namespace lemon { | 
    31   | 
    31   | 
    32   /// \ingroup digraphbits  | 
    32   // \ingroup digraphbits  | 
    33   ///  | 
    33   //  | 
    34   /// \brief Extender for the ArcSets  | 
    34   // \brief Extender for the ArcSets  | 
    35   template <typename Base>  | 
    35   template <typename Base>  | 
    36   class ArcSetExtender : public Base { | 
    36   class ArcSetExtender : public Base { | 
    37   public:  | 
    37   public:  | 
    38   | 
    38   | 
    39     typedef Base Parent;  | 
    39     typedef Base Parent;  | 
    70     }  | 
    70     }  | 
    71   | 
    71   | 
    72   | 
    72   | 
    73     // Alteration notifier extensions  | 
    73     // Alteration notifier extensions  | 
    74   | 
    74   | 
    75     /// The arc observer registry.  | 
    75     // The arc observer registry.  | 
    76     typedef AlterationNotifier<ArcSetExtender, Arc> ArcNotifier;  | 
    76     typedef AlterationNotifier<ArcSetExtender, Arc> ArcNotifier;  | 
    77   | 
    77   | 
    78   protected:  | 
    78   protected:  | 
    79   | 
    79   | 
    80     mutable ArcNotifier arc_notifier;  | 
    80     mutable ArcNotifier arc_notifier;  | 
    81   | 
    81   | 
    82   public:  | 
    82   public:  | 
    83   | 
    83   | 
    84     using Parent::notifier;  | 
    84     using Parent::notifier;  | 
    85   | 
    85   | 
    86     /// \brief Gives back the arc alteration notifier.  | 
    86     // Gives back the arc alteration notifier.  | 
    87     ///  | 
         | 
    88     /// Gives back the arc alteration notifier.  | 
         | 
    89     ArcNotifier& notifier(Arc) const { | 
    87     ArcNotifier& notifier(Arc) const { | 
    90       return arc_notifier;  | 
    88       return arc_notifier;  | 
    91     }  | 
    89     }  | 
    92   | 
    90   | 
    93     // Iterable extensions  | 
    91     // Iterable extensions  | 
   183 	return *this;   | 
   181 	return *this;   | 
   184       }  | 
   182       }  | 
   185   | 
   183   | 
   186     };  | 
   184     };  | 
   187   | 
   185   | 
   188     /// \brief Base node of the iterator  | 
   186     // \brief Base node of the iterator  | 
   189     ///  | 
   187     //  | 
   190     /// Returns the base node (ie. the source in this case) of the iterator  | 
   188     // Returns the base node (ie. the source in this case) of the iterator  | 
   191     Node baseNode(const OutArcIt &e) const { | 
   189     Node baseNode(const OutArcIt &e) const { | 
   192       return Parent::source(static_cast<const Arc&>(e));  | 
   190       return Parent::source(static_cast<const Arc&>(e));  | 
   193     }  | 
   191     }  | 
   194     /// \brief Running node of the iterator  | 
   192     // \brief Running node of the iterator  | 
   195     ///  | 
   193     //  | 
   196     /// Returns the running node (ie. the target in this case) of the  | 
   194     // Returns the running node (ie. the target in this case) of the  | 
   197     /// iterator  | 
   195     // iterator  | 
   198     Node runningNode(const OutArcIt &e) const { | 
   196     Node runningNode(const OutArcIt &e) const { | 
   199       return Parent::target(static_cast<const Arc&>(e));  | 
   197       return Parent::target(static_cast<const Arc&>(e));  | 
   200     }  | 
   198     }  | 
   201   | 
   199   | 
   202     /// \brief Base node of the iterator  | 
   200     // \brief Base node of the iterator  | 
   203     ///  | 
   201     //  | 
   204     /// Returns the base node (ie. the target in this case) of the iterator  | 
   202     // Returns the base node (ie. the target in this case) of the iterator  | 
   205     Node baseNode(const InArcIt &e) const { | 
   203     Node baseNode(const InArcIt &e) const { | 
   206       return Parent::target(static_cast<const Arc&>(e));  | 
   204       return Parent::target(static_cast<const Arc&>(e));  | 
   207     }  | 
   205     }  | 
   208     /// \brief Running node of the iterator  | 
   206     // \brief Running node of the iterator  | 
   209     ///  | 
   207     //  | 
   210     /// Returns the running node (ie. the source in this case) of the  | 
   208     // Returns the running node (ie. the source in this case) of the  | 
   211     /// iterator  | 
   209     // iterator  | 
   212     Node runningNode(const InArcIt &e) const { | 
   210     Node runningNode(const InArcIt &e) const { | 
   213       return Parent::source(static_cast<const Arc&>(e));  | 
   211       return Parent::source(static_cast<const Arc&>(e));  | 
   214     }  | 
   212     }  | 
   215   | 
   213   | 
   216     using Parent::first;  | 
   214     using Parent::first;  | 
   490 	digraph->nextInc(*this, direction);  | 
   488 	digraph->nextInc(*this, direction);  | 
   491 	return *this;   | 
   489 	return *this;   | 
   492       }  | 
   490       }  | 
   493     };  | 
   491     };  | 
   494   | 
   492   | 
   495     /// \brief Base node of the iterator  | 
   493     // \brief Base node of the iterator  | 
   496     ///  | 
   494     //  | 
   497     /// Returns the base node (ie. the source in this case) of the iterator  | 
   495     // Returns the base node (ie. the source in this case) of the iterator  | 
   498     Node baseNode(const OutArcIt &e) const { | 
   496     Node baseNode(const OutArcIt &e) const { | 
   499       return Parent::source(static_cast<const Arc&>(e));  | 
   497       return Parent::source(static_cast<const Arc&>(e));  | 
   500     }  | 
   498     }  | 
   501     /// \brief Running node of the iterator  | 
   499     // \brief Running node of the iterator  | 
   502     ///  | 
   500     //  | 
   503     /// Returns the running node (ie. the target in this case) of the  | 
   501     // Returns the running node (ie. the target in this case) of the  | 
   504     /// iterator  | 
   502     // iterator  | 
   505     Node runningNode(const OutArcIt &e) const { | 
   503     Node runningNode(const OutArcIt &e) const { | 
   506       return Parent::target(static_cast<const Arc&>(e));  | 
   504       return Parent::target(static_cast<const Arc&>(e));  | 
   507     }  | 
   505     }  | 
   508   | 
   506   | 
   509     /// \brief Base node of the iterator  | 
   507     // \brief Base node of the iterator  | 
   510     ///  | 
   508     //  | 
   511     /// Returns the base node (ie. the target in this case) of the iterator  | 
   509     // Returns the base node (ie. the target in this case) of the iterator  | 
   512     Node baseNode(const InArcIt &e) const { | 
   510     Node baseNode(const InArcIt &e) const { | 
   513       return Parent::target(static_cast<const Arc&>(e));  | 
   511       return Parent::target(static_cast<const Arc&>(e));  | 
   514     }  | 
   512     }  | 
   515     /// \brief Running node of the iterator  | 
   513     // \brief Running node of the iterator  | 
   516     ///  | 
   514     //  | 
   517     /// Returns the running node (ie. the source in this case) of the  | 
   515     // Returns the running node (ie. the source in this case) of the  | 
   518     /// iterator  | 
   516     // iterator  | 
   519     Node runningNode(const InArcIt &e) const { | 
   517     Node runningNode(const InArcIt &e) const { | 
   520       return Parent::source(static_cast<const Arc&>(e));  | 
   518       return Parent::source(static_cast<const Arc&>(e));  | 
   521     }  | 
   519     }  | 
   522   | 
   520   | 
   523     /// Base node of the iterator  | 
   521     // Base node of the iterator  | 
   524     ///  | 
   522     //  | 
   525     /// Returns the base node of the iterator  | 
   523     // Returns the base node of the iterator  | 
   526     Node baseNode(const IncEdgeIt &e) const { | 
   524     Node baseNode(const IncEdgeIt &e) const { | 
   527       return e.direction ? u(e) : v(e);  | 
   525       return e.direction ? u(e) : v(e);  | 
   528     }  | 
   526     }  | 
   529     /// Running node of the iterator  | 
   527     // Running node of the iterator  | 
   530     ///  | 
   528     //  | 
   531     /// Returns the running node of the iterator  | 
   529     // Returns the running node of the iterator  | 
   532     Node runningNode(const IncEdgeIt &e) const { | 
   530     Node runningNode(const IncEdgeIt &e) const { | 
   533       return e.direction ? v(e) : u(e);  | 
   531       return e.direction ? v(e) : u(e);  | 
   534     }  | 
   532     }  | 
   535   | 
   533   | 
   536   | 
   534   |