Merge
authorAlpar Juttner <alpar@cs.elte.hu>
Sat, 27 Sep 2008 14:33:28 +0200
changeset 287bb40b6db0a58
parent 286 da414906fe21
parent 285 d8dc5acf739b
child 288 47b3a3b67837
child 290 f6899946c1ac
Merge
lemon/bfs.h
lemon/dfs.h
lemon/dijkstra.h
     1.1 --- a/lemon/bfs.h	Fri Sep 26 12:40:11 2008 +0200
     1.2 +++ b/lemon/bfs.h	Sat Sep 27 14:33:28 2008 +0200
     1.3 @@ -54,7 +54,6 @@
     1.4      ///This function instantiates a \ref PredMap.
     1.5      ///\param g is the digraph, to which we would like to define the
     1.6      ///\ref PredMap.
     1.7 -    ///\todo The digraph alone may be insufficient to initialize
     1.8      static PredMap *createPredMap(const Digraph &g)
     1.9      {
    1.10        return new PredMap(g);
    1.11 @@ -64,7 +63,6 @@
    1.12  
    1.13      ///The type of the map that indicates which nodes are processed.
    1.14      ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
    1.15 -    ///By default it is a NullMap.
    1.16      typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
    1.17      ///Instantiates a \ref ProcessedMap.
    1.18  
    1.19 @@ -196,8 +194,7 @@
    1.20      int _queue_head,_queue_tail,_queue_next_dist;
    1.21      int _curr_dist;
    1.22  
    1.23 -    ///Creates the maps if necessary.
    1.24 -    ///\todo Better memory allocation (instead of new).
    1.25 +    //Creates the maps if necessary.
    1.26      void create_maps()
    1.27      {
    1.28        if(!_pred) {
    1.29 @@ -848,7 +845,6 @@
    1.30      ///This function instantiates a \ref PredMap.
    1.31      ///\param g is the digraph, to which we would like to define the
    1.32      ///\ref PredMap.
    1.33 -    ///\todo The digraph alone may be insufficient to initialize
    1.34      static PredMap *createPredMap(const Digraph &g)
    1.35      {
    1.36        return new PredMap(g);
    1.37 @@ -1370,8 +1366,7 @@
    1.38      std::vector<typename Digraph::Node> _list;
    1.39      int _list_front, _list_back;
    1.40  
    1.41 -    ///Creates the maps if necessary.
    1.42 -    ///\todo Better memory allocation (instead of new).
    1.43 +    //Creates the maps if necessary.
    1.44      void create_maps() {
    1.45        if(!_reached) {
    1.46          local_reached = true;
     2.1 --- a/lemon/bits/base_extender.h	Fri Sep 26 12:40:11 2008 +0200
     2.2 +++ b/lemon/bits/base_extender.h	Sat Sep 27 14:33:28 2008 +0200
     2.3 @@ -105,9 +105,6 @@
     2.4  
     2.5      /// Returns whether the given directed arc has the same orientation
     2.6      /// as the corresponding edge.
     2.7 -    ///
     2.8 -    /// \todo reference to the corresponding point of the undirected digraph
     2.9 -    /// concept. "What does the direction of an edge mean?"
    2.10      static bool direction(const Arc &a) { return a.forward; }
    2.11  
    2.12      using Parent::first;
     3.1 --- a/lemon/bits/vector_map.h	Fri Sep 26 12:40:11 2008 +0200
     3.2 +++ b/lemon/bits/vector_map.h	Sat Sep 27 14:33:28 2008 +0200
     3.3 @@ -42,10 +42,9 @@
     3.4    /// automatically updates the map when a key is added to or erased from
     3.5    /// the map. This map type uses the std::vector to store the values.
     3.6    ///
     3.7 -  /// \tparam _Notifier The AlterationNotifier that will notify this map.
     3.8 +  /// \tparam _Graph The graph this map is attached to.
     3.9    /// \tparam _Item The item type of the graph items.
    3.10    /// \tparam _Value The value type of the map.
    3.11 -  /// \todo Fix the doc: there is _Graph parameter instead of _Notifier.
    3.12    template <typename _Graph, typename _Item, typename _Value>
    3.13    class VectorMap
    3.14      : public ItemSetTraits<_Graph, _Item>::ItemNotifier::ObserverBase {
     4.1 --- a/lemon/concept_check.h	Fri Sep 26 12:40:11 2008 +0200
     4.2 +++ b/lemon/concept_check.h	Sat Sep 27 14:33:28 2008 +0200
     4.3 @@ -16,28 +16,12 @@
     4.4   *
     4.5   */
     4.6  
     4.7 -// This file contains a modified version of the concept checking
     4.8 -// utility from BOOST.
     4.9 -// See the appropriate copyright notice below.
    4.10 -
    4.11 -// (C) Copyright Jeremy Siek 2000.
    4.12 -// Distributed under the Boost Software License, Version 1.0. (See
    4.13 -// accompanying file LICENSE_1_0.txt or copy at
    4.14 -// http://www.boost.org/LICENSE_1_0.txt)
    4.15 -//
    4.16 -// Revision History:
    4.17 -//   05 May   2001: Workarounds for HP aCC from Thomas Matelich. (Jeremy Siek)
    4.18 -//   02 April 2001: Removed limits header altogether. (Jeremy Siek)
    4.19 -//   01 April 2001: Modified to use new <boost/limits.hpp> header. (JMaddock)
    4.20 -//
    4.21 -
    4.22 -// See http://www.boost.org/libs/concept_check for documentation.
    4.23 +// The contents of this file was inspired by the concept checking
    4.24 +// utility of the BOOST library (http://www.boost.org).
    4.25  
    4.26  ///\file
    4.27  ///\brief Basic utilities for concept checking.
    4.28  ///
    4.29 -///\todo Are we still using BOOST concept checking utility?
    4.30 -///Is the BOOST copyright notice necessary?
    4.31  
    4.32  #ifndef LEMON_CONCEPT_CHECK_H
    4.33  #define LEMON_CONCEPT_CHECK_H
     5.1 --- a/lemon/concepts/path.h	Fri Sep 26 12:40:11 2008 +0200
     5.2 +++ b/lemon/concepts/path.h	Sat Sep 27 14:33:28 2008 +0200
     5.3 @@ -20,7 +20,6 @@
     5.4  ///\file
     5.5  ///\brief Classes for representing paths in digraphs.
     5.6  ///
     5.7 -///\todo Iterators have obsolete style
     5.8  
     5.9  #ifndef LEMON_CONCEPT_PATH_H
    5.10  #define LEMON_CONCEPT_PATH_H
     6.1 --- a/lemon/core.h	Fri Sep 26 12:40:11 2008 +0200
     6.2 +++ b/lemon/core.h	Sat Sep 27 14:33:28 2008 +0200
     6.3 @@ -58,10 +58,10 @@
     6.4    /// \addtogroup gutils
     6.5    /// @{
     6.6  
     6.7 -  ///Creates convenience typedefs for the digraph types and iterators
     6.8 +  ///Create convenient typedefs for the digraph types and iterators
     6.9  
    6.10 -  ///This \c \#define creates convenience typedefs for the following types
    6.11 -  ///of \c Digraph: \c Node,  \c NodeIt, \c Arc, \c ArcIt, \c InArcIt,
    6.12 +  ///This \c \#define creates convenient type definitions for the following
    6.13 +  ///types of \c Digraph: \c Node,  \c NodeIt, \c Arc, \c ArcIt, \c InArcIt,
    6.14    ///\c OutArcIt, \c BoolNodeMap, \c IntNodeMap, \c DoubleNodeMap,
    6.15    ///\c BoolArcMap, \c IntArcMap, \c DoubleArcMap.
    6.16    ///
    6.17 @@ -80,9 +80,9 @@
    6.18    typedef Digraph::NodeMap<double> DoubleNodeMap;                       \
    6.19    typedef Digraph::ArcMap<bool> BoolArcMap;                             \
    6.20    typedef Digraph::ArcMap<int> IntArcMap;                               \
    6.21 -  typedef Digraph::ArcMap<double> DoubleArcMap
    6.22 +  typedef Digraph::ArcMap<double> DoubleArcMap;
    6.23  
    6.24 -  ///Creates convenience typedefs for the digraph types and iterators
    6.25 +  ///Create convenient typedefs for the digraph types and iterators
    6.26  
    6.27    ///\see DIGRAPH_TYPEDEFS
    6.28    ///
    6.29 @@ -100,17 +100,17 @@
    6.30    typedef typename Digraph::template NodeMap<double> DoubleNodeMap;     \
    6.31    typedef typename Digraph::template ArcMap<bool> BoolArcMap;           \
    6.32    typedef typename Digraph::template ArcMap<int> IntArcMap;             \
    6.33 -  typedef typename Digraph::template ArcMap<double> DoubleArcMap
    6.34 +  typedef typename Digraph::template ArcMap<double> DoubleArcMap;
    6.35  
    6.36 -  ///Creates convenience typedefs for the graph types and iterators
    6.37 +  ///Create convenient typedefs for the graph types and iterators
    6.38  
    6.39 -  ///This \c \#define creates the same convenience typedefs as defined
    6.40 +  ///This \c \#define creates the same convenient type definitions as defined
    6.41    ///by \ref DIGRAPH_TYPEDEFS(Graph) and six more, namely it creates
    6.42    ///\c Edge, \c EdgeIt, \c IncEdgeIt, \c BoolEdgeMap, \c IntEdgeMap,
    6.43    ///\c DoubleEdgeMap.
    6.44    ///
    6.45    ///\note If the graph type is a dependent type, ie. the graph type depend
    6.46 -  ///on a template parameter, then use \c TEMPLATE_DIGRAPH_TYPEDEFS()
    6.47 +  ///on a template parameter, then use \c TEMPLATE_GRAPH_TYPEDEFS()
    6.48    ///macro.
    6.49  #define GRAPH_TYPEDEFS(Graph)                                           \
    6.50    DIGRAPH_TYPEDEFS(Graph);                                              \
    6.51 @@ -119,9 +119,9 @@
    6.52    typedef Graph::IncEdgeIt IncEdgeIt;                                   \
    6.53    typedef Graph::EdgeMap<bool> BoolEdgeMap;                             \
    6.54    typedef Graph::EdgeMap<int> IntEdgeMap;                               \
    6.55 -  typedef Graph::EdgeMap<double> DoubleEdgeMap
    6.56 +  typedef Graph::EdgeMap<double> DoubleEdgeMap;
    6.57  
    6.58 -  ///Creates convenience typedefs for the graph types and iterators
    6.59 +  ///Create convenient typedefs for the graph types and iterators
    6.60  
    6.61    ///\see GRAPH_TYPEDEFS
    6.62    ///
    6.63 @@ -134,12 +134,12 @@
    6.64    typedef typename Graph::IncEdgeIt IncEdgeIt;                          \
    6.65    typedef typename Graph::template EdgeMap<bool> BoolEdgeMap;           \
    6.66    typedef typename Graph::template EdgeMap<int> IntEdgeMap;             \
    6.67 -  typedef typename Graph::template EdgeMap<double> DoubleEdgeMap
    6.68 +  typedef typename Graph::template EdgeMap<double> DoubleEdgeMap;
    6.69  
    6.70 -  /// \brief Function to count the items in the graph.
    6.71 +  /// \brief Function to count the items in a graph.
    6.72    ///
    6.73 -  /// This function counts the items (nodes, arcs etc) in the graph.
    6.74 -  /// The complexity of the function is O(n) because
    6.75 +  /// This function counts the items (nodes, arcs etc.) in a graph.
    6.76 +  /// The complexity of the function is linear because
    6.77    /// it iterates on all of the items.
    6.78    template <typename Graph, typename Item>
    6.79    inline int countItems(const Graph& g) {
    6.80 @@ -176,11 +176,11 @@
    6.81    /// \brief Function to count the nodes in the graph.
    6.82    ///
    6.83    /// This function counts the nodes in the graph.
    6.84 -  /// The complexity of the function is O(n) but for some
    6.85 -  /// graph structures it is specialized to run in O(1).
    6.86 +  /// The complexity of the function is <em>O</em>(<em>n</em>), but for some
    6.87 +  /// graph structures it is specialized to run in <em>O</em>(1).
    6.88    ///
    6.89 -  /// If the graph contains a \e nodeNum() member function and a
    6.90 -  /// \e NodeNumTag tag then this function calls directly the member
    6.91 +  /// \note If the graph contains a \c nodeNum() member function and a
    6.92 +  /// \c NodeNumTag tag then this function calls directly the member
    6.93    /// function to query the cardinality of the node set.
    6.94    template <typename Graph>
    6.95    inline int countNodes(const Graph& g) {
    6.96 @@ -212,11 +212,11 @@
    6.97    /// \brief Function to count the arcs in the graph.
    6.98    ///
    6.99    /// This function counts the arcs in the graph.
   6.100 -  /// The complexity of the function is O(e) but for some
   6.101 -  /// graph structures it is specialized to run in O(1).
   6.102 +  /// The complexity of the function is <em>O</em>(<em>m</em>), but for some
   6.103 +  /// graph structures it is specialized to run in <em>O</em>(1).
   6.104    ///
   6.105 -  /// If the graph contains a \e arcNum() member function and a
   6.106 -  /// \e EdgeNumTag tag then this function calls directly the member
   6.107 +  /// \note If the graph contains a \c arcNum() member function and a
   6.108 +  /// \c ArcNumTag tag then this function calls directly the member
   6.109    /// function to query the cardinality of the arc set.
   6.110    template <typename Graph>
   6.111    inline int countArcs(const Graph& g) {
   6.112 @@ -224,6 +224,7 @@
   6.113    }
   6.114  
   6.115    // Edge counting:
   6.116 +
   6.117    namespace _core_bits {
   6.118  
   6.119      template <typename Graph, typename Enable = void>
   6.120 @@ -247,11 +248,11 @@
   6.121    /// \brief Function to count the edges in the graph.
   6.122    ///
   6.123    /// This function counts the edges in the graph.
   6.124 -  /// The complexity of the function is O(m) but for some
   6.125 -  /// graph structures it is specialized to run in O(1).
   6.126 +  /// The complexity of the function is <em>O</em>(<em>m</em>), but for some
   6.127 +  /// graph structures it is specialized to run in <em>O</em>(1).
   6.128    ///
   6.129 -  /// If the graph contains a \e edgeNum() member function and a
   6.130 -  /// \e EdgeNumTag tag then this function calls directly the member
   6.131 +  /// \note If the graph contains a \c edgeNum() member function and a
   6.132 +  /// \c EdgeNumTag tag then this function calls directly the member
   6.133    /// function to query the cardinality of the edge set.
   6.134    template <typename Graph>
   6.135    inline int countEdges(const Graph& g) {
   6.136 @@ -272,28 +273,28 @@
   6.137    /// \brief Function to count the number of the out-arcs from node \c n.
   6.138    ///
   6.139    /// This function counts the number of the out-arcs from node \c n
   6.140 -  /// in the graph.
   6.141 +  /// in the graph \c g.
   6.142    template <typename Graph>
   6.143 -  inline int countOutArcs(const Graph& _g,  const typename Graph::Node& _n) {
   6.144 -    return countNodeDegree<Graph, typename Graph::OutArcIt>(_g, _n);
   6.145 +  inline int countOutArcs(const Graph& g,  const typename Graph::Node& n) {
   6.146 +    return countNodeDegree<Graph, typename Graph::OutArcIt>(g, n);
   6.147    }
   6.148  
   6.149    /// \brief Function to count the number of the in-arcs to node \c n.
   6.150    ///
   6.151    /// This function counts the number of the in-arcs to node \c n
   6.152 -  /// in the graph.
   6.153 +  /// in the graph \c g.
   6.154    template <typename Graph>
   6.155 -  inline int countInArcs(const Graph& _g,  const typename Graph::Node& _n) {
   6.156 -    return countNodeDegree<Graph, typename Graph::InArcIt>(_g, _n);
   6.157 +  inline int countInArcs(const Graph& g,  const typename Graph::Node& n) {
   6.158 +    return countNodeDegree<Graph, typename Graph::InArcIt>(g, n);
   6.159    }
   6.160  
   6.161    /// \brief Function to count the number of the inc-edges to node \c n.
   6.162    ///
   6.163    /// This function counts the number of the inc-edges to node \c n
   6.164 -  /// in the graph.
   6.165 +  /// in the undirected graph \c g.
   6.166    template <typename Graph>
   6.167 -  inline int countIncEdges(const Graph& _g,  const typename Graph::Node& _n) {
   6.168 -    return countNodeDegree<Graph, typename Graph::IncEdgeIt>(_g, _n);
   6.169 +  inline int countIncEdges(const Graph& g,  const typename Graph::Node& n) {
   6.170 +    return countNodeDegree<Graph, typename Graph::IncEdgeIt>(g, n);
   6.171    }
   6.172  
   6.173    namespace _core_bits {
   6.174 @@ -307,12 +308,12 @@
   6.175      };
   6.176  
   6.177      template <typename Digraph, typename Item, typename RefMap,
   6.178 -              typename ToMap, typename FromMap>
   6.179 +              typename FromMap, typename ToMap>
   6.180      class MapCopy : public MapCopyBase<Digraph, Item, RefMap> {
   6.181      public:
   6.182  
   6.183 -      MapCopy(ToMap& tmap, const FromMap& map)
   6.184 -        : _tmap(tmap), _map(map) {}
   6.185 +      MapCopy(const FromMap& map, ToMap& tmap)
   6.186 +        : _map(map), _tmap(tmap) {}
   6.187  
   6.188        virtual void copy(const Digraph& digraph, const RefMap& refMap) {
   6.189          typedef typename ItemSetTraits<Digraph, Item>::ItemIt ItemIt;
   6.190 @@ -322,23 +323,23 @@
   6.191        }
   6.192  
   6.193      private:
   6.194 +      const FromMap& _map;
   6.195        ToMap& _tmap;
   6.196 -      const FromMap& _map;
   6.197      };
   6.198  
   6.199      template <typename Digraph, typename Item, typename RefMap, typename It>
   6.200      class ItemCopy : public MapCopyBase<Digraph, Item, RefMap> {
   6.201      public:
   6.202  
   6.203 -      ItemCopy(It& it, const Item& item) : _it(it), _item(item) {}
   6.204 +      ItemCopy(const Item& item, It& it) : _item(item), _it(it) {}
   6.205  
   6.206        virtual void copy(const Digraph&, const RefMap& refMap) {
   6.207          _it = refMap[_item];
   6.208        }
   6.209  
   6.210      private:
   6.211 +      Item _item;
   6.212        It& _it;
   6.213 -      Item _item;
   6.214      };
   6.215  
   6.216      template <typename Digraph, typename Item, typename RefMap, typename Ref>
   6.217 @@ -379,7 +380,7 @@
   6.218      template <typename Digraph, typename Enable = void>
   6.219      struct DigraphCopySelector {
   6.220        template <typename From, typename NodeRefMap, typename ArcRefMap>
   6.221 -      static void copy(Digraph &to, const From& from,
   6.222 +      static void copy(const From& from, Digraph &to,
   6.223                         NodeRefMap& nodeRefMap, ArcRefMap& arcRefMap) {
   6.224          for (typename From::NodeIt it(from); it != INVALID; ++it) {
   6.225            nodeRefMap[it] = to.addNode();
   6.226 @@ -397,7 +398,7 @@
   6.227        typename enable_if<typename Digraph::BuildTag, void>::type>
   6.228      {
   6.229        template <typename From, typename NodeRefMap, typename ArcRefMap>
   6.230 -      static void copy(Digraph &to, const From& from,
   6.231 +      static void copy(const From& from, Digraph &to,
   6.232                         NodeRefMap& nodeRefMap, ArcRefMap& arcRefMap) {
   6.233          to.build(from, nodeRefMap, arcRefMap);
   6.234        }
   6.235 @@ -406,7 +407,7 @@
   6.236      template <typename Graph, typename Enable = void>
   6.237      struct GraphCopySelector {
   6.238        template <typename From, typename NodeRefMap, typename EdgeRefMap>
   6.239 -      static void copy(Graph &to, const From& from,
   6.240 +      static void copy(const From& from, Graph &to,
   6.241                         NodeRefMap& nodeRefMap, EdgeRefMap& edgeRefMap) {
   6.242          for (typename From::NodeIt it(from); it != INVALID; ++it) {
   6.243            nodeRefMap[it] = to.addNode();
   6.244 @@ -424,7 +425,7 @@
   6.245        typename enable_if<typename Graph::BuildTag, void>::type>
   6.246      {
   6.247        template <typename From, typename NodeRefMap, typename EdgeRefMap>
   6.248 -      static void copy(Graph &to, const From& from,
   6.249 +      static void copy(const From& from, Graph &to,
   6.250                         NodeRefMap& nodeRefMap, EdgeRefMap& edgeRefMap) {
   6.251          to.build(from, nodeRefMap, edgeRefMap);
   6.252        }
   6.253 @@ -435,39 +436,39 @@
   6.254    /// \brief Class to copy a digraph.
   6.255    ///
   6.256    /// Class to copy a digraph to another digraph (duplicate a digraph). The
   6.257 -  /// simplest way of using it is through the \c copyDigraph() function.
   6.258 +  /// simplest way of using it is through the \c digraphCopy() function.
   6.259    ///
   6.260 -  /// This class not just make a copy of a graph, but it can create
   6.261 +  /// This class not only make a copy of a digraph, but it can create
   6.262    /// references and cross references between the nodes and arcs of
   6.263 -  /// the two graphs, it can copy maps for use with the newly created
   6.264 -  /// graph and copy nodes and arcs.
   6.265 +  /// the two digraphs, and it can copy maps to use with the newly created
   6.266 +  /// digraph.
   6.267    ///
   6.268 -  /// To make a copy from a graph, first an instance of DigraphCopy
   6.269 -  /// should be created, then the data belongs to the graph should
   6.270 +  /// To make a copy from a digraph, first an instance of DigraphCopy
   6.271 +  /// should be created, then the data belongs to the digraph should
   6.272    /// assigned to copy. In the end, the \c run() member should be
   6.273    /// called.
   6.274    ///
   6.275 -  /// The next code copies a graph with several data:
   6.276 +  /// The next code copies a digraph with several data:
   6.277    ///\code
   6.278 -  ///  DigraphCopy<NewGraph, OrigGraph> dc(new_graph, orig_graph);
   6.279 -  ///  // create a reference for the nodes
   6.280 +  ///  DigraphCopy<OrigGraph, NewGraph> cg(orig_graph, new_graph);
   6.281 +  ///  // Create references for the nodes
   6.282    ///  OrigGraph::NodeMap<NewGraph::Node> nr(orig_graph);
   6.283 -  ///  dc.nodeRef(nr);
   6.284 -  ///  // create a cross reference (inverse) for the arcs
   6.285 +  ///  cg.nodeRef(nr);
   6.286 +  ///  // Create cross references (inverse) for the arcs
   6.287    ///  NewGraph::ArcMap<OrigGraph::Arc> acr(new_graph);
   6.288 -  ///  dc.arcCrossRef(acr);
   6.289 -  ///  // copy an arc map
   6.290 +  ///  cg.arcCrossRef(acr);
   6.291 +  ///  // Copy an arc map
   6.292    ///  OrigGraph::ArcMap<double> oamap(orig_graph);
   6.293    ///  NewGraph::ArcMap<double> namap(new_graph);
   6.294 -  ///  dc.arcMap(namap, oamap);
   6.295 -  ///  // copy a node
   6.296 +  ///  cg.arcMap(oamap, namap);
   6.297 +  ///  // Copy a node
   6.298    ///  OrigGraph::Node on;
   6.299    ///  NewGraph::Node nn;
   6.300 -  ///  dc.node(nn, on);
   6.301 -  ///  // Executions of copy
   6.302 -  ///  dc.run();
   6.303 +  ///  cg.node(on, nn);
   6.304 +  ///  // Execute copying
   6.305 +  ///  cg.run();
   6.306    ///\endcode
   6.307 -  template <typename To, typename From>
   6.308 +  template <typename From, typename To>
   6.309    class DigraphCopy {
   6.310    private:
   6.311  
   6.312 @@ -482,20 +483,18 @@
   6.313      typedef typename From::template NodeMap<TNode> NodeRefMap;
   6.314      typedef typename From::template ArcMap<TArc> ArcRefMap;
   6.315  
   6.316 -
   6.317    public:
   6.318  
   6.319 -
   6.320 -    /// \brief Constructor for the DigraphCopy.
   6.321 +    /// \brief Constructor of DigraphCopy.
   6.322      ///
   6.323 -    /// It copies the content of the \c _from digraph into the
   6.324 -    /// \c _to digraph.
   6.325 -    DigraphCopy(To& to, const From& from)
   6.326 +    /// Constructor of DigraphCopy for copying the content of the
   6.327 +    /// \c from digraph into the \c to digraph.
   6.328 +    DigraphCopy(const From& from, To& to)
   6.329        : _from(from), _to(to) {}
   6.330  
   6.331 -    /// \brief Destructor of the DigraphCopy
   6.332 +    /// \brief Destructor of DigraphCopy
   6.333      ///
   6.334 -    /// Destructor of the DigraphCopy
   6.335 +    /// Destructor of DigraphCopy.
   6.336      ~DigraphCopy() {
   6.337        for (int i = 0; i < int(_node_maps.size()); ++i) {
   6.338          delete _node_maps[i];
   6.339 @@ -506,12 +505,12 @@
   6.340  
   6.341      }
   6.342  
   6.343 -    /// \brief Copies the node references into the given map.
   6.344 +    /// \brief Copy the node references into the given map.
   6.345      ///
   6.346 -    /// Copies the node references into the given map. The parameter
   6.347 -    /// should be a map, which key type is the Node type of the source
   6.348 -    /// graph, while the value type is the Node type of the
   6.349 -    /// destination graph.
   6.350 +    /// This function copies the node references into the given map.
   6.351 +    /// The parameter should be a map, whose key type is the Node type of
   6.352 +    /// the source digraph, while the value type is the Node type of the
   6.353 +    /// destination digraph.
   6.354      template <typename NodeRef>
   6.355      DigraphCopy& nodeRef(NodeRef& map) {
   6.356        _node_maps.push_back(new _core_bits::RefCopy<From, Node,
   6.357 @@ -519,12 +518,12 @@
   6.358        return *this;
   6.359      }
   6.360  
   6.361 -    /// \brief Copies the node cross references into the given map.
   6.362 +    /// \brief Copy the node cross references into the given map.
   6.363      ///
   6.364 -    ///  Copies the node cross references (reverse references) into
   6.365 -    ///  the given map. The parameter should be a map, which key type
   6.366 -    ///  is the Node type of the destination graph, while the value type is
   6.367 -    ///  the Node type of the source graph.
   6.368 +    /// This function copies the node cross references (reverse references)
   6.369 +    /// into the given map. The parameter should be a map, whose key type
   6.370 +    /// is the Node type of the destination digraph, while the value type is
   6.371 +    /// the Node type of the source digraph.
   6.372      template <typename NodeCrossRef>
   6.373      DigraphCopy& nodeCrossRef(NodeCrossRef& map) {
   6.374        _node_maps.push_back(new _core_bits::CrossRefCopy<From, Node,
   6.375 @@ -532,30 +531,35 @@
   6.376        return *this;
   6.377      }
   6.378  
   6.379 -    /// \brief Make copy of the given map.
   6.380 +    /// \brief Make a copy of the given node map.
   6.381      ///
   6.382 -    /// Makes copy of the given map for the newly created digraph.
   6.383 -    /// The new map's key type is the destination graph's node type,
   6.384 -    /// and the copied map's key type is the source graph's node type.
   6.385 -    template <typename ToMap, typename FromMap>
   6.386 -    DigraphCopy& nodeMap(ToMap& tmap, const FromMap& map) {
   6.387 +    /// This function makes a copy of the given node map for the newly
   6.388 +    /// created digraph.
   6.389 +    /// The key type of the new map \c tmap should be the Node type of the
   6.390 +    /// destination digraph, and the key type of the original map \c map
   6.391 +    /// should be the Node type of the source digraph.
   6.392 +    template <typename FromMap, typename ToMap>
   6.393 +    DigraphCopy& nodeMap(const FromMap& map, ToMap& tmap) {
   6.394        _node_maps.push_back(new _core_bits::MapCopy<From, Node,
   6.395 -                           NodeRefMap, ToMap, FromMap>(tmap, map));
   6.396 +                           NodeRefMap, FromMap, ToMap>(map, tmap));
   6.397        return *this;
   6.398      }
   6.399  
   6.400      /// \brief Make a copy of the given node.
   6.401      ///
   6.402 -    /// Make a copy of the given node.
   6.403 -    DigraphCopy& node(TNode& tnode, const Node& snode) {
   6.404 +    /// This function makes a copy of the given node.
   6.405 +    DigraphCopy& node(const Node& node, TNode& tnode) {
   6.406        _node_maps.push_back(new _core_bits::ItemCopy<From, Node,
   6.407 -                           NodeRefMap, TNode>(tnode, snode));
   6.408 +                           NodeRefMap, TNode>(node, tnode));
   6.409        return *this;
   6.410      }
   6.411  
   6.412 -    /// \brief Copies the arc references into the given map.
   6.413 +    /// \brief Copy the arc references into the given map.
   6.414      ///
   6.415 -    /// Copies the arc references into the given map.
   6.416 +    /// This function copies the arc references into the given map.
   6.417 +    /// The parameter should be a map, whose key type is the Arc type of
   6.418 +    /// the source digraph, while the value type is the Arc type of the
   6.419 +    /// destination digraph.
   6.420      template <typename ArcRef>
   6.421      DigraphCopy& arcRef(ArcRef& map) {
   6.422        _arc_maps.push_back(new _core_bits::RefCopy<From, Arc,
   6.423 @@ -563,10 +567,12 @@
   6.424        return *this;
   6.425      }
   6.426  
   6.427 -    /// \brief Copies the arc cross references into the given map.
   6.428 +    /// \brief Copy the arc cross references into the given map.
   6.429      ///
   6.430 -    ///  Copies the arc cross references (reverse references) into
   6.431 -    ///  the given map.
   6.432 +    /// This function copies the arc cross references (reverse references)
   6.433 +    /// into the given map. The parameter should be a map, whose key type
   6.434 +    /// is the Arc type of the destination digraph, while the value type is
   6.435 +    /// the Arc type of the source digraph.
   6.436      template <typename ArcCrossRef>
   6.437      DigraphCopy& arcCrossRef(ArcCrossRef& map) {
   6.438        _arc_maps.push_back(new _core_bits::CrossRefCopy<From, Arc,
   6.439 @@ -574,36 +580,38 @@
   6.440        return *this;
   6.441      }
   6.442  
   6.443 -    /// \brief Make copy of the given map.
   6.444 +    /// \brief Make a copy of the given arc map.
   6.445      ///
   6.446 -    /// Makes copy of the given map for the newly created digraph.
   6.447 -    /// The new map's key type is the to digraph's arc type,
   6.448 -    /// and the copied map's key type is the from digraph's arc
   6.449 -    /// type.
   6.450 -    template <typename ToMap, typename FromMap>
   6.451 -    DigraphCopy& arcMap(ToMap& tmap, const FromMap& map) {
   6.452 +    /// This function makes a copy of the given arc map for the newly
   6.453 +    /// created digraph.
   6.454 +    /// The key type of the new map \c tmap should be the Arc type of the
   6.455 +    /// destination digraph, and the key type of the original map \c map
   6.456 +    /// should be the Arc type of the source digraph.
   6.457 +    template <typename FromMap, typename ToMap>
   6.458 +    DigraphCopy& arcMap(const FromMap& map, ToMap& tmap) {
   6.459        _arc_maps.push_back(new _core_bits::MapCopy<From, Arc,
   6.460 -                          ArcRefMap, ToMap, FromMap>(tmap, map));
   6.461 +                          ArcRefMap, FromMap, ToMap>(map, tmap));
   6.462        return *this;
   6.463      }
   6.464  
   6.465      /// \brief Make a copy of the given arc.
   6.466      ///
   6.467 -    /// Make a copy of the given arc.
   6.468 -    DigraphCopy& arc(TArc& tarc, const Arc& sarc) {
   6.469 +    /// This function makes a copy of the given arc.
   6.470 +    DigraphCopy& arc(const Arc& arc, TArc& tarc) {
   6.471        _arc_maps.push_back(new _core_bits::ItemCopy<From, Arc,
   6.472 -                          ArcRefMap, TArc>(tarc, sarc));
   6.473 +                          ArcRefMap, TArc>(arc, tarc));
   6.474        return *this;
   6.475      }
   6.476  
   6.477 -    /// \brief Executes the copies.
   6.478 +    /// \brief Execute copying.
   6.479      ///
   6.480 -    /// Executes the copies.
   6.481 +    /// This function executes the copying of the digraph along with the
   6.482 +    /// copying of the assigned data.
   6.483      void run() {
   6.484        NodeRefMap nodeRefMap(_from);
   6.485        ArcRefMap arcRefMap(_from);
   6.486        _core_bits::DigraphCopySelector<To>::
   6.487 -        copy(_to, _from, nodeRefMap, arcRefMap);
   6.488 +        copy(_from, _to, nodeRefMap, arcRefMap);
   6.489        for (int i = 0; i < int(_node_maps.size()); ++i) {
   6.490          _node_maps[i]->copy(_from, nodeRefMap);
   6.491        }
   6.492 @@ -614,47 +622,46 @@
   6.493  
   6.494    protected:
   6.495  
   6.496 -
   6.497      const From& _from;
   6.498      To& _to;
   6.499  
   6.500      std::vector<_core_bits::MapCopyBase<From, Node, NodeRefMap>* >
   6.501 -    _node_maps;
   6.502 +      _node_maps;
   6.503  
   6.504      std::vector<_core_bits::MapCopyBase<From, Arc, ArcRefMap>* >
   6.505 -    _arc_maps;
   6.506 +      _arc_maps;
   6.507  
   6.508    };
   6.509  
   6.510    /// \brief Copy a digraph to another digraph.
   6.511    ///
   6.512 -  /// Copy a digraph to another digraph. The complete usage of the
   6.513 -  /// function is detailed in the DigraphCopy class, but a short
   6.514 -  /// example shows a basic work:
   6.515 +  /// This function copies a digraph to another digraph.
   6.516 +  /// The complete usage of it is detailed in the DigraphCopy class, but
   6.517 +  /// a short example shows a basic work:
   6.518    ///\code
   6.519 -  /// copyDigraph(trg, src).nodeRef(nr).arcCrossRef(ecr).run();
   6.520 +  /// digraphCopy(src, trg).nodeRef(nr).arcCrossRef(acr).run();
   6.521    ///\endcode
   6.522    ///
   6.523    /// After the copy the \c nr map will contain the mapping from the
   6.524    /// nodes of the \c from digraph to the nodes of the \c to digraph and
   6.525 -  /// \c ecr will contain the mapping from the arcs of the \c to digraph
   6.526 +  /// \c acr will contain the mapping from the arcs of the \c to digraph
   6.527    /// to the arcs of the \c from digraph.
   6.528    ///
   6.529    /// \see DigraphCopy
   6.530 -  template <typename To, typename From>
   6.531 -  DigraphCopy<To, From> copyDigraph(To& to, const From& from) {
   6.532 -    return DigraphCopy<To, From>(to, from);
   6.533 +  template <typename From, typename To>
   6.534 +  DigraphCopy<From, To> digraphCopy(const From& from, To& to) {
   6.535 +    return DigraphCopy<From, To>(from, to);
   6.536    }
   6.537  
   6.538    /// \brief Class to copy a graph.
   6.539    ///
   6.540    /// Class to copy a graph to another graph (duplicate a graph). The
   6.541 -  /// simplest way of using it is through the \c copyGraph() function.
   6.542 +  /// simplest way of using it is through the \c graphCopy() function.
   6.543    ///
   6.544 -  /// This class not just make a copy of a graph, but it can create
   6.545 +  /// This class not only make a copy of a graph, but it can create
   6.546    /// references and cross references between the nodes, edges and arcs of
   6.547 -  /// the two graphs, it can copy maps for use with the newly created
   6.548 -  /// graph and copy nodes, edges and arcs.
   6.549 +  /// the two graphs, and it can copy maps for using with the newly created
   6.550 +  /// graph.
   6.551    ///
   6.552    /// To make a copy from a graph, first an instance of GraphCopy
   6.553    /// should be created, then the data belongs to the graph should
   6.554 @@ -663,25 +670,25 @@
   6.555    ///
   6.556    /// The next code copies a graph with several data:
   6.557    ///\code
   6.558 -  ///  GraphCopy<NewGraph, OrigGraph> dc(new_graph, orig_graph);
   6.559 -  ///  // create a reference for the nodes
   6.560 +  ///  GraphCopy<OrigGraph, NewGraph> cg(orig_graph, new_graph);
   6.561 +  ///  // Create references for the nodes
   6.562    ///  OrigGraph::NodeMap<NewGraph::Node> nr(orig_graph);
   6.563 -  ///  dc.nodeRef(nr);
   6.564 -  ///  // create a cross reference (inverse) for the edges
   6.565 -  ///  NewGraph::EdgeMap<OrigGraph::Arc> ecr(new_graph);
   6.566 -  ///  dc.edgeCrossRef(ecr);
   6.567 -  ///  // copy an arc map
   6.568 -  ///  OrigGraph::ArcMap<double> oamap(orig_graph);
   6.569 -  ///  NewGraph::ArcMap<double> namap(new_graph);
   6.570 -  ///  dc.arcMap(namap, oamap);
   6.571 -  ///  // copy a node
   6.572 +  ///  cg.nodeRef(nr);
   6.573 +  ///  // Create cross references (inverse) for the edges
   6.574 +  ///  NewGraph::EdgeMap<OrigGraph::Edge> ecr(new_graph);
   6.575 +  ///  cg.edgeCrossRef(ecr);
   6.576 +  ///  // Copy an edge map
   6.577 +  ///  OrigGraph::EdgeMap<double> oemap(orig_graph);
   6.578 +  ///  NewGraph::EdgeMap<double> nemap(new_graph);
   6.579 +  ///  cg.edgeMap(oemap, nemap);
   6.580 +  ///  // Copy a node
   6.581    ///  OrigGraph::Node on;
   6.582    ///  NewGraph::Node nn;
   6.583 -  ///  dc.node(nn, on);
   6.584 -  ///  // Executions of copy
   6.585 -  ///  dc.run();
   6.586 +  ///  cg.node(on, nn);
   6.587 +  ///  // Execute copying
   6.588 +  ///  cg.run();
   6.589    ///\endcode
   6.590 -  template <typename To, typename From>
   6.591 +  template <typename From, typename To>
   6.592    class GraphCopy {
   6.593    private:
   6.594  
   6.595 @@ -700,9 +707,9 @@
   6.596      typedef typename From::template EdgeMap<TEdge> EdgeRefMap;
   6.597  
   6.598      struct ArcRefMap {
   6.599 -      ArcRefMap(const To& to, const From& from,
   6.600 +      ArcRefMap(const From& from, const To& to,
   6.601                  const EdgeRefMap& edge_ref, const NodeRefMap& node_ref)
   6.602 -        : _to(to), _from(from),
   6.603 +        : _from(from), _to(to),
   6.604            _edge_ref(edge_ref), _node_ref(node_ref) {}
   6.605  
   6.606        typedef typename From::Arc Key;
   6.607 @@ -716,26 +723,24 @@
   6.608          return _to.direct(_edge_ref[key], forward);
   6.609        }
   6.610  
   6.611 +      const From& _from;
   6.612        const To& _to;
   6.613 -      const From& _from;
   6.614        const EdgeRefMap& _edge_ref;
   6.615        const NodeRefMap& _node_ref;
   6.616      };
   6.617  
   6.618 -
   6.619    public:
   6.620  
   6.621 -
   6.622 -    /// \brief Constructor for the GraphCopy.
   6.623 +    /// \brief Constructor of GraphCopy.
   6.624      ///
   6.625 -    /// It copies the content of the \c _from graph into the
   6.626 -    /// \c _to graph.
   6.627 -    GraphCopy(To& to, const From& from)
   6.628 +    /// Constructor of GraphCopy for copying the content of the
   6.629 +    /// \c from graph into the \c to graph.
   6.630 +    GraphCopy(const From& from, To& to)
   6.631        : _from(from), _to(to) {}
   6.632  
   6.633 -    /// \brief Destructor of the GraphCopy
   6.634 +    /// \brief Destructor of GraphCopy
   6.635      ///
   6.636 -    /// Destructor of the GraphCopy
   6.637 +    /// Destructor of GraphCopy.
   6.638      ~GraphCopy() {
   6.639        for (int i = 0; i < int(_node_maps.size()); ++i) {
   6.640          delete _node_maps[i];
   6.641 @@ -746,12 +751,14 @@
   6.642        for (int i = 0; i < int(_edge_maps.size()); ++i) {
   6.643          delete _edge_maps[i];
   6.644        }
   6.645 -
   6.646      }
   6.647  
   6.648 -    /// \brief Copies the node references into the given map.
   6.649 +    /// \brief Copy the node references into the given map.
   6.650      ///
   6.651 -    /// Copies the node references into the given map.
   6.652 +    /// This function copies the node references into the given map.
   6.653 +    /// The parameter should be a map, whose key type is the Node type of
   6.654 +    /// the source graph, while the value type is the Node type of the
   6.655 +    /// destination graph.
   6.656      template <typename NodeRef>
   6.657      GraphCopy& nodeRef(NodeRef& map) {
   6.658        _node_maps.push_back(new _core_bits::RefCopy<From, Node,
   6.659 @@ -759,10 +766,12 @@
   6.660        return *this;
   6.661      }
   6.662  
   6.663 -    /// \brief Copies the node cross references into the given map.
   6.664 +    /// \brief Copy the node cross references into the given map.
   6.665      ///
   6.666 -    ///  Copies the node cross references (reverse references) into
   6.667 -    ///  the given map.
   6.668 +    /// This function copies the node cross references (reverse references)
   6.669 +    /// into the given map. The parameter should be a map, whose key type
   6.670 +    /// is the Node type of the destination graph, while the value type is
   6.671 +    /// the Node type of the source graph.
   6.672      template <typename NodeCrossRef>
   6.673      GraphCopy& nodeCrossRef(NodeCrossRef& map) {
   6.674        _node_maps.push_back(new _core_bits::CrossRefCopy<From, Node,
   6.675 @@ -770,31 +779,35 @@
   6.676        return *this;
   6.677      }
   6.678  
   6.679 -    /// \brief Make copy of the given map.
   6.680 +    /// \brief Make a copy of the given node map.
   6.681      ///
   6.682 -    /// Makes copy of the given map for the newly created graph.
   6.683 -    /// The new map's key type is the to graph's node type,
   6.684 -    /// and the copied map's key type is the from graph's node
   6.685 -    /// type.
   6.686 -    template <typename ToMap, typename FromMap>
   6.687 -    GraphCopy& nodeMap(ToMap& tmap, const FromMap& map) {
   6.688 +    /// This function makes a copy of the given node map for the newly
   6.689 +    /// created graph.
   6.690 +    /// The key type of the new map \c tmap should be the Node type of the
   6.691 +    /// destination graph, and the key type of the original map \c map
   6.692 +    /// should be the Node type of the source graph.
   6.693 +    template <typename FromMap, typename ToMap>
   6.694 +    GraphCopy& nodeMap(const FromMap& map, ToMap& tmap) {
   6.695        _node_maps.push_back(new _core_bits::MapCopy<From, Node,
   6.696 -                           NodeRefMap, ToMap, FromMap>(tmap, map));
   6.697 +                           NodeRefMap, FromMap, ToMap>(map, tmap));
   6.698        return *this;
   6.699      }
   6.700  
   6.701      /// \brief Make a copy of the given node.
   6.702      ///
   6.703 -    /// Make a copy of the given node.
   6.704 -    GraphCopy& node(TNode& tnode, const Node& snode) {
   6.705 +    /// This function makes a copy of the given node.
   6.706 +    GraphCopy& node(const Node& node, TNode& tnode) {
   6.707        _node_maps.push_back(new _core_bits::ItemCopy<From, Node,
   6.708 -                           NodeRefMap, TNode>(tnode, snode));
   6.709 +                           NodeRefMap, TNode>(node, tnode));
   6.710        return *this;
   6.711      }
   6.712  
   6.713 -    /// \brief Copies the arc references into the given map.
   6.714 +    /// \brief Copy the arc references into the given map.
   6.715      ///
   6.716 -    /// Copies the arc references into the given map.
   6.717 +    /// This function copies the arc references into the given map.
   6.718 +    /// The parameter should be a map, whose key type is the Arc type of
   6.719 +    /// the source graph, while the value type is the Arc type of the
   6.720 +    /// destination graph.
   6.721      template <typename ArcRef>
   6.722      GraphCopy& arcRef(ArcRef& map) {
   6.723        _arc_maps.push_back(new _core_bits::RefCopy<From, Arc,
   6.724 @@ -802,10 +815,12 @@
   6.725        return *this;
   6.726      }
   6.727  
   6.728 -    /// \brief Copies the arc cross references into the given map.
   6.729 +    /// \brief Copy the arc cross references into the given map.
   6.730      ///
   6.731 -    ///  Copies the arc cross references (reverse references) into
   6.732 -    ///  the given map.
   6.733 +    /// This function copies the arc cross references (reverse references)
   6.734 +    /// into the given map. The parameter should be a map, whose key type
   6.735 +    /// is the Arc type of the destination graph, while the value type is
   6.736 +    /// the Arc type of the source graph.
   6.737      template <typename ArcCrossRef>
   6.738      GraphCopy& arcCrossRef(ArcCrossRef& map) {
   6.739        _arc_maps.push_back(new _core_bits::CrossRefCopy<From, Arc,
   6.740 @@ -813,31 +828,35 @@
   6.741        return *this;
   6.742      }
   6.743  
   6.744 -    /// \brief Make copy of the given map.
   6.745 +    /// \brief Make a copy of the given arc map.
   6.746      ///
   6.747 -    /// Makes copy of the given map for the newly created graph.
   6.748 -    /// The new map's key type is the to graph's arc type,
   6.749 -    /// and the copied map's key type is the from graph's arc
   6.750 -    /// type.
   6.751 -    template <typename ToMap, typename FromMap>
   6.752 -    GraphCopy& arcMap(ToMap& tmap, const FromMap& map) {
   6.753 +    /// This function makes a copy of the given arc map for the newly
   6.754 +    /// created graph.
   6.755 +    /// The key type of the new map \c tmap should be the Arc type of the
   6.756 +    /// destination graph, and the key type of the original map \c map
   6.757 +    /// should be the Arc type of the source graph.
   6.758 +    template <typename FromMap, typename ToMap>
   6.759 +    GraphCopy& arcMap(const FromMap& map, ToMap& tmap) {
   6.760        _arc_maps.push_back(new _core_bits::MapCopy<From, Arc,
   6.761 -                          ArcRefMap, ToMap, FromMap>(tmap, map));
   6.762 +                          ArcRefMap, FromMap, ToMap>(map, tmap));
   6.763        return *this;
   6.764      }
   6.765  
   6.766      /// \brief Make a copy of the given arc.
   6.767      ///
   6.768 -    /// Make a copy of the given arc.
   6.769 -    GraphCopy& arc(TArc& tarc, const Arc& sarc) {
   6.770 +    /// This function makes a copy of the given arc.
   6.771 +    GraphCopy& arc(const Arc& arc, TArc& tarc) {
   6.772        _arc_maps.push_back(new _core_bits::ItemCopy<From, Arc,
   6.773 -                          ArcRefMap, TArc>(tarc, sarc));
   6.774 +                          ArcRefMap, TArc>(arc, tarc));
   6.775        return *this;
   6.776      }
   6.777  
   6.778 -    /// \brief Copies the edge references into the given map.
   6.779 +    /// \brief Copy the edge references into the given map.
   6.780      ///
   6.781 -    /// Copies the edge references into the given map.
   6.782 +    /// This function copies the edge references into the given map.
   6.783 +    /// The parameter should be a map, whose key type is the Edge type of
   6.784 +    /// the source graph, while the value type is the Edge type of the
   6.785 +    /// destination graph.
   6.786      template <typename EdgeRef>
   6.787      GraphCopy& edgeRef(EdgeRef& map) {
   6.788        _edge_maps.push_back(new _core_bits::RefCopy<From, Edge,
   6.789 @@ -845,10 +864,12 @@
   6.790        return *this;
   6.791      }
   6.792  
   6.793 -    /// \brief Copies the edge cross references into the given map.
   6.794 +    /// \brief Copy the edge cross references into the given map.
   6.795      ///
   6.796 -    /// Copies the edge cross references (reverse
   6.797 -    /// references) into the given map.
   6.798 +    /// This function copies the edge cross references (reverse references)
   6.799 +    /// into the given map. The parameter should be a map, whose key type
   6.800 +    /// is the Edge type of the destination graph, while the value type is
   6.801 +    /// the Edge type of the source graph.
   6.802      template <typename EdgeCrossRef>
   6.803      GraphCopy& edgeCrossRef(EdgeCrossRef& map) {
   6.804        _edge_maps.push_back(new _core_bits::CrossRefCopy<From,
   6.805 @@ -856,37 +877,39 @@
   6.806        return *this;
   6.807      }
   6.808  
   6.809 -    /// \brief Make copy of the given map.
   6.810 +    /// \brief Make a copy of the given edge map.
   6.811      ///
   6.812 -    /// Makes copy of the given map for the newly created graph.
   6.813 -    /// The new map's key type is the to graph's edge type,
   6.814 -    /// and the copied map's key type is the from graph's edge
   6.815 -    /// type.
   6.816 -    template <typename ToMap, typename FromMap>
   6.817 -    GraphCopy& edgeMap(ToMap& tmap, const FromMap& map) {
   6.818 +    /// This function makes a copy of the given edge map for the newly
   6.819 +    /// created graph.
   6.820 +    /// The key type of the new map \c tmap should be the Edge type of the
   6.821 +    /// destination graph, and the key type of the original map \c map
   6.822 +    /// should be the Edge type of the source graph.
   6.823 +    template <typename FromMap, typename ToMap>
   6.824 +    GraphCopy& edgeMap(const FromMap& map, ToMap& tmap) {
   6.825        _edge_maps.push_back(new _core_bits::MapCopy<From, Edge,
   6.826 -                           EdgeRefMap, ToMap, FromMap>(tmap, map));
   6.827 +                           EdgeRefMap, FromMap, ToMap>(map, tmap));
   6.828        return *this;
   6.829      }
   6.830  
   6.831      /// \brief Make a copy of the given edge.
   6.832      ///
   6.833 -    /// Make a copy of the given edge.
   6.834 -    GraphCopy& edge(TEdge& tedge, const Edge& sedge) {
   6.835 +    /// This function makes a copy of the given edge.
   6.836 +    GraphCopy& edge(const Edge& edge, TEdge& tedge) {
   6.837        _edge_maps.push_back(new _core_bits::ItemCopy<From, Edge,
   6.838 -                           EdgeRefMap, TEdge>(tedge, sedge));
   6.839 +                           EdgeRefMap, TEdge>(edge, tedge));
   6.840        return *this;
   6.841      }
   6.842  
   6.843 -    /// \brief Executes the copies.
   6.844 +    /// \brief Execute copying.
   6.845      ///
   6.846 -    /// Executes the copies.
   6.847 +    /// This function executes the copying of the graph along with the
   6.848 +    /// copying of the assigned data.
   6.849      void run() {
   6.850        NodeRefMap nodeRefMap(_from);
   6.851        EdgeRefMap edgeRefMap(_from);
   6.852 -      ArcRefMap arcRefMap(_to, _from, edgeRefMap, nodeRefMap);
   6.853 +      ArcRefMap arcRefMap(_from, _to, edgeRefMap, nodeRefMap);
   6.854        _core_bits::GraphCopySelector<To>::
   6.855 -        copy(_to, _from, nodeRefMap, edgeRefMap);
   6.856 +        copy(_from, _to, nodeRefMap, edgeRefMap);
   6.857        for (int i = 0; i < int(_node_maps.size()); ++i) {
   6.858          _node_maps[i]->copy(_from, nodeRefMap);
   6.859        }
   6.860 @@ -904,35 +927,35 @@
   6.861      To& _to;
   6.862  
   6.863      std::vector<_core_bits::MapCopyBase<From, Node, NodeRefMap>* >
   6.864 -    _node_maps;
   6.865 +      _node_maps;
   6.866  
   6.867      std::vector<_core_bits::MapCopyBase<From, Arc, ArcRefMap>* >
   6.868 -    _arc_maps;
   6.869 +      _arc_maps;
   6.870  
   6.871      std::vector<_core_bits::MapCopyBase<From, Edge, EdgeRefMap>* >
   6.872 -    _edge_maps;
   6.873 +      _edge_maps;
   6.874  
   6.875    };
   6.876  
   6.877    /// \brief Copy a graph to another graph.
   6.878    ///
   6.879 -  /// Copy a graph to another graph. The complete usage of the
   6.880 -  /// function is detailed in the GraphCopy class, but a short
   6.881 -  /// example shows a basic work:
   6.882 +  /// This function copies a graph to another graph.
   6.883 +  /// The complete usage of it is detailed in the GraphCopy class,
   6.884 +  /// but a short example shows a basic work:
   6.885    ///\code
   6.886 -  /// copyGraph(trg, src).nodeRef(nr).arcCrossRef(ecr).run();
   6.887 +  /// graphCopy(src, trg).nodeRef(nr).edgeCrossRef(ecr).run();
   6.888    ///\endcode
   6.889    ///
   6.890    /// After the copy the \c nr map will contain the mapping from the
   6.891    /// nodes of the \c from graph to the nodes of the \c to graph and
   6.892 -  /// \c ecr will contain the mapping from the arcs of the \c to graph
   6.893 -  /// to the arcs of the \c from graph.
   6.894 +  /// \c ecr will contain the mapping from the edges of the \c to graph
   6.895 +  /// to the edges of the \c from graph.
   6.896    ///
   6.897    /// \see GraphCopy
   6.898 -  template <typename To, typename From>
   6.899 -  GraphCopy<To, From>
   6.900 -  copyGraph(To& to, const From& from) {
   6.901 -    return GraphCopy<To, From>(to, from);
   6.902 +  template <typename From, typename To>
   6.903 +  GraphCopy<From, To>
   6.904 +  graphCopy(const From& from, To& to) {
   6.905 +    return GraphCopy<From, To>(from, to);
   6.906    }
   6.907  
   6.908    namespace _core_bits {
   6.909 @@ -957,7 +980,7 @@
   6.910      template <typename Graph>
   6.911      struct FindArcSelector<
   6.912        Graph,
   6.913 -      typename enable_if<typename Graph::FindEdgeTag, void>::type>
   6.914 +      typename enable_if<typename Graph::FindArcTag, void>::type>
   6.915      {
   6.916        typedef typename Graph::Node Node;
   6.917        typedef typename Graph::Arc Arc;
   6.918 @@ -967,9 +990,10 @@
   6.919      };
   6.920    }
   6.921  
   6.922 -  /// \brief Finds an arc between two nodes of a graph.
   6.923 +  /// \brief Find an arc between two nodes of a digraph.
   6.924    ///
   6.925 -  /// Finds an arc from node \c u to node \c v in graph \c g.
   6.926 +  /// This function finds an arc from node \c u to node \c v in the
   6.927 +  /// digraph \c g.
   6.928    ///
   6.929    /// If \c prev is \ref INVALID (this is the default value), then
   6.930    /// it finds the first arc from \c u to \c v. Otherwise it looks for
   6.931 @@ -978,15 +1002,16 @@
   6.932    ///
   6.933    /// Thus you can iterate through each arc from \c u to \c v as it follows.
   6.934    ///\code
   6.935 -  /// for(Arc e=findArc(g,u,v);e!=INVALID;e=findArc(g,u,v,e)) {
   6.936 +  /// for(Arc e = findArc(g,u,v); e != INVALID; e = findArc(g,u,v,e)) {
   6.937    ///   ...
   6.938    /// }
   6.939    ///\endcode
   6.940    ///
   6.941 -  ///\sa ArcLookUp
   6.942 -  ///\sa AllArcLookUp
   6.943 -  ///\sa DynArcLookUp
   6.944 +  /// \note \ref ConArcIt provides iterator interface for the same
   6.945 +  /// functionality.
   6.946 +  ///
   6.947    ///\sa ConArcIt
   6.948 +  ///\sa ArcLookUp, AllArcLookUp, DynArcLookUp
   6.949    template <typename Graph>
   6.950    inline typename Graph::Arc
   6.951    findArc(const Graph &g, typename Graph::Node u, typename Graph::Node v,
   6.952 @@ -994,10 +1019,10 @@
   6.953      return _core_bits::FindArcSelector<Graph>::find(g, u, v, prev);
   6.954    }
   6.955  
   6.956 -  /// \brief Iterator for iterating on arcs connected the same nodes.
   6.957 +  /// \brief Iterator for iterating on parallel arcs connecting the same nodes.
   6.958    ///
   6.959 -  /// Iterator for iterating on arcs connected the same nodes. It is
   6.960 -  /// higher level interface for the findArc() function. You can
   6.961 +  /// Iterator for iterating on parallel arcs connecting the same nodes. It is
   6.962 +  /// a higher level interface for the \ref findArc() function. You can
   6.963    /// use it the following way:
   6.964    ///\code
   6.965    /// for (ConArcIt<Graph> it(g, src, trg); it != INVALID; ++it) {
   6.966 @@ -1006,9 +1031,7 @@
   6.967    ///\endcode
   6.968    ///
   6.969    ///\sa findArc()
   6.970 -  ///\sa ArcLookUp
   6.971 -  ///\sa AllArcLookUp
   6.972 -  ///\sa DynArcLookUp
   6.973 +  ///\sa ArcLookUp, AllArcLookUp, DynArcLookUp
   6.974    template <typename _Graph>
   6.975    class ConArcIt : public _Graph::Arc {
   6.976    public:
   6.977 @@ -1021,16 +1044,15 @@
   6.978  
   6.979      /// \brief Constructor.
   6.980      ///
   6.981 -    /// Construct a new ConArcIt iterating on the arcs which
   6.982 -    /// connects the \c u and \c v node.
   6.983 +    /// Construct a new ConArcIt iterating on the arcs that
   6.984 +    /// connects nodes \c u and \c v.
   6.985      ConArcIt(const Graph& g, Node u, Node v) : _graph(g) {
   6.986        Parent::operator=(findArc(_graph, u, v));
   6.987      }
   6.988  
   6.989      /// \brief Constructor.
   6.990      ///
   6.991 -    /// Construct a new ConArcIt which continues the iterating from
   6.992 -    /// the \c e arc.
   6.993 +    /// Construct a new ConArcIt that continues the iterating from arc \c a.
   6.994      ConArcIt(const Graph& g, Arc a) : Parent(a), _graph(g) {}
   6.995  
   6.996      /// \brief Increment operator.
   6.997 @@ -1091,27 +1113,29 @@
   6.998      };
   6.999    }
  6.1000  
  6.1001 -  /// \brief Finds an edge between two nodes of a graph.
  6.1002 +  /// \brief Find an edge between two nodes of a graph.
  6.1003    ///
  6.1004 -  /// Finds an edge from node \c u to node \c v in graph \c g.
  6.1005 -  /// If the node \c u and node \c v is equal then each loop edge
  6.1006 +  /// This function finds an edge from node \c u to node \c v in graph \c g.
  6.1007 +  /// If node \c u and node \c v is equal then each loop edge
  6.1008    /// will be enumerated once.
  6.1009    ///
  6.1010    /// If \c prev is \ref INVALID (this is the default value), then
  6.1011 -  /// it finds the first arc from \c u to \c v. Otherwise it looks for
  6.1012 -  /// the next arc from \c u to \c v after \c prev.
  6.1013 -  /// \return The found arc or \ref INVALID if there is no such an arc.
  6.1014 +  /// it finds the first edge from \c u to \c v. Otherwise it looks for
  6.1015 +  /// the next edge from \c u to \c v after \c prev.
  6.1016 +  /// \return The found edge or \ref INVALID if there is no such an edge.
  6.1017    ///
  6.1018 -  /// Thus you can iterate through each arc from \c u to \c v as it follows.
  6.1019 +  /// Thus you can iterate through each edge between \c u and \c v
  6.1020 +  /// as it follows.
  6.1021    ///\code
  6.1022 -  /// for(Edge e = findEdge(g,u,v); e != INVALID;
  6.1023 -  ///     e = findEdge(g,u,v,e)) {
  6.1024 +  /// for(Edge e = findEdge(g,u,v); e != INVALID; e = findEdge(g,u,v,e)) {
  6.1025    ///   ...
  6.1026    /// }
  6.1027    ///\endcode
  6.1028    ///
  6.1029 +  /// \note \ref ConEdgeIt provides iterator interface for the same
  6.1030 +  /// functionality.
  6.1031 +  ///
  6.1032    ///\sa ConEdgeIt
  6.1033 -
  6.1034    template <typename Graph>
  6.1035    inline typename Graph::Edge
  6.1036    findEdge(const Graph &g, typename Graph::Node u, typename Graph::Node v,
  6.1037 @@ -1119,13 +1143,13 @@
  6.1038      return _core_bits::FindEdgeSelector<Graph>::find(g, u, v, p);
  6.1039    }
  6.1040  
  6.1041 -  /// \brief Iterator for iterating on edges connected the same nodes.
  6.1042 +  /// \brief Iterator for iterating on parallel edges connecting the same nodes.
  6.1043    ///
  6.1044 -  /// Iterator for iterating on edges connected the same nodes. It is
  6.1045 -  /// higher level interface for the findEdge() function. You can
  6.1046 +  /// Iterator for iterating on parallel edges connecting the same nodes.
  6.1047 +  /// It is a higher level interface for the findEdge() function. You can
  6.1048    /// use it the following way:
  6.1049    ///\code
  6.1050 -  /// for (ConEdgeIt<Graph> it(g, src, trg); it != INVALID; ++it) {
  6.1051 +  /// for (ConEdgeIt<Graph> it(g, u, v); it != INVALID; ++it) {
  6.1052    ///   ...
  6.1053    /// }
  6.1054    ///\endcode
  6.1055 @@ -1143,16 +1167,15 @@
  6.1056  
  6.1057      /// \brief Constructor.
  6.1058      ///
  6.1059 -    /// Construct a new ConEdgeIt iterating on the edges which
  6.1060 -    /// connects the \c u and \c v node.
  6.1061 +    /// Construct a new ConEdgeIt iterating on the edges that
  6.1062 +    /// connects nodes \c u and \c v.
  6.1063      ConEdgeIt(const Graph& g, Node u, Node v) : _graph(g) {
  6.1064        Parent::operator=(findEdge(_graph, u, v));
  6.1065      }
  6.1066  
  6.1067      /// \brief Constructor.
  6.1068      ///
  6.1069 -    /// Construct a new ConEdgeIt which continues the iterating from
  6.1070 -    /// the \c e edge.
  6.1071 +    /// Construct a new ConEdgeIt that continues iterating from edge \c e.
  6.1072      ConEdgeIt(const Graph& g, Edge e) : Parent(e), _graph(g) {}
  6.1073  
  6.1074      /// \brief Increment operator.
  6.1075 @@ -1168,21 +1191,21 @@
  6.1076    };
  6.1077  
  6.1078  
  6.1079 -  ///Dynamic arc look up between given endpoints.
  6.1080 +  ///Dynamic arc look-up between given endpoints.
  6.1081  
  6.1082    ///Using this class, you can find an arc in a digraph from a given
  6.1083 -  ///source to a given target in amortized time <em>O(log</em>d<em>)</em>,
  6.1084 +  ///source to a given target in amortized time <em>O</em>(log<em>d</em>),
  6.1085    ///where <em>d</em> is the out-degree of the source node.
  6.1086    ///
  6.1087    ///It is possible to find \e all parallel arcs between two nodes with
  6.1088    ///the \c operator() member.
  6.1089    ///
  6.1090 -  ///See the \ref ArcLookUp and \ref AllArcLookUp classes if your
  6.1091 -  ///digraph is not changed so frequently.
  6.1092 +  ///This is a dynamic data structure. Consider to use \ref ArcLookUp or
  6.1093 +  ///\ref AllArcLookUp if your digraph is not changed so frequently.
  6.1094    ///
  6.1095 -  ///This class uses a self-adjusting binary search tree, Sleator's
  6.1096 -  ///and Tarjan's Splay tree for guarantee the logarithmic amortized
  6.1097 -  ///time bound for arc lookups. This class also guarantees the
  6.1098 +  ///This class uses a self-adjusting binary search tree, the Splay tree
  6.1099 +  ///of Sleator and Tarjan to guarantee the logarithmic amortized
  6.1100 +  ///time bound for arc look-ups. This class also guarantees the
  6.1101    ///optimal time bound in a constant factor for any distribution of
  6.1102    ///queries.
  6.1103    ///
  6.1104 @@ -1507,8 +1530,8 @@
  6.1105      ///Find an arc between two nodes.
  6.1106  
  6.1107      ///Find an arc between two nodes.
  6.1108 -    ///\param s The source node
  6.1109 -    ///\param t The target node
  6.1110 +    ///\param s The source node.
  6.1111 +    ///\param t The target node.
  6.1112      ///\param p The previous arc between \c s and \c t. It it is INVALID or
  6.1113      ///not given, the operator finds the first appropriate arc.
  6.1114      ///\return An arc from \c s to \c t after \c p or
  6.1115 @@ -1519,21 +1542,20 @@
  6.1116      ///\code
  6.1117      ///DynArcLookUp<ListDigraph> ae(g);
  6.1118      ///...
  6.1119 -    ///int n=0;
  6.1120 -    ///for(Arc e=ae(u,v);e!=INVALID;e=ae(u,v,e)) n++;
  6.1121 +    ///int n = 0;
  6.1122 +    ///for(Arc a = ae(u,v); a != INVALID; a = ae(u,v,a)) n++;
  6.1123      ///\endcode
  6.1124      ///
  6.1125 -    ///Finding the arcs take at most <em>O(</em>log<em>d)</em>
  6.1126 +    ///Finding the arcs take at most <em>O</em>(log<em>d</em>)
  6.1127      ///amortized time, specifically, the time complexity of the lookups
  6.1128      ///is equal to the optimal search tree implementation for the
  6.1129      ///current query distribution in a constant factor.
  6.1130      ///
  6.1131      ///\note This is a dynamic data structure, therefore the data
  6.1132 -    ///structure is updated after each graph alteration. However,
  6.1133 -    ///theoretically this data structure is faster than \c ArcLookUp
  6.1134 -    ///or AllEdgeLookup, but it often provides worse performance than
  6.1135 +    ///structure is updated after each graph alteration. Thus although
  6.1136 +    ///this data structure is theoretically faster than \ref ArcLookUp
  6.1137 +    ///and \ref AllArcLookup, it often provides worse performance than
  6.1138      ///them.
  6.1139 -    ///
  6.1140      Arc operator()(Node s, Node t, Arc p = INVALID) const  {
  6.1141        if (p == INVALID) {
  6.1142          Arc a = _head[s];
  6.1143 @@ -1585,19 +1607,19 @@
  6.1144  
  6.1145    };
  6.1146  
  6.1147 -  ///Fast arc look up between given endpoints.
  6.1148 +  ///Fast arc look-up between given endpoints.
  6.1149  
  6.1150    ///Using this class, you can find an arc in a digraph from a given
  6.1151 -  ///source to a given target in time <em>O(log d)</em>,
  6.1152 +  ///source to a given target in time <em>O</em>(log<em>d</em>),
  6.1153    ///where <em>d</em> is the out-degree of the source node.
  6.1154    ///
  6.1155    ///It is not possible to find \e all parallel arcs between two nodes.
  6.1156    ///Use \ref AllArcLookUp for this purpose.
  6.1157    ///
  6.1158 -  ///\warning This class is static, so you should refresh() (or at least
  6.1159 -  ///refresh(Node)) this data structure
  6.1160 -  ///whenever the digraph changes. This is a time consuming (superlinearly
  6.1161 -  ///proportional (<em>O(m</em>log<em>m)</em>) to the number of arcs).
  6.1162 +  ///\warning This class is static, so you should call refresh() (or at
  6.1163 +  ///least refresh(Node)) to refresh this data structure whenever the
  6.1164 +  ///digraph changes. This is a time consuming (superlinearly proportional
  6.1165 +  ///(<em>O</em>(<em>m</em> log<em>m</em>)) to the number of arcs).
  6.1166    ///
  6.1167    ///\tparam G The type of the underlying digraph.
  6.1168    ///
  6.1169 @@ -1646,12 +1668,12 @@
  6.1170        return me;
  6.1171      }
  6.1172    public:
  6.1173 -    ///Refresh the data structure at a node.
  6.1174 +    ///Refresh the search data structure at a node.
  6.1175  
  6.1176      ///Build up the search database of node \c n.
  6.1177      ///
  6.1178 -    ///It runs in time <em>O(d</em>log<em>d)</em>, where <em>d</em> is
  6.1179 -    ///the number of the outgoing arcs of \c n.
  6.1180 +    ///It runs in time <em>O</em>(<em>d</em> log<em>d</em>), where <em>d</em>
  6.1181 +    ///is the number of the outgoing arcs of \c n.
  6.1182      void refresh(Node n)
  6.1183      {
  6.1184        std::vector<Arc> v;
  6.1185 @@ -1667,10 +1689,9 @@
  6.1186      ///Build up the full search database. In fact, it simply calls
  6.1187      ///\ref refresh(Node) "refresh(n)" for each node \c n.
  6.1188      ///
  6.1189 -    ///It runs in time <em>O(m</em>log<em>D)</em>, where <em>m</em> is
  6.1190 -    ///the number of the arcs of \c n and <em>D</em> is the maximum
  6.1191 +    ///It runs in time <em>O</em>(<em>m</em> log<em>D</em>), where <em>m</em> is
  6.1192 +    ///the number of the arcs in the digraph and <em>D</em> is the maximum
  6.1193      ///out-degree of the digraph.
  6.1194 -
  6.1195      void refresh()
  6.1196      {
  6.1197        for(NodeIt n(_g);n!=INVALID;++n) refresh(n);
  6.1198 @@ -1678,18 +1699,16 @@
  6.1199  
  6.1200      ///Find an arc between two nodes.
  6.1201  
  6.1202 -    ///Find an arc between two nodes in time <em>O(</em>log<em>d)</em>, where
  6.1203 -    /// <em>d</em> is the number of outgoing arcs of \c s.
  6.1204 -    ///\param s The source node
  6.1205 -    ///\param t The target node
  6.1206 +    ///Find an arc between two nodes in time <em>O</em>(log<em>d</em>), where
  6.1207 +    ///<em>d</em> is the number of outgoing arcs of \c s.
  6.1208 +    ///\param s The source node.
  6.1209 +    ///\param t The target node.
  6.1210      ///\return An arc from \c s to \c t if there exists,
  6.1211      ///\ref INVALID otherwise.
  6.1212      ///
  6.1213      ///\warning If you change the digraph, refresh() must be called before using
  6.1214      ///this operator. If you change the outgoing arcs of
  6.1215 -    ///a single node \c n, then
  6.1216 -    ///\ref refresh(Node) "refresh(n)" is enough.
  6.1217 -    ///
  6.1218 +    ///a single node \c n, then \ref refresh(Node) "refresh(n)" is enough.
  6.1219      Arc operator()(Node s, Node t) const
  6.1220      {
  6.1221        Arc e;
  6.1222 @@ -1701,15 +1720,16 @@
  6.1223  
  6.1224    };
  6.1225  
  6.1226 -  ///Fast look up of all arcs between given endpoints.
  6.1227 +  ///Fast look-up of all arcs between given endpoints.
  6.1228  
  6.1229    ///This class is the same as \ref ArcLookUp, with the addition
  6.1230 -  ///that it makes it possible to find all arcs between given endpoints.
  6.1231 +  ///that it makes it possible to find all parallel arcs between given
  6.1232 +  ///endpoints.
  6.1233    ///
  6.1234 -  ///\warning This class is static, so you should refresh() (or at least
  6.1235 -  ///refresh(Node)) this data structure
  6.1236 -  ///whenever the digraph changes. This is a time consuming (superlinearly
  6.1237 -  ///proportional (<em>O(m</em>log<em>m)</em>) to the number of arcs).
  6.1238 +  ///\warning This class is static, so you should call refresh() (or at
  6.1239 +  ///least refresh(Node)) to refresh this data structure whenever the
  6.1240 +  ///digraph changes. This is a time consuming (superlinearly proportional
  6.1241 +  ///(<em>O</em>(<em>m</em> log<em>m</em>)) to the number of arcs).
  6.1242    ///
  6.1243    ///\tparam G The type of the underlying digraph.
  6.1244    ///
  6.1245 @@ -1733,7 +1753,6 @@
  6.1246        if(head==INVALID) return next;
  6.1247        else {
  6.1248          next=refreshNext(_right[head],next);
  6.1249 -//         _next[head]=next;
  6.1250          _next[head]=( next!=INVALID && _g.target(next)==_g.target(head))
  6.1251            ? next : INVALID;
  6.1252          return refreshNext(_left[head],head);
  6.1253 @@ -1758,9 +1777,8 @@
  6.1254  
  6.1255      ///Build up the search database of node \c n.
  6.1256      ///
  6.1257 -    ///It runs in time <em>O(d</em>log<em>d)</em>, where <em>d</em> is
  6.1258 +    ///It runs in time <em>O</em>(<em>d</em> log<em>d</em>), where <em>d</em> is
  6.1259      ///the number of the outgoing arcs of \c n.
  6.1260 -
  6.1261      void refresh(Node n)
  6.1262      {
  6.1263        ArcLookUp<G>::refresh(n);
  6.1264 @@ -1772,10 +1790,9 @@
  6.1265      ///Build up the full search database. In fact, it simply calls
  6.1266      ///\ref refresh(Node) "refresh(n)" for each node \c n.
  6.1267      ///
  6.1268 -    ///It runs in time <em>O(m</em>log<em>D)</em>, where <em>m</em> is
  6.1269 -    ///the number of the arcs of \c n and <em>D</em> is the maximum
  6.1270 +    ///It runs in time <em>O</em>(<em>m</em> log<em>D</em>), where <em>m</em> is
  6.1271 +    ///the number of the arcs in the digraph and <em>D</em> is the maximum
  6.1272      ///out-degree of the digraph.
  6.1273 -
  6.1274      void refresh()
  6.1275      {
  6.1276        for(NodeIt n(_g);n!=INVALID;++n) refresh(_head[n]);
  6.1277 @@ -1784,8 +1801,8 @@
  6.1278      ///Find an arc between two nodes.
  6.1279  
  6.1280      ///Find an arc between two nodes.
  6.1281 -    ///\param s The source node
  6.1282 -    ///\param t The target node
  6.1283 +    ///\param s The source node.
  6.1284 +    ///\param t The target node.
  6.1285      ///\param prev The previous arc between \c s and \c t. It it is INVALID or
  6.1286      ///not given, the operator finds the first appropriate arc.
  6.1287      ///\return An arc from \c s to \c t after \c prev or
  6.1288 @@ -1796,18 +1813,17 @@
  6.1289      ///\code
  6.1290      ///AllArcLookUp<ListDigraph> ae(g);
  6.1291      ///...
  6.1292 -    ///int n=0;
  6.1293 -    ///for(Arc e=ae(u,v);e!=INVALID;e=ae(u,v,e)) n++;
  6.1294 +    ///int n = 0;
  6.1295 +    ///for(Arc a = ae(u,v); a != INVALID; a=ae(u,v,a)) n++;
  6.1296      ///\endcode
  6.1297      ///
  6.1298 -    ///Finding the first arc take <em>O(</em>log<em>d)</em> time, where
  6.1299 -    /// <em>d</em> is the number of outgoing arcs of \c s. Then, the
  6.1300 +    ///Finding the first arc take <em>O</em>(log<em>d</em>) time, where
  6.1301 +    ///<em>d</em> is the number of outgoing arcs of \c s. Then, the
  6.1302      ///consecutive arcs are found in constant time.
  6.1303      ///
  6.1304      ///\warning If you change the digraph, refresh() must be called before using
  6.1305      ///this operator. If you change the outgoing arcs of
  6.1306 -    ///a single node \c n, then
  6.1307 -    ///\ref refresh(Node) "refresh(n)" is enough.
  6.1308 +    ///a single node \c n, then \ref refresh(Node) "refresh(n)" is enough.
  6.1309      ///
  6.1310  #ifdef DOXYGEN
  6.1311      Arc operator()(Node s, Node t, Arc prev=INVALID) const {}
     7.1 --- a/lemon/dfs.h	Fri Sep 26 12:40:11 2008 +0200
     7.2 +++ b/lemon/dfs.h	Sat Sep 27 14:33:28 2008 +0200
     7.3 @@ -55,7 +55,6 @@
     7.4      ///This function instantiates a \ref PredMap.
     7.5      ///\param g is the digraph, to which we would like to define the
     7.6      ///\ref PredMap.
     7.7 -    ///\todo The digraph alone may be insufficient to initialize
     7.8      static PredMap *createPredMap(const Digraph &g)
     7.9      {
    7.10        return new PredMap(g);
    7.11 @@ -65,7 +64,6 @@
    7.12  
    7.13      ///The type of the map that indicates which nodes are processed.
    7.14      ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
    7.15 -    ///By default it is a NullMap.
    7.16      typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
    7.17      ///Instantiates a \ref ProcessedMap.
    7.18  
    7.19 @@ -196,8 +194,7 @@
    7.20      std::vector<typename Digraph::OutArcIt> _stack;
    7.21      int _stack_head;
    7.22  
    7.23 -    ///Creates the maps if necessary.
    7.24 -    ///\todo Better memory allocation (instead of new).
    7.25 +    //Creates the maps if necessary.
    7.26      void create_maps()
    7.27      {
    7.28        if(!_pred) {
    7.29 @@ -782,7 +779,6 @@
    7.30      ///This function instantiates a \ref PredMap.
    7.31      ///\param g is the digraph, to which we would like to define the
    7.32      ///\ref PredMap.
    7.33 -    ///\todo The digraph alone may be insufficient to initialize
    7.34      static PredMap *createPredMap(const Digraph &g)
    7.35      {
    7.36        return new PredMap(g);
    7.37 @@ -1317,8 +1313,7 @@
    7.38      std::vector<typename Digraph::Arc> _stack;
    7.39      int _stack_head;
    7.40  
    7.41 -    ///Creates the maps if necessary.
    7.42 -    ///\todo Better memory allocation (instead of new).
    7.43 +    //Creates the maps if necessary.
    7.44      void create_maps() {
    7.45        if(!_reached) {
    7.46          local_reached = true;
     8.1 --- a/lemon/dijkstra.h	Fri Sep 26 12:40:11 2008 +0200
     8.2 +++ b/lemon/dijkstra.h	Sat Sep 27 14:33:28 2008 +0200
     8.3 @@ -144,7 +144,6 @@
     8.4      ///This function instantiates a \ref PredMap.
     8.5      ///\param g is the digraph, to which we would like to define the
     8.6      ///\ref PredMap.
     8.7 -    ///\todo The digraph alone may be insufficient for the initialization
     8.8      static PredMap *createPredMap(const Digraph &g)
     8.9      {
    8.10        return new PredMap(g);
    8.11 @@ -155,8 +154,6 @@
    8.12      ///The type of the map that indicates which nodes are processed.
    8.13      ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
    8.14      ///By default it is a NullMap.
    8.15 -    ///\todo If it is set to a real map,
    8.16 -    ///Dijkstra::processed() should read this.
    8.17      typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
    8.18      ///Instantiates a \ref ProcessedMap.
    8.19  
    8.20 @@ -297,8 +294,7 @@
    8.21      //Indicates if _heap is locally allocated (true) or not.
    8.22      bool local_heap;
    8.23  
    8.24 -    ///Creates the maps if necessary.
    8.25 -    ///\todo Better memory allocation (instead of new).
    8.26 +    //Creates the maps if necessary.
    8.27      void create_maps()
    8.28      {
    8.29        if(!_pred) {
    8.30 @@ -965,7 +961,6 @@
    8.31      ///This function instantiates a \ref HeapCrossRef.
    8.32      /// \param g is the digraph, to which we would like to define the
    8.33      /// HeapCrossRef.
    8.34 -    /// \todo The digraph alone may be insufficient for the initialization
    8.35      static HeapCrossRef *createHeapCrossRef(const Digraph &g)
    8.36      {
    8.37        return new HeapCrossRef(g);
    8.38 @@ -1001,7 +996,6 @@
    8.39      ///This function instantiates a \ref PredMap.
    8.40      ///\param g is the digraph, to which we would like to define the
    8.41      ///\ref PredMap.
    8.42 -    ///\todo The digraph alone may be insufficient to initialize
    8.43      static PredMap *createPredMap(const Digraph &g)
    8.44      {
    8.45        return new PredMap(g);
    8.46 @@ -1012,9 +1006,6 @@
    8.47      ///The type of the map that indicates which nodes are processed.
    8.48      ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
    8.49      ///By default it is a NullMap.
    8.50 -    ///\todo If it is set to a real map,
    8.51 -    ///Dijkstra::processed() should read this.
    8.52 -    ///\todo named parameter to set this type, function to read and write.
    8.53      typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
    8.54      ///Instantiates a \ref ProcessedMap.
    8.55  
    8.56 @@ -1060,7 +1051,6 @@
    8.57    /// as well as the \ref Dijkstra class.
    8.58    /// The \ref DijkstraWizardBase is a class to be the default traits of the
    8.59    /// \ref DijkstraWizard class.
    8.60 -  /// \todo More named parameters are required...
    8.61    template<class GR,class LM>
    8.62    class DijkstraWizardBase : public DijkstraWizardDefaultTraits<GR,LM>
    8.63    {
     9.1 --- a/lemon/error.h	Fri Sep 26 12:40:11 2008 +0200
     9.2 +++ b/lemon/error.h	Sat Sep 27 14:33:28 2008 +0200
     9.3 @@ -102,8 +102,6 @@
     9.4    protected:
     9.5      ///\e
     9.6  
     9.7 -    ///\todo The good solution is boost::shared_ptr...
     9.8 -    ///
     9.9      mutable std::auto_ptr<std::ostringstream> buf;
    9.10  
    9.11      ///\e
    10.1 --- a/lemon/graph_to_eps.h	Fri Sep 26 12:40:11 2008 +0200
    10.2 +++ b/lemon/graph_to_eps.h	Sat Sep 27 14:33:28 2008 +0200
    10.3 @@ -666,7 +666,6 @@
    10.4    ///this function calls the algorithm itself, i.e. in this case
    10.5    ///it draws the graph.
    10.6    void run() {
    10.7 -    //\todo better 'epsilon' would be nice here.
    10.8      const double EPSILON=1e-9;
    10.9      if(dontPrint) return;
   10.10  
   10.11 @@ -707,7 +706,6 @@
   10.12        double max_w=0;
   10.13        for(ArcIt e(g);e!=INVALID;++e)
   10.14          max_w=std::max(double(_arcWidths[e]),max_w);
   10.15 -      //\todo better 'epsilon' would be nice here.
   10.16        if(max_w>EPSILON) {
   10.17          _arcWidthScale/=max_w;
   10.18        }
   10.19 @@ -717,7 +715,6 @@
   10.20        double max_s=0;
   10.21        for(NodeIt n(g);n!=INVALID;++n)
   10.22          max_s=std::max(double(_nodeSizes[n]),max_s);
   10.23 -      //\todo better 'epsilon' would be nice here.
   10.24        if(max_s>EPSILON) {
   10.25          _nodeScale/=max_s;
   10.26        }
   10.27 @@ -873,7 +870,6 @@
   10.28             << -bb.left() << ' ' << -bb.bottom() << " translate\n";
   10.29        }
   10.30        else {
   10.31 -        //\todo Verify centering
   10.32          double sc= std::min((A4HEIGHT-2*A4BORDER)/bb.width(),
   10.33                    (A4WIDTH-2*A4BORDER)/bb.height());
   10.34          os << ((A4WIDTH -2*A4BORDER)-sc*bb.height())/2 + A4BORDER << ' '
   10.35 @@ -906,7 +902,6 @@
   10.36            dim2::Point<double>
   10.37              dvec(mycoords[g.target(*i)]-mycoords[g.source(*i)]);
   10.38            double l=std::sqrt(dvec.normSquare());
   10.39 -          //\todo better 'epsilon' would be nice here.
   10.40            dim2::Point<double> d(dvec/std::max(l,EPSILON));
   10.41            dim2::Point<double> m;
   10.42  //           m=dim2::Point<double>(mycoords[g.target(*i)]+
    11.1 --- a/lemon/list_graph.h	Fri Sep 26 12:40:11 2008 +0200
    11.2 +++ b/lemon/list_graph.h	Sat Sep 27 14:33:28 2008 +0200
    11.3 @@ -501,10 +501,8 @@
    11.4      ///valid. However <tt>InArcIt</tt>s and <tt>OutArcIt</tt>s may
    11.5      ///be invalidated.
    11.6      ///
    11.7 -    ///\warning This functionality cannot be used together with the
    11.8 +    ///\warning This functionality cannot be used in conjunction with the
    11.9      ///Snapshot feature.
   11.10 -    ///
   11.11 -    ///\todo It could be implemented in a bit faster way.
   11.12      Node split(Node n, bool connect = true) {
   11.13        Node b = addNode();
   11.14        for(OutArcIt e(*this,n);e!=INVALID;) {
    12.1 --- a/lemon/maps.h	Fri Sep 26 12:40:11 2008 +0200
    12.2 +++ b/lemon/maps.h	Sat Sep 27 14:33:28 2008 +0200
    12.3 @@ -484,8 +484,6 @@
    12.4    /// function.
    12.5    ///
    12.6    /// \sa CombineMap
    12.7 -  ///
    12.8 -  /// \todo Check the requirements.
    12.9    template <typename M1, typename M2>
   12.10    class ComposeMap : public MapBase<typename M2::Key, typename M1::Value> {
   12.11      const M1 &_m1;
   12.12 @@ -540,8 +538,6 @@
   12.13    /// function.
   12.14    ///
   12.15    /// \sa ComposeMap
   12.16 -  ///
   12.17 -  /// \todo Check the requirements.
   12.18    template<typename M1, typename M2, typename F,
   12.19             typename V = typename F::result_type>
   12.20    class CombineMap : public MapBase<typename M1::Key, V> {
    13.1 --- a/lemon/random.h	Fri Sep 26 12:40:11 2008 +0200
    13.2 +++ b/lemon/random.h	Sat Sep 27 14:33:28 2008 +0200
    13.3 @@ -821,7 +821,6 @@
    13.4      /// Standard Gauss distribution.
    13.5      /// \note The Cartesian form of the Box-Muller
    13.6      /// transformation is used to generate a random normal distribution.
    13.7 -    /// \todo Consider using the "ziggurat" method instead.
    13.8      double gauss()
    13.9      {
   13.10        double V1,V2,S;
    14.1 --- a/lemon/smart_graph.h	Fri Sep 26 12:40:11 2008 +0200
    14.2 +++ b/lemon/smart_graph.h	Sat Sep 27 14:33:28 2008 +0200
    14.3 @@ -300,7 +300,6 @@
    14.4      ///may be invalidated.
    14.5      ///\warning This functionality cannot be used together with the Snapshot
    14.6      ///feature.
    14.7 -    ///\todo It could be implemented in a bit faster way.
    14.8      Node split(Node n, bool connect = true)
    14.9      {
   14.10        Node b = addNode();
    15.1 --- a/lemon/time_measure.h	Fri Sep 26 12:40:11 2008 +0200
    15.2 +++ b/lemon/time_measure.h	Sat Sep 27 14:33:28 2008 +0200
    15.3 @@ -292,7 +292,6 @@
    15.4    ///\note If you want to measure the running time of the execution of a certain
    15.5    ///function, consider the usage of \ref TimeReport instead.
    15.6    ///
    15.7 -  ///\todo This shouldn't be Unix (Linux) specific.
    15.8    ///\sa TimeReport
    15.9    class Timer
   15.10    {
   15.11 @@ -487,7 +486,6 @@
   15.12    ///
   15.13    ///\sa Timer
   15.14    ///\sa NoTimeReport
   15.15 -  ///\todo There is no test case for this
   15.16    class TimeReport : public Timer
   15.17    {
   15.18      std::string _title;
    16.1 --- a/lemon/tolerance.h	Fri Sep 26 12:40:11 2008 +0200
    16.2 +++ b/lemon/tolerance.h	Sat Sep 27 14:33:28 2008 +0200
    16.3 @@ -24,8 +24,6 @@
    16.4  ///\brief A basic tool to handle the anomalies of calculation with
    16.5  ///floating point numbers.
    16.6  ///
    16.7 -///\todo It should be in a module like "Basic tools"
    16.8 -
    16.9  
   16.10  namespace lemon {
   16.11  
    17.1 --- a/scripts/chg-len.py	Fri Sep 26 12:40:11 2008 +0200
    17.2 +++ b/scripts/chg-len.py	Sat Sep 27 14:33:28 2008 +0200
    17.3 @@ -9,13 +9,14 @@
    17.4  in the revision graph from revison 0 to the current one.
    17.5  """
    17.6      exit(0)
    17.7 -plist = os.popen("hg parents --template='{rev}\n'").readlines()
    17.8 +plist = os.popen("HGRCPATH='' hg parents --template='{rev}\n'").readlines()
    17.9  if len(plist)>1:
   17.10      print "You are in the process of merging"
   17.11      exit(1)
   17.12  PAR = int(plist[0])
   17.13  
   17.14 -f = os.popen("hg log -r 0:tip --template='{rev} {parents}\n'").readlines()
   17.15 +f = os.popen("HGRCPATH='' hg log -r 0:tip --template='{rev} {parents}\n'").\
   17.16 +    readlines()
   17.17  REV = -1
   17.18  lengths=[]
   17.19  for l in f:
    18.1 --- a/test/graph_copy_test.cc	Fri Sep 26 12:40:11 2008 +0200
    18.2 +++ b/test/graph_copy_test.cc	Sat Sep 27 14:33:28 2008 +0200
    18.3 @@ -63,11 +63,11 @@
    18.4    ListDigraph::NodeMap<SmartDigraph::Node> ncr(to);
    18.5    ListDigraph::ArcMap<SmartDigraph::Arc> ecr(to);
    18.6  
    18.7 -  DigraphCopy<ListDigraph, SmartDigraph>(to, from).
    18.8 -    nodeMap(tnm, fnm).arcMap(tam, fam).
    18.9 +  digraphCopy(from, to).
   18.10 +    nodeMap(fnm, tnm).arcMap(fam, tam).
   18.11      nodeRef(nr).arcRef(er).
   18.12      nodeCrossRef(ncr).arcCrossRef(ecr).
   18.13 -    node(tn, fn).arc(ta, fa).run();
   18.14 +    node(fn, tn).arc(fa, ta).run();
   18.15  
   18.16    for (SmartDigraph::NodeIt it(from); it != INVALID; ++it) {
   18.17      check(ncr[nr[it]] == it, "Wrong copy.");
   18.18 @@ -138,11 +138,11 @@
   18.19    ListGraph::ArcMap<SmartGraph::Arc> acr(to);
   18.20    ListGraph::EdgeMap<SmartGraph::Edge> ecr(to);
   18.21  
   18.22 -  GraphCopy<ListGraph, SmartGraph>(to, from).
   18.23 -    nodeMap(tnm, fnm).arcMap(tam, fam).edgeMap(tem, fem).
   18.24 +  graphCopy(from, to).
   18.25 +    nodeMap(fnm, tnm).arcMap(fam, tam).edgeMap(fem, tem).
   18.26      nodeRef(nr).arcRef(ar).edgeRef(er).
   18.27      nodeCrossRef(ncr).arcCrossRef(acr).edgeCrossRef(ecr).
   18.28 -    node(tn, fn).arc(ta, fa).edge(te, fe).run();
   18.29 +    node(fn, tn).arc(fa, ta).edge(fe, te).run();
   18.30  
   18.31    for (SmartGraph::NodeIt it(from); it != INVALID; ++it) {
   18.32      check(ncr[nr[it]] == it, "Wrong copy.");