lemon/adaptors.h
changeset 474 fbd6e04acf44
parent 473 14bb8812b8af
child 475 aea2dc0518ce
     1.1 --- a/lemon/adaptors.h	Fri Jan 09 12:43:52 2009 +0100
     1.2 +++ b/lemon/adaptors.h	Fri Jan 09 12:54:27 2009 +0100
     1.3 @@ -21,7 +21,7 @@
     1.4  
     1.5  /// \ingroup graph_adaptors
     1.6  /// \file
     1.7 -/// \brief Several graph adaptors
     1.8 +/// \brief Adaptor classes for digraphs and graphs
     1.9  ///
    1.10  /// This file contains several useful adaptors for digraphs and graphs.
    1.11  
    1.12 @@ -346,14 +346,22 @@
    1.13  
    1.14    /// \ingroup graph_adaptors
    1.15    ///
    1.16 -  /// \brief A digraph adaptor which reverses the orientation of the arcs.
    1.17 +  /// \brief Adaptor class for reversing the orientation of the arcs in
    1.18 +  /// a digraph.
    1.19    ///
    1.20 -  /// ReverseDigraph reverses the arcs in the adapted digraph. The
    1.21 -  /// SubDigraph is conform to the \ref concepts::Digraph
    1.22 -  /// "Digraph concept".
    1.23 +  /// ReverseDigraph can be used for reversing the arcs in a digraph.
    1.24 +  /// It conforms to the \ref concepts::Digraph "Digraph" concept.
    1.25    ///
    1.26 -  /// \tparam _Digraph It must be conform to the \ref concepts::Digraph
    1.27 -  /// "Digraph concept". The type can be specified to be const.
    1.28 +  /// The adapted digraph can also be modified through this adaptor
    1.29 +  /// by adding or removing nodes or arcs, unless the \c _Digraph template
    1.30 +  /// parameter is set to be \c const.
    1.31 +  ///
    1.32 +  /// \tparam _Digraph The type of the adapted digraph.
    1.33 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept.
    1.34 +  /// It can also be specified to be \c const.
    1.35 +  ///
    1.36 +  /// \note The \c Node and \c Arc types of this adaptor and the adapted
    1.37 +  /// digraph are convertible to each other.
    1.38    template<typename _Digraph>
    1.39    class ReverseDigraph :
    1.40      public DigraphAdaptorExtender<ReverseDigraphBase<_Digraph> > {
    1.41 @@ -367,20 +375,23 @@
    1.42  
    1.43      /// \brief Constructor
    1.44      ///
    1.45 -    /// Creates a reverse digraph adaptor for the given digraph
    1.46 +    /// Creates a reverse digraph adaptor for the given digraph.
    1.47      explicit ReverseDigraph(Digraph& digraph) {
    1.48        Parent::setDigraph(digraph);
    1.49      }
    1.50    };
    1.51  
    1.52 -  /// \brief Just gives back a reverse digraph adaptor
    1.53 +  /// \brief Returns a read-only ReverseDigraph adaptor
    1.54    ///
    1.55 -  /// Just gives back a reverse digraph adaptor
    1.56 +  /// This function just returns a read-only \ref ReverseDigraph adaptor.
    1.57 +  /// \ingroup graph_adaptors
    1.58 +  /// \relates ReverseDigraph
    1.59    template<typename Digraph>
    1.60    ReverseDigraph<const Digraph> reverseDigraph(const Digraph& digraph) {
    1.61      return ReverseDigraph<const Digraph>(digraph);
    1.62    }
    1.63  
    1.64 +
    1.65    template <typename _Digraph, typename _NodeFilterMap,
    1.66              typename _ArcFilterMap, bool _checked = true>
    1.67    class SubDigraphBase : public DigraphAdaptorBase<_Digraph> {
    1.68 @@ -685,41 +696,64 @@
    1.69  
    1.70    /// \ingroup graph_adaptors
    1.71    ///
    1.72 -  /// \brief An adaptor for hiding nodes and arcs in a digraph
    1.73 +  /// \brief Adaptor class for hiding nodes and arcs in a digraph
    1.74    ///
    1.75 -  /// SubDigraph hides nodes and arcs in a digraph. A bool node map
    1.76 -  /// and a bool arc map must be specified, which define the filters
    1.77 -  /// for nodes and arcs. Just the nodes and arcs with true value are
    1.78 -  /// shown in the subdigraph. The SubDigraph is conform to the \ref
    1.79 -  /// concepts::Digraph "Digraph concept". If the \c _checked parameter
    1.80 -  /// is true, then the arcs incident to filtered nodes are also
    1.81 +  /// SubDigraph can be used for hiding nodes and arcs in a digraph.
    1.82 +  /// A \c bool node map and a \c bool arc map must be specified, which
    1.83 +  /// define the filters for nodes and arcs.
    1.84 +  /// Only the nodes and arcs with \c true filter value are
    1.85 +  /// shown in the subdigraph. This adaptor conforms to the \ref
    1.86 +  /// concepts::Digraph "Digraph" concept. If the \c _checked parameter
    1.87 +  /// is \c true, then the arcs incident to hidden nodes are also
    1.88    /// filtered out.
    1.89    ///
    1.90 -  /// \tparam _Digraph It must be conform to the \ref
    1.91 -  /// concepts::Digraph "Digraph concept". The type can be specified
    1.92 -  /// to const.
    1.93 -  /// \tparam _NodeFilterMap A bool valued node map of the the adapted digraph.
    1.94 -  /// \tparam _ArcFilterMap A bool valued arc map of the the adapted digraph.
    1.95 -  /// \tparam _checked If the parameter is false then the arc filtering
    1.96 -  /// is not checked with respect to node filter. Otherwise, each arc
    1.97 -  /// is automatically filtered, which is incident to a filtered node.
    1.98 +  /// The adapted digraph can also be modified through this adaptor
    1.99 +  /// by adding or removing nodes or arcs, unless the \c _Digraph template
   1.100 +  /// parameter is set to be \c const.
   1.101 +  ///
   1.102 +  /// \tparam _Digraph The type of the adapted digraph.
   1.103 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept.
   1.104 +  /// It can also be specified to be \c const.
   1.105 +  /// \tparam _NodeFilterMap A \c bool (or convertible) node map of the
   1.106 +  /// adapted digraph. The default map type is
   1.107 +  /// \ref concepts::Digraph::NodeMap "_Digraph::NodeMap<bool>".
   1.108 +  /// \tparam _ArcFilterMap A \c bool (or convertible) arc map of the
   1.109 +  /// adapted digraph. The default map type is
   1.110 +  /// \ref concepts::Digraph::ArcMap "_Digraph::ArcMap<bool>".
   1.111 +  /// \tparam _checked If this parameter is set to \c false, then the arc
   1.112 +  /// filtering is not checked with respect to the node filter.
   1.113 +  /// Otherwise, each arc that is incident to a hidden node is automatically
   1.114 +  /// filtered out. This is the default option.
   1.115 +  ///
   1.116 +  /// \note The \c Node and \c Arc types of this adaptor and the adapted
   1.117 +  /// digraph are convertible to each other.
   1.118    ///
   1.119    /// \see FilterNodes
   1.120    /// \see FilterArcs
   1.121 +#ifdef DOXYGEN
   1.122 +  template<typename _Digraph,
   1.123 +           typename _NodeFilterMap,
   1.124 +           typename _ArcFilterMap,
   1.125 +           bool _checked>
   1.126 +#else
   1.127    template<typename _Digraph,
   1.128             typename _NodeFilterMap = typename _Digraph::template NodeMap<bool>,
   1.129             typename _ArcFilterMap = typename _Digraph::template ArcMap<bool>,
   1.130             bool _checked = true>
   1.131 +#endif
   1.132    class SubDigraph
   1.133      : public DigraphAdaptorExtender<
   1.134        SubDigraphBase<_Digraph, _NodeFilterMap, _ArcFilterMap, _checked> > {
   1.135    public:
   1.136 +    /// The type of the adapted digraph.
   1.137      typedef _Digraph Digraph;
   1.138 +    /// The type of the node filter map.
   1.139      typedef _NodeFilterMap NodeFilterMap;
   1.140 +    /// The type of the arc filter map.
   1.141      typedef _ArcFilterMap ArcFilterMap;
   1.142  
   1.143      typedef DigraphAdaptorExtender<
   1.144 -      SubDigraphBase<Digraph, NodeFilterMap, ArcFilterMap, _checked> >
   1.145 +      SubDigraphBase<_Digraph, _NodeFilterMap, _ArcFilterMap, _checked> >
   1.146      Parent;
   1.147  
   1.148      typedef typename Parent::Node Node;
   1.149 @@ -731,8 +765,8 @@
   1.150  
   1.151      /// \brief Constructor
   1.152      ///
   1.153 -    /// Creates a subdigraph for the given digraph with
   1.154 -    /// given node and arc map filters.
   1.155 +    /// Creates a subdigraph for the given digraph with the
   1.156 +    /// given node and arc filter maps.
   1.157      SubDigraph(Digraph& digraph, NodeFilterMap& node_filter,
   1.158                 ArcFilterMap& arc_filter) {
   1.159        setDigraph(digraph);
   1.160 @@ -740,51 +774,53 @@
   1.161        setArcFilterMap(arc_filter);
   1.162      }
   1.163  
   1.164 -    /// \brief Hides the node of the graph
   1.165 +    /// \brief Hides the given node
   1.166      ///
   1.167 -    /// This function hides \c n in the digraph, i.e. the iteration
   1.168 -    /// jumps over it. This is done by simply setting the value of \c n
   1.169 -    /// to be false in the corresponding node-map.
   1.170 +    /// This function hides the given node in the subdigraph,
   1.171 +    /// i.e. the iteration jumps over it.
   1.172 +    /// It is done by simply setting the assigned value of \c n
   1.173 +    /// to be \c false in the node filter map.
   1.174      void hide(const Node& n) const { Parent::hide(n); }
   1.175  
   1.176 -    /// \brief Hides the arc of the graph
   1.177 +    /// \brief Hides the given arc
   1.178      ///
   1.179 -    /// This function hides \c a in the digraph, i.e. the iteration
   1.180 -    /// jumps over it. This is done by simply setting the value of \c a
   1.181 -    /// to be false in the corresponding arc-map.
   1.182 +    /// This function hides the given arc in the subdigraph,
   1.183 +    /// i.e. the iteration jumps over it.
   1.184 +    /// It is done by simply setting the assigned value of \c a
   1.185 +    /// to be \c false in the arc filter map.
   1.186      void hide(const Arc& a) const { Parent::hide(a); }
   1.187  
   1.188 -    /// \brief Unhides the node of the graph
   1.189 +    /// \brief Shows the given node
   1.190      ///
   1.191 -    /// The value of \c n is set to be true in the node-map which stores
   1.192 -    /// hide information. If \c n was hidden previuosly, then it is shown
   1.193 -    /// again
   1.194 +    /// This function shows the given node in the subdigraph.
   1.195 +    /// It is done by simply setting the assigned value of \c n
   1.196 +    /// to be \c true in the node filter map.
   1.197      void unHide(const Node& n) const { Parent::unHide(n); }
   1.198  
   1.199 -    /// \brief Unhides the arc of the graph
   1.200 +    /// \brief Shows the given arc
   1.201      ///
   1.202 -    /// The value of \c a is set to be true in the arc-map which stores
   1.203 -    /// hide information. If \c a was hidden previuosly, then it is shown
   1.204 -    /// again
   1.205 +    /// This function shows the given arc in the subdigraph.
   1.206 +    /// It is done by simply setting the assigned value of \c a
   1.207 +    /// to be \c true in the arc filter map.
   1.208      void unHide(const Arc& a) const { Parent::unHide(a); }
   1.209  
   1.210 -    /// \brief Returns true if \c n is hidden.
   1.211 +    /// \brief Returns \c true if the given node is hidden.
   1.212      ///
   1.213 -    /// Returns true if \c n is hidden.
   1.214 +    /// This function returns \c true if the given node is hidden.
   1.215 +    bool hidden(const Node& n) const { return Parent::hidden(n); }
   1.216 +
   1.217 +    /// \brief Returns \c true if the given arc is hidden.
   1.218      ///
   1.219 -    bool hidden(const Node& n) const { return Parent::hidden(n); }
   1.220 -
   1.221 -    /// \brief Returns true if \c a is hidden.
   1.222 -    ///
   1.223 -    /// Returns true if \c a is hidden.
   1.224 -    ///
   1.225 +    /// This function returns \c true if the given arc is hidden.
   1.226      bool hidden(const Arc& a) const { return Parent::hidden(a); }
   1.227  
   1.228    };
   1.229  
   1.230 -  /// \brief Just gives back a subdigraph
   1.231 +  /// \brief Returns a read-only SubDigraph adaptor
   1.232    ///
   1.233 -  /// Just gives back a subdigraph
   1.234 +  /// This function just returns a read-only \ref SubDigraph adaptor.
   1.235 +  /// \ingroup graph_adaptors
   1.236 +  /// \relates SubDigraph
   1.237    template<typename Digraph, typename NodeFilterMap, typename ArcFilterMap>
   1.238    SubDigraph<const Digraph, NodeFilterMap, ArcFilterMap>
   1.239    subDigraph(const Digraph& digraph, NodeFilterMap& nfm, ArcFilterMap& afm) {
   1.240 @@ -1249,37 +1285,65 @@
   1.241  
   1.242    /// \ingroup graph_adaptors
   1.243    ///
   1.244 -  /// \brief A graph adaptor for hiding nodes and edges in an
   1.245 -  /// undirected graph.
   1.246 +  /// \brief Adaptor class for hiding nodes and edges in an undirected
   1.247 +  /// graph.
   1.248    ///
   1.249 -  /// SubGraph hides nodes and edges in a graph. A bool node map and a
   1.250 -  /// bool edge map must be specified, which define the filters for
   1.251 -  /// nodes and edges. Just the nodes and edges with true value are
   1.252 -  /// shown in the subgraph. The SubGraph is conform to the \ref
   1.253 -  /// concepts::Graph "Graph concept". If the \c _checked parameter is
   1.254 -  /// true, then the edges incident to filtered nodes are also
   1.255 +  /// SubGraph can be used for hiding nodes and edges in a graph.
   1.256 +  /// A \c bool node map and a \c bool edge map must be specified, which
   1.257 +  /// define the filters for nodes and edges.
   1.258 +  /// Only the nodes and edges with \c true filter value are
   1.259 +  /// shown in the subgraph. This adaptor conforms to the \ref
   1.260 +  /// concepts::Graph "Graph" concept. If the \c _checked parameter is
   1.261 +  /// \c true, then the edges incident to hidden nodes are also
   1.262    /// filtered out.
   1.263    ///
   1.264 -  /// \tparam _Graph It must be conform to the \ref
   1.265 -  /// concepts::Graph "Graph concept". The type can be specified
   1.266 -  /// to const.
   1.267 -  /// \tparam _NodeFilterMap A bool valued node map of the the adapted graph.
   1.268 -  /// \tparam _EdgeFilterMap A bool valued edge map of the the adapted graph.
   1.269 -  /// \tparam _checked If the parameter is false then the edge filtering
   1.270 -  /// is not checked with respect to node filter. Otherwise, each edge
   1.271 -  /// is automatically filtered, which is incident to a filtered node.
   1.272 +  /// The adapted graph can also be modified through this adaptor
   1.273 +  /// by adding or removing nodes or edges, unless the \c _Graph template
   1.274 +  /// parameter is set to be \c const.
   1.275 +  ///
   1.276 +  /// \tparam _Graph The type of the adapted graph.
   1.277 +  /// It must conform to the \ref concepts::Graph "Graph" concept.
   1.278 +  /// It can also be specified to be \c const.
   1.279 +  /// \tparam _NodeFilterMap A \c bool (or convertible) node map of the
   1.280 +  /// adapted graph. The default map type is
   1.281 +  /// \ref concepts::Graph::NodeMap "_Graph::NodeMap<bool>".
   1.282 +  /// \tparam _EdgeFilterMap A \c bool (or convertible) edge map of the
   1.283 +  /// adapted graph. The default map type is
   1.284 +  /// \ref concepts::Graph::EdgeMap "_Graph::EdgeMap<bool>".
   1.285 +  /// \tparam _checked If this parameter is set to \c false, then the edge
   1.286 +  /// filtering is not checked with respect to the node filter.
   1.287 +  /// Otherwise, each edge that is incident to a hidden node is automatically
   1.288 +  /// filtered out. This is the default option.
   1.289 +  ///
   1.290 +  /// \note The \c Node, \c Edge and \c Arc types of this adaptor and the
   1.291 +  /// adapted graph are convertible to each other.
   1.292    ///
   1.293    /// \see FilterNodes
   1.294    /// \see FilterEdges
   1.295 -  template<typename _Graph, typename NodeFilterMap,
   1.296 -           typename EdgeFilterMap, bool _checked = true>
   1.297 +#ifdef DOXYGEN
   1.298 +  template<typename _Graph,
   1.299 +           typename _NodeFilterMap,
   1.300 +           typename _EdgeFilterMap,
   1.301 +           bool _checked>
   1.302 +#else
   1.303 +  template<typename _Graph,
   1.304 +           typename _NodeFilterMap = typename _Graph::template NodeMap<bool>,
   1.305 +           typename _EdgeFilterMap = typename _Graph::template EdgeMap<bool>,
   1.306 +           bool _checked = true>
   1.307 +#endif
   1.308    class SubGraph
   1.309      : public GraphAdaptorExtender<
   1.310 -      SubGraphBase<_Graph, NodeFilterMap, EdgeFilterMap, _checked> > {
   1.311 +      SubGraphBase<_Graph, _NodeFilterMap, _EdgeFilterMap, _checked> > {
   1.312    public:
   1.313 +    /// The type of the adapted graph.
   1.314      typedef _Graph Graph;
   1.315 +    /// The type of the node filter map.
   1.316 +    typedef _NodeFilterMap NodeFilterMap;
   1.317 +    /// The type of the edge filter map.
   1.318 +    typedef _EdgeFilterMap EdgeFilterMap;
   1.319 +
   1.320      typedef GraphAdaptorExtender<
   1.321 -      SubGraphBase<_Graph, NodeFilterMap, EdgeFilterMap> > Parent;
   1.322 +      SubGraphBase<_Graph, _NodeFilterMap, _EdgeFilterMap, _checked> > Parent;
   1.323  
   1.324      typedef typename Parent::Node Node;
   1.325      typedef typename Parent::Edge Edge;
   1.326 @@ -1290,59 +1354,61 @@
   1.327  
   1.328      /// \brief Constructor
   1.329      ///
   1.330 -    /// Creates a subgraph for the given graph with given node and
   1.331 -    /// edge map filters.
   1.332 -    SubGraph(Graph& _graph, NodeFilterMap& node_filter_map,
   1.333 +    /// Creates a subgraph for the given graph with the given node
   1.334 +    /// and edge filter maps.
   1.335 +    SubGraph(Graph& graph, NodeFilterMap& node_filter_map,
   1.336               EdgeFilterMap& edge_filter_map) {
   1.337 -      setGraph(_graph);
   1.338 +      setGraph(graph);
   1.339        setNodeFilterMap(node_filter_map);
   1.340        setEdgeFilterMap(edge_filter_map);
   1.341      }
   1.342  
   1.343 -    /// \brief Hides the node of the graph
   1.344 +    /// \brief Hides the given node
   1.345      ///
   1.346 -    /// This function hides \c n in the graph, i.e. the iteration
   1.347 -    /// jumps over it. This is done by simply setting the value of \c n
   1.348 -    /// to be false in the corresponding node-map.
   1.349 +    /// This function hides the given node in the subgraph,
   1.350 +    /// i.e. the iteration jumps over it.
   1.351 +    /// It is done by simply setting the assigned value of \c n
   1.352 +    /// to be \c false in the node filter map.
   1.353      void hide(const Node& n) const { Parent::hide(n); }
   1.354  
   1.355 -    /// \brief Hides the edge of the graph
   1.356 +    /// \brief Hides the given edge
   1.357      ///
   1.358 -    /// This function hides \c e in the graph, i.e. the iteration
   1.359 -    /// jumps over it. This is done by simply setting the value of \c e
   1.360 -    /// to be false in the corresponding edge-map.
   1.361 +    /// This function hides the given edge in the subgraph,
   1.362 +    /// i.e. the iteration jumps over it.
   1.363 +    /// It is done by simply setting the assigned value of \c e
   1.364 +    /// to be \c false in the edge filter map.
   1.365      void hide(const Edge& e) const { Parent::hide(e); }
   1.366  
   1.367 -    /// \brief Unhides the node of the graph
   1.368 +    /// \brief Shows the given node
   1.369      ///
   1.370 -    /// The value of \c n is set to be true in the node-map which stores
   1.371 -    /// hide information. If \c n was hidden previuosly, then it is shown
   1.372 -    /// again
   1.373 +    /// This function shows the given node in the subgraph.
   1.374 +    /// It is done by simply setting the assigned value of \c n
   1.375 +    /// to be \c true in the node filter map.
   1.376      void unHide(const Node& n) const { Parent::unHide(n); }
   1.377  
   1.378 -    /// \brief Unhides the edge of the graph
   1.379 +    /// \brief Shows the given edge
   1.380      ///
   1.381 -    /// The value of \c e is set to be true in the edge-map which stores
   1.382 -    /// hide information. If \c e was hidden previuosly, then it is shown
   1.383 -    /// again
   1.384 +    /// This function shows the given edge in the subgraph.
   1.385 +    /// It is done by simply setting the assigned value of \c e
   1.386 +    /// to be \c true in the edge filter map.
   1.387      void unHide(const Edge& e) const { Parent::unHide(e); }
   1.388  
   1.389 -    /// \brief Returns true if \c n is hidden.
   1.390 +    /// \brief Returns \c true if the given node is hidden.
   1.391      ///
   1.392 -    /// Returns true if \c n is hidden.
   1.393 +    /// This function returns \c true if the given node is hidden.
   1.394 +    bool hidden(const Node& n) const { return Parent::hidden(n); }
   1.395 +
   1.396 +    /// \brief Returns \c true if the given edge is hidden.
   1.397      ///
   1.398 -    bool hidden(const Node& n) const { return Parent::hidden(n); }
   1.399 -
   1.400 -    /// \brief Returns true if \c e is hidden.
   1.401 -    ///
   1.402 -    /// Returns true if \c e is hidden.
   1.403 -    ///
   1.404 +    /// This function returns \c true if the given edge is hidden.
   1.405      bool hidden(const Edge& e) const { return Parent::hidden(e); }
   1.406    };
   1.407  
   1.408 -  /// \brief Just gives back a subgraph
   1.409 +  /// \brief Returns a read-only SubGraph adaptor
   1.410    ///
   1.411 -  /// Just gives back a subgraph
   1.412 +  /// This function just returns a read-only \ref SubGraph adaptor.
   1.413 +  /// \ingroup graph_adaptors
   1.414 +  /// \relates SubGraph
   1.415    template<typename Graph, typename NodeFilterMap, typename ArcFilterMap>
   1.416    SubGraph<const Graph, NodeFilterMap, ArcFilterMap>
   1.417    subGraph(const Graph& graph, NodeFilterMap& nfm, ArcFilterMap& efm) {
   1.418 @@ -1373,32 +1439,42 @@
   1.419        (graph, nfm, efm);
   1.420    }
   1.421  
   1.422 +
   1.423    /// \ingroup graph_adaptors
   1.424    ///
   1.425 -  /// \brief An adaptor for hiding nodes from a digraph or a graph.
   1.426 +  /// \brief Adaptor class for hiding nodes in a digraph or a graph.
   1.427    ///
   1.428 -  /// FilterNodes adaptor hides nodes in a graph or a digraph. A bool
   1.429 -  /// node map must be specified, which defines the filters for
   1.430 -  /// nodes. Just the unfiltered nodes and the arcs or edges incident
   1.431 -  /// to unfiltered nodes are shown in the subdigraph or subgraph. The
   1.432 -  /// FilterNodes is conform to the \ref concepts::Digraph
   1.433 -  /// "Digraph concept" or \ref concepts::Graph "Graph concept" depending
   1.434 -  /// on the \c _Digraph template parameter. If the \c _checked
   1.435 -  /// parameter is true, then the arc or edges incident to filtered nodes
   1.436 -  /// are also filtered out.
   1.437 +  /// FilterNodes adaptor can be used for hiding nodes in a digraph or a
   1.438 +  /// graph. A \c bool node map must be specified, which defines the filter
   1.439 +  /// for the nodes. Only the nodes with \c true filter value and the
   1.440 +  /// arcs/edges incident to nodes both with \c true filter value are shown
   1.441 +  /// in the subgraph. This adaptor conforms to the \ref concepts::Digraph
   1.442 +  /// "Digraph" concept or the \ref concepts::Graph "Graph" concept
   1.443 +  /// depending on the \c _Graph template parameter.
   1.444    ///
   1.445 -  /// \tparam _Digraph It must be conform to the \ref
   1.446 -  /// concepts::Digraph "Digraph concept" or \ref concepts::Graph
   1.447 -  /// "Graph concept". The type can be specified to be const.
   1.448 -  /// \tparam _NodeFilterMap A bool valued node map of the the adapted graph.
   1.449 -  /// \tparam _checked If the parameter is false then the arc or edge
   1.450 -  /// filtering is not checked with respect to node filter. In this
   1.451 -  /// case just isolated nodes can be filtered out from the
   1.452 -  /// graph.
   1.453 +  /// The adapted (di)graph can also be modified through this adaptor
   1.454 +  /// by adding or removing nodes or arcs/edges, unless the \c _Graph template
   1.455 +  /// parameter is set to be \c const.
   1.456 +  ///
   1.457 +  /// \tparam _Graph The type of the adapted digraph or graph.
   1.458 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept
   1.459 +  /// or the \ref concepts::Graph "Graph" concept.
   1.460 +  /// It can also be specified to be \c const.
   1.461 +  /// \tparam _NodeFilterMap A \c bool (or convertible) node map of the
   1.462 +  /// adapted (di)graph. The default map type is
   1.463 +  /// \ref concepts::Graph::NodeMap "_Graph::NodeMap<bool>".
   1.464 +  /// \tparam _checked If this parameter is set to \c false then the arc/edge
   1.465 +  /// filtering is not checked with respect to the node filter. In this
   1.466 +  /// case only isolated nodes can be filtered out from the graph.
   1.467 +  /// Otherwise, each arc/edge that is incident to a hidden node is
   1.468 +  /// automatically filtered out. This is the default option.
   1.469 +  ///
   1.470 +  /// \note The \c Node and <tt>Arc/Edge</tt> types of this adaptor and the
   1.471 +  /// adapted (di)graph are convertible to each other.
   1.472  #ifdef DOXYGEN
   1.473 -  template<typename _Digraph,
   1.474 -           typename _NodeFilterMap = typename _Digraph::template NodeMap<bool>,
   1.475 -           bool _checked = true>
   1.476 +  template<typename _Graph,
   1.477 +           typename _NodeFilterMap,
   1.478 +           bool _checked>
   1.479  #else
   1.480    template<typename _Digraph,
   1.481             typename _NodeFilterMap = typename _Digraph::template NodeMap<bool>,
   1.482 @@ -1430,33 +1506,37 @@
   1.483  
   1.484      /// \brief Constructor
   1.485      ///
   1.486 -    /// Creates an adaptor for the given digraph or graph with
   1.487 +    /// Creates a subgraph for the given digraph or graph with the
   1.488      /// given node filter map.
   1.489 -    FilterNodes(Digraph& _digraph, NodeFilterMap& node_filter) :
   1.490 +#ifdef DOXYGEN
   1.491 +    FilterNodes(_Graph& graph, _NodeFilterMap& node_filter) :
   1.492 +#else
   1.493 +    FilterNodes(Digraph& graph, NodeFilterMap& node_filter) :
   1.494 +#endif
   1.495        Parent(), const_true_map(true) {
   1.496 -      Parent::setDigraph(_digraph);
   1.497 +      Parent::setDigraph(graph);
   1.498        Parent::setNodeFilterMap(node_filter);
   1.499        Parent::setArcFilterMap(const_true_map);
   1.500      }
   1.501  
   1.502 -    /// \brief Hides the node of the graph
   1.503 +    /// \brief Hides the given node
   1.504      ///
   1.505 -    /// This function hides \c n in the digraph or graph, i.e. the iteration
   1.506 -    /// jumps over it. This is done by simply setting the value of \c n
   1.507 -    /// to be false in the corresponding node map.
   1.508 +    /// This function hides the given node in the subgraph,
   1.509 +    /// i.e. the iteration jumps over it.
   1.510 +    /// It is done by simply setting the assigned value of \c n
   1.511 +    /// to be \c false in the node filter map.
   1.512      void hide(const Node& n) const { Parent::hide(n); }
   1.513  
   1.514 -    /// \brief Unhides the node of the graph
   1.515 +    /// \brief Shows the given node
   1.516      ///
   1.517 -    /// The value of \c n is set to be true in the node-map which stores
   1.518 -    /// hide information. If \c n was hidden previuosly, then it is shown
   1.519 -    /// again
   1.520 +    /// This function shows the given node in the subgraph.
   1.521 +    /// It is done by simply setting the assigned value of \c n
   1.522 +    /// to be \c true in the node filter map.
   1.523      void unHide(const Node& n) const { Parent::unHide(n); }
   1.524  
   1.525 -    /// \brief Returns true if \c n is hidden.
   1.526 +    /// \brief Returns \c true if the given node is hidden.
   1.527      ///
   1.528 -    /// Returns true if \c n is hidden.
   1.529 -    ///
   1.530 +    /// This function returns \c true if the given node is hidden.
   1.531      bool hidden(const Node& n) const { return Parent::hidden(n); }
   1.532  
   1.533    };
   1.534 @@ -1496,9 +1576,11 @@
   1.535    };
   1.536  
   1.537  
   1.538 -  /// \brief Just gives back a FilterNodes adaptor
   1.539 +  /// \brief Returns a read-only FilterNodes adaptor
   1.540    ///
   1.541 -  /// Just gives back a FilterNodes adaptor
   1.542 +  /// This function just returns a read-only \ref FilterNodes adaptor.
   1.543 +  /// \ingroup graph_adaptors
   1.544 +  /// \relates FilterNodes
   1.545    template<typename Digraph, typename NodeFilterMap>
   1.546    FilterNodes<const Digraph, NodeFilterMap>
   1.547    filterNodes(const Digraph& digraph, NodeFilterMap& nfm) {
   1.548 @@ -1513,22 +1595,39 @@
   1.549  
   1.550    /// \ingroup graph_adaptors
   1.551    ///
   1.552 -  /// \brief An adaptor for hiding arcs from a digraph.
   1.553 +  /// \brief Adaptor class for hiding arcs in a digraph.
   1.554    ///
   1.555 -  /// FilterArcs adaptor hides arcs in a digraph. A bool arc map must
   1.556 -  /// be specified, which defines the filters for arcs. Just the
   1.557 -  /// unfiltered arcs are shown in the subdigraph. The FilterArcs is
   1.558 -  /// conform to the \ref concepts::Digraph "Digraph concept".
   1.559 +  /// FilterArcs adaptor can be used for hiding arcs in a digraph.
   1.560 +  /// A \c bool arc map must be specified, which defines the filter for
   1.561 +  /// the arcs. Only the arcs with \c true filter value are shown in the
   1.562 +  /// subdigraph. This adaptor conforms to the \ref concepts::Digraph
   1.563 +  /// "Digraph" concept.
   1.564    ///
   1.565 -  /// \tparam _Digraph It must be conform to the \ref concepts::Digraph
   1.566 -  /// "Digraph concept". The type can be specified to be const.
   1.567 -  /// \tparam _ArcFilterMap A bool valued arc map of the the adapted
   1.568 -  /// graph.
   1.569 -  template<typename _Digraph, typename _ArcFilterMap>
   1.570 +  /// The adapted digraph can also be modified through this adaptor
   1.571 +  /// by adding or removing nodes or arcs, unless the \c _Digraph template
   1.572 +  /// parameter is set to be \c const.
   1.573 +  ///
   1.574 +  /// \tparam _Digraph The type of the adapted digraph.
   1.575 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept.
   1.576 +  /// It can also be specified to be \c const.
   1.577 +  /// \tparam _ArcFilterMap A \c bool (or convertible) arc map of the
   1.578 +  /// adapted digraph. The default map type is
   1.579 +  /// \ref concepts::Digraph::ArcMap "_Digraph::ArcMap<bool>".
   1.580 +  ///
   1.581 +  /// \note The \c Node and \c Arc types of this adaptor and the adapted
   1.582 +  /// digraph are convertible to each other.
   1.583 +#ifdef DOXYGEN
   1.584 +  template<typename _Digraph,
   1.585 +           typename _ArcFilterMap>
   1.586 +#else
   1.587 +  template<typename _Digraph,
   1.588 +           typename _ArcFilterMap = typename _Digraph::template ArcMap<bool> >
   1.589 +#endif
   1.590    class FilterArcs :
   1.591      public SubDigraph<_Digraph, ConstMap<typename _Digraph::Node, bool>,
   1.592                        _ArcFilterMap, false> {
   1.593    public:
   1.594 +
   1.595      typedef _Digraph Digraph;
   1.596      typedef _ArcFilterMap ArcFilterMap;
   1.597  
   1.598 @@ -1548,8 +1647,8 @@
   1.599  
   1.600      /// \brief Constructor
   1.601      ///
   1.602 -    /// Creates a FilterArcs adaptor for the given graph with
   1.603 -    /// given arc map filter.
   1.604 +    /// Creates a subdigraph for the given digraph with the given arc
   1.605 +    /// filter map.
   1.606      FilterArcs(Digraph& digraph, ArcFilterMap& arc_filter)
   1.607        : Parent(), const_true_map(true) {
   1.608        Parent::setDigraph(digraph);
   1.609 @@ -1557,31 +1656,33 @@
   1.610        Parent::setArcFilterMap(arc_filter);
   1.611      }
   1.612  
   1.613 -    /// \brief Hides the arc of the graph
   1.614 +    /// \brief Hides the given arc
   1.615      ///
   1.616 -    /// This function hides \c a in the graph, i.e. the iteration
   1.617 -    /// jumps over it. This is done by simply setting the value of \c a
   1.618 -    /// to be false in the corresponding arc map.
   1.619 +    /// This function hides the given arc in the subdigraph,
   1.620 +    /// i.e. the iteration jumps over it.
   1.621 +    /// It is done by simply setting the assigned value of \c a
   1.622 +    /// to be \c false in the arc filter map.
   1.623      void hide(const Arc& a) const { Parent::hide(a); }
   1.624  
   1.625 -    /// \brief Unhides the arc of the graph
   1.626 +    /// \brief Shows the given arc
   1.627      ///
   1.628 -    /// The value of \c a is set to be true in the arc-map which stores
   1.629 -    /// hide information. If \c a was hidden previuosly, then it is shown
   1.630 -    /// again
   1.631 +    /// This function shows the given arc in the subdigraph.
   1.632 +    /// It is done by simply setting the assigned value of \c a
   1.633 +    /// to be \c true in the arc filter map.
   1.634      void unHide(const Arc& a) const { Parent::unHide(a); }
   1.635  
   1.636 -    /// \brief Returns true if \c a is hidden.
   1.637 +    /// \brief Returns \c true if the given arc is hidden.
   1.638      ///
   1.639 -    /// Returns true if \c a is hidden.
   1.640 -    ///
   1.641 +    /// This function returns \c true if the given arc is hidden.
   1.642      bool hidden(const Arc& a) const { return Parent::hidden(a); }
   1.643  
   1.644    };
   1.645  
   1.646 -  /// \brief Just gives back an FilterArcs adaptor
   1.647 +  /// \brief Returns a read-only FilterArcs adaptor
   1.648    ///
   1.649 -  /// Just gives back an FilterArcs adaptor
   1.650 +  /// This function just returns a read-only \ref FilterArcs adaptor.
   1.651 +  /// \ingroup graph_adaptors
   1.652 +  /// \relates FilterArcs
   1.653    template<typename Digraph, typename ArcFilterMap>
   1.654    FilterArcs<const Digraph, ArcFilterMap>
   1.655    filterArcs(const Digraph& digraph, ArcFilterMap& afm) {
   1.656 @@ -1596,18 +1697,34 @@
   1.657  
   1.658    /// \ingroup graph_adaptors
   1.659    ///
   1.660 -  /// \brief An adaptor for hiding edges from a graph.
   1.661 +  /// \brief Adaptor class for hiding edges in a graph.
   1.662    ///
   1.663 -  /// FilterEdges adaptor hides edges in a digraph. A bool edge map must
   1.664 -  /// be specified, which defines the filters for edges. Just the
   1.665 -  /// unfiltered edges are shown in the subdigraph. The FilterEdges is
   1.666 -  /// conform to the \ref concepts::Graph "Graph concept".
   1.667 +  /// FilterEdges adaptor can be used for hiding edges in a graph.
   1.668 +  /// A \c bool edge map must be specified, which defines the filter for
   1.669 +  /// the edges. Only the edges with \c true filter value are shown in the
   1.670 +  /// subgraph. This adaptor conforms to the \ref concepts::Graph
   1.671 +  /// "Graph" concept.
   1.672    ///
   1.673 -  /// \tparam _Graph It must be conform to the \ref concepts::Graph
   1.674 -  /// "Graph concept". The type can be specified to be const.
   1.675 -  /// \tparam _EdgeFilterMap A bool valued edge map of the the adapted
   1.676 -  /// graph.
   1.677 -  template<typename _Graph, typename _EdgeFilterMap>
   1.678 +  /// The adapted graph can also be modified through this adaptor
   1.679 +  /// by adding or removing nodes or edges, unless the \c _Graph template
   1.680 +  /// parameter is set to be \c const.
   1.681 +  ///
   1.682 +  /// \tparam _Graph The type of the adapted graph.
   1.683 +  /// It must conform to the \ref concepts::Graph "Graph" concept.
   1.684 +  /// It can also be specified to be \c const.
   1.685 +  /// \tparam _EdgeFilterMap A \c bool (or convertible) edge map of the
   1.686 +  /// adapted graph. The default map type is
   1.687 +  /// \ref concepts::Graph::EdgeMap "_Graph::EdgeMap<bool>".
   1.688 +  ///
   1.689 +  /// \note The \c Node, \c Edge and \c Arc types of this adaptor and the
   1.690 +  /// adapted graph are convertible to each other.
   1.691 +#ifdef DOXYGEN
   1.692 +  template<typename _Graph,
   1.693 +           typename _EdgeFilterMap>
   1.694 +#else
   1.695 +  template<typename _Graph,
   1.696 +           typename _EdgeFilterMap = typename _Graph::template EdgeMap<bool> >
   1.697 +#endif
   1.698    class FilterEdges :
   1.699      public SubGraph<_Graph, ConstMap<typename _Graph::Node,bool>,
   1.700                      _EdgeFilterMap, false> {
   1.701 @@ -1628,40 +1745,42 @@
   1.702  
   1.703      /// \brief Constructor
   1.704      ///
   1.705 -    /// Creates a FilterEdges adaptor for the given graph with
   1.706 -    /// given edge map filters.
   1.707 -    FilterEdges(Graph& _graph, EdgeFilterMap& edge_filter_map) :
   1.708 +    /// Creates a subgraph for the given graph with the given edge
   1.709 +    /// filter map.
   1.710 +    FilterEdges(Graph& graph, EdgeFilterMap& edge_filter_map) :
   1.711        Parent(), const_true_map(true) {
   1.712 -      Parent::setGraph(_graph);
   1.713 +      Parent::setGraph(graph);
   1.714        Parent::setNodeFilterMap(const_true_map);
   1.715        Parent::setEdgeFilterMap(edge_filter_map);
   1.716      }
   1.717  
   1.718 -    /// \brief Hides the edge of the graph
   1.719 +    /// \brief Hides the given edge
   1.720      ///
   1.721 -    /// This function hides \c e in the graph, i.e. the iteration
   1.722 -    /// jumps over it. This is done by simply setting the value of \c e
   1.723 -    /// to be false in the corresponding edge-map.
   1.724 +    /// This function hides the given edge in the subgraph,
   1.725 +    /// i.e. the iteration jumps over it.
   1.726 +    /// It is done by simply setting the assigned value of \c e
   1.727 +    /// to be \c false in the edge filter map.
   1.728      void hide(const Edge& e) const { Parent::hide(e); }
   1.729  
   1.730 -    /// \brief Unhides the edge of the graph
   1.731 +    /// \brief Shows the given edge
   1.732      ///
   1.733 -    /// The value of \c e is set to be true in the edge-map which stores
   1.734 -    /// hide information. If \c e was hidden previuosly, then it is shown
   1.735 -    /// again
   1.736 +    /// This function shows the given edge in the subgraph.
   1.737 +    /// It is done by simply setting the assigned value of \c e
   1.738 +    /// to be \c true in the edge filter map.
   1.739      void unHide(const Edge& e) const { Parent::unHide(e); }
   1.740  
   1.741 -    /// \brief Returns true if \c e is hidden.
   1.742 +    /// \brief Returns \c true if the given edge is hidden.
   1.743      ///
   1.744 -    /// Returns true if \c e is hidden.
   1.745 -    ///
   1.746 +    /// This function returns \c true if the given edge is hidden.
   1.747      bool hidden(const Edge& e) const { return Parent::hidden(e); }
   1.748  
   1.749    };
   1.750  
   1.751 -  /// \brief Just gives back a FilterEdges adaptor
   1.752 +  /// \brief Returns a read-only FilterEdges adaptor
   1.753    ///
   1.754 -  /// Just gives back a FilterEdges adaptor
   1.755 +  /// This function just returns a read-only \ref FilterEdges adaptor.
   1.756 +  /// \ingroup graph_adaptors
   1.757 +  /// \relates FilterEdges
   1.758    template<typename Graph, typename EdgeFilterMap>
   1.759    FilterEdges<const Graph, EdgeFilterMap>
   1.760    filterEdges(const Graph& graph, EdgeFilterMap& efm) {
   1.761 @@ -1674,6 +1793,7 @@
   1.762      return FilterEdges<const Graph, const EdgeFilterMap>(graph, efm);
   1.763    }
   1.764  
   1.765 +
   1.766    template <typename _Digraph>
   1.767    class UndirectorBase {
   1.768    public:
   1.769 @@ -1713,8 +1833,6 @@
   1.770        }
   1.771      };
   1.772  
   1.773 -
   1.774 -
   1.775      void first(Node& n) const {
   1.776        _digraph->first(n);
   1.777      }
   1.778 @@ -2068,16 +2186,27 @@
   1.779  
   1.780    /// \ingroup graph_adaptors
   1.781    ///
   1.782 -  /// \brief Undirect the graph
   1.783 +  /// \brief Adaptor class for viewing a digraph as an undirected graph.
   1.784    ///
   1.785 -  /// This adaptor makes an undirected graph from a directed
   1.786 -  /// graph. All arcs of the underlying digraph will be showed in the
   1.787 -  /// adaptor as an edge. The Orienter adaptor is conform to the \ref
   1.788 -  /// concepts::Graph "Graph concept".
   1.789 +  /// Undirector adaptor can be used for viewing a digraph as an undirected
   1.790 +  /// graph. All arcs of the underlying digraph are showed in the
   1.791 +  /// adaptor as an edge (and also as a pair of arcs, of course).
   1.792 +  /// This adaptor conforms to the \ref concepts::Graph "Graph" concept.
   1.793    ///
   1.794 -  /// \tparam _Digraph It must be conform to the \ref
   1.795 -  /// concepts::Digraph "Digraph concept". The type can be specified
   1.796 -  /// to const.
   1.797 +  /// The adapted digraph can also be modified through this adaptor
   1.798 +  /// by adding or removing nodes or edges, unless the \c _Digraph template
   1.799 +  /// parameter is set to be \c const.
   1.800 +  ///
   1.801 +  /// \tparam _Digraph The type of the adapted digraph.
   1.802 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept.
   1.803 +  /// It can also be specified to be \c const.
   1.804 +  ///
   1.805 +  /// \note The \c Node type of this adaptor and the adapted digraph are
   1.806 +  /// convertible to each other, moreover the \c Edge type of the adaptor
   1.807 +  /// and the \c Arc type of the adapted digraph are also convertible to
   1.808 +  /// each other.
   1.809 +  /// (Thus the \c Arc type of the adaptor is convertible to the \c Arc type
   1.810 +  /// of the adapted digraph.)
   1.811    template<typename _Digraph>
   1.812    class Undirector
   1.813      : public GraphAdaptorExtender<UndirectorBase<_Digraph> > {
   1.814 @@ -2090,15 +2219,17 @@
   1.815  
   1.816      /// \brief Constructor
   1.817      ///
   1.818 -    /// Creates a undirected graph from the given digraph
   1.819 +    /// Creates an undirected graph from the given digraph.
   1.820      Undirector(_Digraph& digraph) {
   1.821        setDigraph(digraph);
   1.822      }
   1.823  
   1.824 -    /// \brief ArcMap combined from two original ArcMap
   1.825 +    /// \brief Arc map combined from two original arc maps
   1.826      ///
   1.827 -    /// This class adapts two original digraph ArcMap to
   1.828 -    /// get an arc map on the undirected graph.
   1.829 +    /// This map adaptor class adapts two arc maps of the underlying
   1.830 +    /// digraph to get an arc map of the undirected graph.
   1.831 +    /// Its value type is inherited from the first arc map type
   1.832 +    /// (\c %ForwardMap).
   1.833      template <typename _ForwardMap, typename _BackwardMap>
   1.834      class CombinedArcMap {
   1.835      public:
   1.836 @@ -2108,24 +2239,21 @@
   1.837  
   1.838        typedef typename MapTraits<ForwardMap>::ReferenceMapTag ReferenceMapTag;
   1.839  
   1.840 +      /// The key type of the map
   1.841 +      typedef typename Parent::Arc Key;
   1.842 +      /// The value type of the map
   1.843        typedef typename ForwardMap::Value Value;
   1.844 -      typedef typename Parent::Arc Key;
   1.845  
   1.846        typedef typename MapTraits<ForwardMap>::ReturnValue ReturnValue;
   1.847        typedef typename MapTraits<ForwardMap>::ConstReturnValue ConstReturnValue;
   1.848        typedef typename MapTraits<ForwardMap>::ReturnValue Reference;
   1.849        typedef typename MapTraits<ForwardMap>::ConstReturnValue ConstReference;
   1.850  
   1.851 -      /// \brief Constructor
   1.852 -      ///
   1.853        /// Constructor
   1.854        CombinedArcMap(ForwardMap& forward, BackwardMap& backward)
   1.855          : _forward(&forward), _backward(&backward) {}
   1.856  
   1.857 -
   1.858 -      /// \brief Sets the value associated with a key.
   1.859 -      ///
   1.860 -      /// Sets the value associated with a key.
   1.861 +      /// Sets the value associated with the given key.
   1.862        void set(const Key& e, const Value& a) {
   1.863          if (Parent::direction(e)) {
   1.864            _forward->set(e, a);
   1.865 @@ -2134,9 +2262,7 @@
   1.866          }
   1.867        }
   1.868  
   1.869 -      /// \brief Returns the value associated with a key.
   1.870 -      ///
   1.871 -      /// Returns the value associated with a key.
   1.872 +      /// Returns the value associated with the given key.
   1.873        ConstReturnValue operator[](const Key& e) const {
   1.874          if (Parent::direction(e)) {
   1.875            return (*_forward)[e];
   1.876 @@ -2145,9 +2271,7 @@
   1.877          }
   1.878        }
   1.879  
   1.880 -      /// \brief Returns the value associated with a key.
   1.881 -      ///
   1.882 -      /// Returns the value associated with a key.
   1.883 +      /// Returns a reference to the value associated with the given key.
   1.884        ReturnValue operator[](const Key& e) {
   1.885          if (Parent::direction(e)) {
   1.886            return (*_forward)[e];
   1.887 @@ -2163,9 +2287,9 @@
   1.888  
   1.889      };
   1.890  
   1.891 -    /// \brief Just gives back a combined arc map
   1.892 +    /// \brief Returns a combined arc map
   1.893      ///
   1.894 -    /// Just gives back a combined arc map
   1.895 +    /// This function just returns a combined arc map.
   1.896      template <typename ForwardMap, typename BackwardMap>
   1.897      static CombinedArcMap<ForwardMap, BackwardMap>
   1.898      combinedArcMap(ForwardMap& forward, BackwardMap& backward) {
   1.899 @@ -2195,15 +2319,18 @@
   1.900  
   1.901    };
   1.902  
   1.903 -  /// \brief Just gives back an undirected view of the given digraph
   1.904 +  /// \brief Returns a read-only Undirector adaptor
   1.905    ///
   1.906 -  /// Just gives back an undirected view of the given digraph
   1.907 +  /// This function just returns a read-only \ref Undirector adaptor.
   1.908 +  /// \ingroup graph_adaptors
   1.909 +  /// \relates Undirector
   1.910    template<typename Digraph>
   1.911    Undirector<const Digraph>
   1.912    undirector(const Digraph& digraph) {
   1.913      return Undirector<const Digraph>(digraph);
   1.914    }
   1.915  
   1.916 +
   1.917    template <typename _Graph, typename _DirectionMap>
   1.918    class OrienterBase {
   1.919    public:
   1.920 @@ -2364,52 +2491,76 @@
   1.921  
   1.922    /// \ingroup graph_adaptors
   1.923    ///
   1.924 -  /// \brief Orients the edges of the graph to get a digraph
   1.925 +  /// \brief Adaptor class for orienting the edges of a graph to get a digraph
   1.926    ///
   1.927 -  /// This adaptor orients each edge in the undirected graph. The
   1.928 -  /// direction of the arcs stored in an edge node map.  The arcs can
   1.929 -  /// be easily reverted by the \c reverseArc() member function in the
   1.930 -  /// adaptor. The Orienter adaptor is conform to the \ref
   1.931 -  /// concepts::Digraph "Digraph concept".
   1.932 +  /// Orienter adaptor can be used for orienting the edges of a graph to
   1.933 +  /// get a digraph. A \c bool edge map of the underlying graph must be
   1.934 +  /// specified, which define the direction of the arcs in the adaptor.
   1.935 +  /// The arcs can be easily reversed by the \c reverseArc() member function
   1.936 +  /// of the adaptor.
   1.937 +  /// This class conforms to the \ref concepts::Digraph "Digraph" concept.
   1.938    ///
   1.939 -  /// \tparam _Graph It must be conform to the \ref concepts::Graph
   1.940 -  /// "Graph concept". The type can be specified to be const.
   1.941 -  /// \tparam _DirectionMap A bool valued edge map of the the adapted
   1.942 -  /// graph.
   1.943 +  /// The adapted graph can also be modified through this adaptor
   1.944 +  /// by adding or removing nodes or arcs, unless the \c _Graph template
   1.945 +  /// parameter is set to be \c const.
   1.946    ///
   1.947 -  /// \sa orienter
   1.948 +  /// \tparam _Graph The type of the adapted graph.
   1.949 +  /// It must conform to the \ref concepts::Graph "Graph" concept.
   1.950 +  /// It can also be specified to be \c const.
   1.951 +  /// \tparam _DirectionMap A \c bool (or convertible) edge map of the
   1.952 +  /// adapted graph. The default map type is
   1.953 +  /// \ref concepts::Graph::EdgeMap "_Graph::EdgeMap<bool>".
   1.954 +  ///
   1.955 +  /// \note The \c Node type of this adaptor and the adapted graph are
   1.956 +  /// convertible to each other, moreover the \c Arc type of the adaptor
   1.957 +  /// and the \c Edge type of the adapted graph are also convertible to
   1.958 +  /// each other.
   1.959 +#ifdef DOXYGEN
   1.960    template<typename _Graph,
   1.961 -           typename DirectionMap = typename _Graph::template EdgeMap<bool> >
   1.962 +           typename _DirectionMap>
   1.963 +#else
   1.964 +  template<typename _Graph,
   1.965 +           typename _DirectionMap = typename _Graph::template EdgeMap<bool> >
   1.966 +#endif
   1.967    class Orienter :
   1.968 -    public DigraphAdaptorExtender<OrienterBase<_Graph, DirectionMap> > {
   1.969 +    public DigraphAdaptorExtender<OrienterBase<_Graph, _DirectionMap> > {
   1.970    public:
   1.971 +
   1.972 +    /// The type of the adapted graph.
   1.973      typedef _Graph Graph;
   1.974 +    /// The type of the direction edge map.
   1.975 +    typedef _DirectionMap DirectionMap;
   1.976 +
   1.977      typedef DigraphAdaptorExtender<
   1.978 -      OrienterBase<_Graph, DirectionMap> > Parent;
   1.979 +      OrienterBase<_Graph, _DirectionMap> > Parent;
   1.980      typedef typename Parent::Arc Arc;
   1.981    protected:
   1.982      Orienter() { }
   1.983    public:
   1.984  
   1.985 -    /// \brief Constructor of the adaptor
   1.986 +    /// \brief Constructor
   1.987      ///
   1.988 -    /// Constructor of the adaptor
   1.989 +    /// Constructor of the adaptor.
   1.990      Orienter(Graph& graph, DirectionMap& direction) {
   1.991        setGraph(graph);
   1.992        setDirectionMap(direction);
   1.993      }
   1.994  
   1.995 -    /// \brief Reverse arc
   1.996 +    /// \brief Reverses the given arc
   1.997      ///
   1.998 -    /// It reverse the given arc. It simply negate the direction in the map.
   1.999 +    /// This function reverses the given arc.
  1.1000 +    /// It is done by simply negate the assigned value of \c a
  1.1001 +    /// in the direction map.
  1.1002      void reverseArc(const Arc& a) {
  1.1003        Parent::reverseArc(a);
  1.1004      }
  1.1005    };
  1.1006  
  1.1007 -  /// \brief Just gives back a Orienter
  1.1008 +  /// \brief Returns a read-only Orienter adaptor
  1.1009    ///
  1.1010 -  /// Just gives back a Orienter
  1.1011 +  /// This function just returns a read-only \ref Orienter adaptor.
  1.1012 +  /// \ingroup graph_adaptors
  1.1013 +  /// \relates Orienter
  1.1014    template<typename Graph, typename DirectionMap>
  1.1015    Orienter<const Graph, DirectionMap>
  1.1016    orienter(const Graph& graph, DirectionMap& dm) {
  1.1017 @@ -2491,31 +2642,51 @@
  1.1018  
  1.1019    /// \ingroup graph_adaptors
  1.1020    ///
  1.1021 -  /// \brief An adaptor for composing the residual graph for directed
  1.1022 +  /// \brief Adaptor class for composing the residual digraph for directed
  1.1023    /// flow and circulation problems.
  1.1024    ///
  1.1025 -  /// An adaptor for composing the residual graph for directed flow and
  1.1026 -  /// circulation problems.  Let \f$ G=(V, A) \f$ be a directed graph
  1.1027 -  /// and let \f$ F \f$ be a number type. Let moreover \f$ f,c:A\to F \f$,
  1.1028 -  /// be functions on the arc-set.
  1.1029 +  /// Residual can be used for composing the \e residual digraph for directed
  1.1030 +  /// flow and circulation problems. Let \f$ G=(V, A) \f$ be a directed graph
  1.1031 +  /// and let \f$ F \f$ be a number type. Let \f$ flow, cap: A\to F \f$ be
  1.1032 +  /// functions on the arcs.
  1.1033 +  /// This adaptor implements a digraph structure with node set \f$ V \f$
  1.1034 +  /// and arc set \f$ A_{forward}\cup A_{backward} \f$,
  1.1035 +  /// where \f$ A_{forward}=\{uv : uv\in A, flow(uv)<cap(uv)\} \f$ and
  1.1036 +  /// \f$ A_{backward}=\{vu : uv\in A, flow(uv)>0\} \f$, i.e. the so
  1.1037 +  /// called residual digraph.
  1.1038 +  /// When the union \f$ A_{forward}\cup A_{backward} \f$ is taken,
  1.1039 +  /// multiplicities are counted, i.e. the adaptor has exactly
  1.1040 +  /// \f$ |A_{forward}| + |A_{backward}|\f$ arcs (it may have parallel
  1.1041 +  /// arcs).
  1.1042 +  /// This class conforms to the \ref concepts::Digraph "Digraph" concept.
  1.1043    ///
  1.1044 -  /// Then Residual implements the digraph structure with
  1.1045 -  /// node-set \f$ V \f$ and arc-set \f$ A_{forward}\cup A_{backward} \f$,
  1.1046 -  /// where \f$ A_{forward}=\{uv : uv\in A, f(uv)<c(uv)\} \f$ and
  1.1047 -  /// \f$ A_{backward}=\{vu : uv\in A, f(uv)>0\} \f$, i.e. the so
  1.1048 -  /// called residual graph.  When we take the union
  1.1049 -  /// \f$ A_{forward}\cup A_{backward} \f$, multiplicities are counted,
  1.1050 -  /// i.e.  if an arc is in both \f$ A_{forward} \f$ and
  1.1051 -  /// \f$ A_{backward} \f$, then in the adaptor it appears in both
  1.1052 -  /// orientation.
  1.1053 +  /// \tparam _Digraph The type of the adapted digraph.
  1.1054 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept.
  1.1055 +  /// It is implicitly \c const.
  1.1056 +  /// \tparam _CapacityMap An arc map of some numerical type, which defines
  1.1057 +  /// the capacities in the flow problem. It is implicitly \c const.
  1.1058 +  /// The default map type is
  1.1059 +  /// \ref concepts::Digraph::ArcMap "_Digraph::ArcMap<int>".
  1.1060 +  /// \tparam _FlowMap An arc map of some numerical type, which defines
  1.1061 +  /// the flow values in the flow problem.
  1.1062 +  /// The default map type is \c _CapacityMap.
  1.1063 +  /// \tparam _Tolerance Tolerance type for handling inexact computation.
  1.1064 +  /// The default tolerance type depends on the value type of the
  1.1065 +  /// capacity map.
  1.1066    ///
  1.1067 -  /// \tparam _Digraph It must be conform to the \ref concepts::Digraph
  1.1068 -  /// "Digraph concept". The type is implicitly const.
  1.1069 -  /// \tparam _CapacityMap An arc map of some numeric type, it defines
  1.1070 -  /// the capacities in the flow problem. The map is implicitly const.
  1.1071 -  /// \tparam _FlowMap An arc map of some numeric type, it defines
  1.1072 -  /// the capacities in the flow problem.
  1.1073 -  /// \tparam _Tolerance Handler for inexact computation.
  1.1074 +  /// \note This adaptor is implemented using Undirector and FilterArcs
  1.1075 +  /// adaptors.
  1.1076 +  ///
  1.1077 +  /// \note The \c Node type of this adaptor and the adapted digraph are
  1.1078 +  /// convertible to each other, moreover the \c Arc type of the adaptor
  1.1079 +  /// is convertible to the \c Arc type of the adapted digraph.
  1.1080 +#ifdef DOXYGEN
  1.1081 +  template<typename _Digraph,
  1.1082 +           typename _CapacityMap,
  1.1083 +           typename _FlowMap,
  1.1084 +           typename _Tolerance>
  1.1085 +  class Residual
  1.1086 +#else
  1.1087    template<typename _Digraph,
  1.1088             typename _CapacityMap = typename _Digraph::template ArcMap<int>,
  1.1089             typename _FlowMap = _CapacityMap,
  1.1090 @@ -2528,11 +2699,15 @@
  1.1091                                        _FlowMap, _Tolerance>,
  1.1092        _adaptor_bits::ResBackwardFilter<const _Digraph, _CapacityMap,
  1.1093                                         _FlowMap, _Tolerance> > >
  1.1094 +#endif
  1.1095    {
  1.1096    public:
  1.1097  
  1.1098 +    /// The type of the underlying digraph.
  1.1099      typedef _Digraph Digraph;
  1.1100 +    /// The type of the capacity map.
  1.1101      typedef _CapacityMap CapacityMap;
  1.1102 +    /// The type of the flow map.
  1.1103      typedef _FlowMap FlowMap;
  1.1104      typedef _Tolerance Tolerance;
  1.1105  
  1.1106 @@ -2564,10 +2739,10 @@
  1.1107  
  1.1108    public:
  1.1109  
  1.1110 -    /// \brief Constructor of the residual digraph.
  1.1111 +    /// \brief Constructor
  1.1112      ///
  1.1113 -    /// Constructor of the residual graph. The parameters are the digraph,
  1.1114 -    /// the flow map, the capacity map and a tolerance object.
  1.1115 +    /// Constructor of the residual digraph adaptor. The parameters are the
  1.1116 +    /// digraph, the capacity map, the flow map, and a tolerance object.
  1.1117      Residual(const Digraph& digraph, const CapacityMap& capacity,
  1.1118               FlowMap& flow, const Tolerance& tolerance = Tolerance())
  1.1119        : Parent(), _capacity(&capacity), _flow(&flow), _graph(digraph),
  1.1120 @@ -2581,9 +2756,9 @@
  1.1121  
  1.1122      typedef typename Parent::Arc Arc;
  1.1123  
  1.1124 -    /// \brief Gives back the residual capacity of the arc.
  1.1125 +    /// \brief Returns the residual capacity of the given arc.
  1.1126      ///
  1.1127 -    /// Gives back the residual capacity of the arc.
  1.1128 +    /// Returns the residual capacity of the given arc.
  1.1129      Value residualCapacity(const Arc& a) const {
  1.1130        if (Undirected::direction(a)) {
  1.1131          return (*_capacity)[a] - (*_flow)[a];
  1.1132 @@ -2592,11 +2767,11 @@
  1.1133        }
  1.1134      }
  1.1135  
  1.1136 -    /// \brief Augment on the given arc in the residual graph.
  1.1137 +    /// \brief Augment on the given arc in the residual digraph.
  1.1138      ///
  1.1139 -    /// Augment on the given arc in the residual graph. It increase
  1.1140 -    /// or decrease the flow on the original arc depend on the direction
  1.1141 -    /// of the residual arc.
  1.1142 +    /// Augment on the given arc in the residual digraph. It increases
  1.1143 +    /// or decreases the flow value on the original arc according to the
  1.1144 +    /// direction of the residual arc.
  1.1145      void augment(const Arc& a, const Value& v) const {
  1.1146        if (Undirected::direction(a)) {
  1.1147          _flow->set(a, (*_flow)[a] + v);
  1.1148 @@ -2605,51 +2780,56 @@
  1.1149        }
  1.1150      }
  1.1151  
  1.1152 -    /// \brief Returns the direction of the arc.
  1.1153 +    /// \brief Returns \c true if the given residual arc is a forward arc.
  1.1154      ///
  1.1155 -    /// Returns true when the arc is same oriented as the original arc.
  1.1156 +    /// Returns \c true if the given residual arc has the same orientation
  1.1157 +    /// as the original arc, i.e. it is a so called forward arc.
  1.1158      static bool forward(const Arc& a) {
  1.1159        return Undirected::direction(a);
  1.1160      }
  1.1161  
  1.1162 -    /// \brief Returns the direction of the arc.
  1.1163 +    /// \brief Returns \c true if the given residual arc is a backward arc.
  1.1164      ///
  1.1165 -    /// Returns true when the arc is opposite oriented as the original arc.
  1.1166 +    /// Returns \c true if the given residual arc has the opposite orientation
  1.1167 +    /// than the original arc, i.e. it is a so called backward arc.
  1.1168      static bool backward(const Arc& a) {
  1.1169        return !Undirected::direction(a);
  1.1170      }
  1.1171  
  1.1172 -    /// \brief Gives back the forward oriented residual arc.
  1.1173 +    /// \brief Returns the forward oriented residual arc.
  1.1174      ///
  1.1175 -    /// Gives back the forward oriented residual arc.
  1.1176 +    /// Returns the forward oriented residual arc related to the given
  1.1177 +    /// arc of the underlying digraph.
  1.1178      static Arc forward(const typename Digraph::Arc& a) {
  1.1179        return Undirected::direct(a, true);
  1.1180      }
  1.1181  
  1.1182 -    /// \brief Gives back the backward oriented residual arc.
  1.1183 +    /// \brief Returns the backward oriented residual arc.
  1.1184      ///
  1.1185 -    /// Gives back the backward oriented residual arc.
  1.1186 +    /// Returns the backward oriented residual arc related to the given
  1.1187 +    /// arc of the underlying digraph.
  1.1188      static Arc backward(const typename Digraph::Arc& a) {
  1.1189        return Undirected::direct(a, false);
  1.1190      }
  1.1191  
  1.1192      /// \brief Residual capacity map.
  1.1193      ///
  1.1194 -    /// In generic residual graph the residual capacity can be obtained
  1.1195 -    /// as a map.
  1.1196 +    /// This map adaptor class can be used for obtaining the residual
  1.1197 +    /// capacities as an arc map of the residual digraph.
  1.1198 +    /// Its value type is inherited from the capacity map.
  1.1199      class ResidualCapacity {
  1.1200      protected:
  1.1201        const Adaptor* _adaptor;
  1.1202      public:
  1.1203 -      /// The Key type
  1.1204 +      /// The key type of the map
  1.1205        typedef Arc Key;
  1.1206 -      /// The Value type
  1.1207 +      /// The value type of the map
  1.1208        typedef typename _CapacityMap::Value Value;
  1.1209  
  1.1210        /// Constructor
  1.1211        ResidualCapacity(const Adaptor& adaptor) : _adaptor(&adaptor) {}
  1.1212  
  1.1213 -      /// \e
  1.1214 +      /// Returns the value associated with the given residual arc
  1.1215        Value operator[](const Arc& a) const {
  1.1216          return _adaptor->residualCapacity(a);
  1.1217        }
  1.1218 @@ -3108,25 +3288,31 @@
  1.1219  
  1.1220    /// \ingroup graph_adaptors
  1.1221    ///
  1.1222 -  /// \brief Split the nodes of a directed graph
  1.1223 +  /// \brief Adaptor class for splitting the nodes of a digraph.
  1.1224    ///
  1.1225 -  /// The SplitNodes adaptor splits each node into an in-node and an
  1.1226 -  /// out-node. Formaly, the adaptor replaces each \f$ u \f$ node in
  1.1227 -  /// the digraph with two nodes(namely node \f$ u_{in} \f$ and node
  1.1228 -  /// \f$ u_{out} \f$). If there is a \f$ (v, u) \f$ arc in the
  1.1229 -  /// original digraph the new target of the arc will be \f$ u_{in} \f$
  1.1230 -  /// and similarly the source of the original \f$ (u, v) \f$ arc
  1.1231 -  /// will be \f$ u_{out} \f$.  The adaptor will add for each node in
  1.1232 -  /// the original digraph an additional arc which connects
  1.1233 -  /// \f$ (u_{in}, u_{out}) \f$.
  1.1234 +  /// SplitNodes adaptor can be used for splitting each node into an
  1.1235 +  /// \e in-node and an \e out-node in a digraph. Formaly, the adaptor
  1.1236 +  /// replaces each node \f$ u \f$ in the digraph with two nodes,
  1.1237 +  /// namely node \f$ u_{in} \f$ and node \f$ u_{out} \f$.
  1.1238 +  /// If there is a \f$ (v, u) \f$ arc in the original digraph, then the
  1.1239 +  /// new target of the arc will be \f$ u_{in} \f$ and similarly the
  1.1240 +  /// source of each original \f$ (u, v) \f$ arc will be \f$ u_{out} \f$.
  1.1241 +  /// The adaptor adds an additional \e bind \e arc from \f$ u_{in} \f$
  1.1242 +  /// to \f$ u_{out} \f$ for each node \f$ u \f$ of the original digraph.
  1.1243    ///
  1.1244 -  /// The aim of this class is to run algorithm with node costs if the
  1.1245 -  /// algorithm can use directly just arc costs. In this case we should use
  1.1246 -  /// a \c SplitNodes and set the node cost of the graph to the
  1.1247 -  /// bind arc in the adapted graph.
  1.1248 +  /// The aim of this class is running an algorithm with respect to node
  1.1249 +  /// costs or capacities if the algorithm considers only arc costs or
  1.1250 +  /// capacities directly.
  1.1251 +  /// In this case you can use \c SplitNodes adaptor, and set the node
  1.1252 +  /// costs/capacities of the original digraph to the \e bind \e arcs
  1.1253 +  /// in the adaptor.
  1.1254    ///
  1.1255 -  /// \tparam _Digraph It must be conform to the \ref concepts::Digraph
  1.1256 -  /// "Digraph concept". The type can be specified to be const.
  1.1257 +  /// \tparam _Digraph The type of the adapted digraph.
  1.1258 +  /// It must conform to the \ref concepts::Digraph "Digraph" concept.
  1.1259 +  /// It is implicitly \c const.
  1.1260 +  ///
  1.1261 +  /// \note The \c Node type of this adaptor is converible to the \c Node
  1.1262 +  /// type of the adapted digraph.
  1.1263    template <typename _Digraph>
  1.1264    class SplitNodes
  1.1265      : public DigraphAdaptorExtender<SplitNodesBase<const _Digraph> > {
  1.1266 @@ -3140,78 +3326,88 @@
  1.1267      typedef typename Parent::Node Node;
  1.1268      typedef typename Parent::Arc Arc;
  1.1269  
  1.1270 -    /// \brief Constructor of the adaptor.
  1.1271 +    /// \brief Constructor
  1.1272      ///
  1.1273      /// Constructor of the adaptor.
  1.1274      SplitNodes(const Digraph& g) {
  1.1275        Parent::setDigraph(g);
  1.1276      }
  1.1277  
  1.1278 -    /// \brief Returns true when the node is in-node.
  1.1279 +    /// \brief Returns \c true if the given node is an in-node.
  1.1280      ///
  1.1281 -    /// Returns true when the node is in-node.
  1.1282 +    /// Returns \c true if the given node is an in-node.
  1.1283      static bool inNode(const Node& n) {
  1.1284        return Parent::inNode(n);
  1.1285      }
  1.1286  
  1.1287 -    /// \brief Returns true when the node is out-node.
  1.1288 +    /// \brief Returns \c true if the given node is an out-node.
  1.1289      ///
  1.1290 -    /// Returns true when the node is out-node.
  1.1291 +    /// Returns \c true if the given node is an out-node.
  1.1292      static bool outNode(const Node& n) {
  1.1293        return Parent::outNode(n);
  1.1294      }
  1.1295  
  1.1296 -    /// \brief Returns true when the arc is arc in the original digraph.
  1.1297 +    /// \brief Returns \c true if the given arc is an original arc.
  1.1298      ///
  1.1299 -    /// Returns true when the arc is arc in the original digraph.
  1.1300 +    /// Returns \c true if the given arc is one of the arcs in the
  1.1301 +    /// original digraph.
  1.1302      static bool origArc(const Arc& a) {
  1.1303        return Parent::origArc(a);
  1.1304      }
  1.1305  
  1.1306 -    /// \brief Returns true when the arc binds an in-node and an out-node.
  1.1307 +    /// \brief Returns \c true if the given arc is a bind arc.
  1.1308      ///
  1.1309 -    /// Returns true when the arc binds an in-node and an out-node.
  1.1310 +    /// Returns \c true if the given arc is a bind arc, i.e. it connects
  1.1311 +    /// an in-node and an out-node.
  1.1312      static bool bindArc(const Arc& a) {
  1.1313        return Parent::bindArc(a);
  1.1314      }
  1.1315  
  1.1316 -    /// \brief Gives back the in-node created from the \c node.
  1.1317 +    /// \brief Returns the in-node created from the given original node.
  1.1318      ///
  1.1319 -    /// Gives back the in-node created from the \c node.
  1.1320 +    /// Returns the in-node created from the given original node.
  1.1321      static Node inNode(const DigraphNode& n) {
  1.1322        return Parent::inNode(n);
  1.1323      }
  1.1324  
  1.1325 -    /// \brief Gives back the out-node created from the \c node.
  1.1326 +    /// \brief Returns the out-node created from the given original node.
  1.1327      ///
  1.1328 -    /// Gives back the out-node created from the \c node.
  1.1329 +    /// Returns the out-node created from the given original node.
  1.1330      static Node outNode(const DigraphNode& n) {
  1.1331        return Parent::outNode(n);
  1.1332      }
  1.1333  
  1.1334 -    /// \brief Gives back the arc binds the two part of the node.
  1.1335 +    /// \brief Returns the bind arc that corresponds to the given
  1.1336 +    /// original node.
  1.1337      ///
  1.1338 -    /// Gives back the arc binds the two part of the node.
  1.1339 +    /// Returns the bind arc in the adaptor that corresponds to the given
  1.1340 +    /// original node, i.e. the arc connecting the in-node and out-node
  1.1341 +    /// of \c n.
  1.1342      static Arc arc(const DigraphNode& n) {
  1.1343        return Parent::arc(n);
  1.1344      }
  1.1345  
  1.1346 -    /// \brief Gives back the arc of the original arc.
  1.1347 +    /// \brief Returns the arc that corresponds to the given original arc.
  1.1348      ///
  1.1349 -    /// Gives back the arc of the original arc.
  1.1350 +    /// Returns the arc in the adaptor that corresponds to the given
  1.1351 +    /// original arc.
  1.1352      static Arc arc(const DigraphArc& a) {
  1.1353        return Parent::arc(a);
  1.1354      }
  1.1355  
  1.1356 -    /// \brief NodeMap combined from two original NodeMap
  1.1357 +    /// \brief Node map combined from two original node maps
  1.1358      ///
  1.1359 -    /// This class adapt two of the original digraph NodeMap to
  1.1360 -    /// get a node map on the adapted digraph.
  1.1361 +    /// This map adaptor class adapts two node maps of the original digraph
  1.1362 +    /// to get a node map of the split digraph.
  1.1363 +    /// Its value type is inherited from the first node map type
  1.1364 +    /// (\c InNodeMap).
  1.1365      template <typename InNodeMap, typename OutNodeMap>
  1.1366      class CombinedNodeMap {
  1.1367      public:
  1.1368  
  1.1369 +      /// The key type of the map
  1.1370        typedef Node Key;
  1.1371 +      /// The value type of the map
  1.1372        typedef typename InNodeMap::Value Value;
  1.1373  
  1.1374        typedef typename MapTraits<InNodeMap>::ReferenceMapTag ReferenceMapTag;
  1.1375 @@ -3220,15 +3416,20 @@
  1.1376        typedef typename MapTraits<InNodeMap>::ReturnValue Reference;
  1.1377        typedef typename MapTraits<InNodeMap>::ConstReturnValue ConstReference;
  1.1378  
  1.1379 -      /// \brief Constructor
  1.1380 -      ///
  1.1381 -      /// Constructor.
  1.1382 +      /// Constructor
  1.1383        CombinedNodeMap(InNodeMap& in_map, OutNodeMap& out_map)
  1.1384          : _in_map(in_map), _out_map(out_map) {}
  1.1385  
  1.1386 -      /// \brief The subscript operator.
  1.1387 -      ///
  1.1388 -      /// The subscript operator.
  1.1389 +      /// Returns the value associated with the given key.
  1.1390 +      Value operator[](const Key& key) const {
  1.1391 +        if (Parent::inNode(key)) {
  1.1392 +          return _in_map[key];
  1.1393 +        } else {
  1.1394 +          return _out_map[key];
  1.1395 +        }
  1.1396 +      }
  1.1397 +
  1.1398 +      /// Returns a reference to the value associated with the given key.
  1.1399        Value& operator[](const Key& key) {
  1.1400          if (Parent::inNode(key)) {
  1.1401            return _in_map[key];
  1.1402 @@ -3237,20 +3438,7 @@
  1.1403          }
  1.1404        }
  1.1405  
  1.1406 -      /// \brief The const subscript operator.
  1.1407 -      ///
  1.1408 -      /// The const subscript operator.
  1.1409 -      Value operator[](const Key& key) const {
  1.1410 -        if (Parent::inNode(key)) {
  1.1411 -          return _in_map[key];
  1.1412 -        } else {
  1.1413 -          return _out_map[key];
  1.1414 -        }
  1.1415 -      }
  1.1416 -
  1.1417 -      /// \brief The setter function of the map.
  1.1418 -      ///
  1.1419 -      /// The setter function of the map.
  1.1420 +      /// Sets the value associated with the given key.
  1.1421        void set(const Key& key, const Value& value) {
  1.1422          if (Parent::inNode(key)) {
  1.1423            _in_map.set(key, value);
  1.1424 @@ -3267,9 +3455,9 @@
  1.1425      };
  1.1426  
  1.1427  
  1.1428 -    /// \brief Just gives back a combined node map
  1.1429 +    /// \brief Returns a combined node map
  1.1430      ///
  1.1431 -    /// Just gives back a combined node map
  1.1432 +    /// This function just returns a combined node map.
  1.1433      template <typename InNodeMap, typename OutNodeMap>
  1.1434      static CombinedNodeMap<InNodeMap, OutNodeMap>
  1.1435      combinedNodeMap(InNodeMap& in_map, OutNodeMap& out_map) {
  1.1436 @@ -3295,15 +3483,20 @@
  1.1437          const OutNodeMap>(in_map, out_map);
  1.1438      }
  1.1439  
  1.1440 -    /// \brief ArcMap combined from an original ArcMap and a NodeMap
  1.1441 +    /// \brief Arc map combined from an arc map and a node map of the
  1.1442 +    /// original digraph.
  1.1443      ///
  1.1444 -    /// This class adapt an original ArcMap and a NodeMap to get an
  1.1445 -    /// arc map on the adapted digraph
  1.1446 +    /// This map adaptor class adapts an arc map and a node map of the
  1.1447 +    /// original digraph to get an arc map of the split digraph.
  1.1448 +    /// Its value type is inherited from the original arc map type
  1.1449 +    /// (\c DigraphArcMap).
  1.1450      template <typename DigraphArcMap, typename DigraphNodeMap>
  1.1451      class CombinedArcMap {
  1.1452      public:
  1.1453  
  1.1454 +      /// The key type of the map
  1.1455        typedef Arc Key;
  1.1456 +      /// The value type of the map
  1.1457        typedef typename DigraphArcMap::Value Value;
  1.1458  
  1.1459        typedef typename MapTraits<DigraphArcMap>::ReferenceMapTag
  1.1460 @@ -3317,15 +3510,29 @@
  1.1461        typedef typename MapTraits<DigraphArcMap>::ConstReturnValue
  1.1462          ConstReference;
  1.1463  
  1.1464 -      /// \brief Constructor
  1.1465 -      ///
  1.1466 -      /// Constructor.
  1.1467 +      /// Constructor
  1.1468        CombinedArcMap(DigraphArcMap& arc_map, DigraphNodeMap& node_map)
  1.1469          : _arc_map(arc_map), _node_map(node_map) {}
  1.1470  
  1.1471 -      /// \brief The subscript operator.
  1.1472 -      ///
  1.1473 -      /// The subscript operator.
  1.1474 +      /// Returns the value associated with the given key.
  1.1475 +      Value operator[](const Key& arc) const {
  1.1476 +        if (Parent::origArc(arc)) {
  1.1477 +          return _arc_map[arc];
  1.1478 +        } else {
  1.1479 +          return _node_map[arc];
  1.1480 +        }
  1.1481 +      }
  1.1482 +
  1.1483 +      /// Returns a reference to the value associated with the given key.
  1.1484 +      Value& operator[](const Key& arc) {
  1.1485 +        if (Parent::origArc(arc)) {
  1.1486 +          return _arc_map[arc];
  1.1487 +        } else {
  1.1488 +          return _node_map[arc];
  1.1489 +        }
  1.1490 +      }
  1.1491 +
  1.1492 +      /// Sets the value associated with the given key.
  1.1493        void set(const Arc& arc, const Value& val) {
  1.1494          if (Parent::origArc(arc)) {
  1.1495            _arc_map.set(arc, val);
  1.1496 @@ -3334,36 +3541,14 @@
  1.1497          }
  1.1498        }
  1.1499  
  1.1500 -      /// \brief The const subscript operator.
  1.1501 -      ///
  1.1502 -      /// The const subscript operator.
  1.1503 -      Value operator[](const Key& arc) const {
  1.1504 -        if (Parent::origArc(arc)) {
  1.1505 -          return _arc_map[arc];
  1.1506 -        } else {
  1.1507 -          return _node_map[arc];
  1.1508 -        }
  1.1509 -      }
  1.1510 -
  1.1511 -      /// \brief The const subscript operator.
  1.1512 -      ///
  1.1513 -      /// The const subscript operator.
  1.1514 -      Value& operator[](const Key& arc) {
  1.1515 -        if (Parent::origArc(arc)) {
  1.1516 -          return _arc_map[arc];
  1.1517 -        } else {
  1.1518 -          return _node_map[arc];
  1.1519 -        }
  1.1520 -      }
  1.1521 -
  1.1522      private:
  1.1523        DigraphArcMap& _arc_map;
  1.1524        DigraphNodeMap& _node_map;
  1.1525      };
  1.1526  
  1.1527 -    /// \brief Just gives back a combined arc map
  1.1528 +    /// \brief Returns a combined arc map
  1.1529      ///
  1.1530 -    /// Just gives back a combined arc map
  1.1531 +    /// This function just returns a combined arc map.
  1.1532      template <typename DigraphArcMap, typename DigraphNodeMap>
  1.1533      static CombinedArcMap<DigraphArcMap, DigraphNodeMap>
  1.1534      combinedArcMap(DigraphArcMap& arc_map, DigraphNodeMap& node_map) {
  1.1535 @@ -3394,9 +3579,11 @@
  1.1536  
  1.1537    };
  1.1538  
  1.1539 -  /// \brief Just gives back a node splitter
  1.1540 +  /// \brief Returns a (read-only) SplitNodes adaptor
  1.1541    ///
  1.1542 -  /// Just gives back a node splitter
  1.1543 +  /// This function just returns a (read-only) \ref SplitNodes adaptor.
  1.1544 +  /// \ingroup graph_adaptors
  1.1545 +  /// \relates SplitNodes
  1.1546    template<typename Digraph>
  1.1547    SplitNodes<Digraph>
  1.1548    splitNodes(const Digraph& digraph) {