lemon/concepts/graph_components.h
changeset 209 765619b7cbb2
parent 169 5b507a86ad72
child 220 a5d8c039f218
     1.1 --- a/lemon/concepts/graph_components.h	Sun Jul 13 16:46:56 2008 +0100
     1.2 +++ b/lemon/concepts/graph_components.h	Sun Jul 13 19:51:02 2008 +0100
     1.3 @@ -1,6 +1,6 @@
     1.4 -/* -*- C++ -*-
     1.5 +/* -*- mode: C++; indent-tabs-mode: nil; -*-
     1.6   *
     1.7 - * This file is a part of LEMON, a generic C++ optimization library
     1.8 + * This file is a part of LEMON, a generic C++ optimization library.
     1.9   *
    1.10   * Copyright (C) 2003-2008
    1.11   * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    1.12 @@ -49,7 +49,7 @@
    1.13      class GraphItem {
    1.14      public:
    1.15        /// \brief Default constructor.
    1.16 -      ///      
    1.17 +      ///
    1.18        /// \warning The default constructor is not required to set
    1.19        /// the item to some well-defined value. So you should consider it
    1.20        /// as uninitialized.
    1.21 @@ -66,7 +66,7 @@
    1.22        GraphItem(Invalid) {}
    1.23        /// \brief Assign operator for nodes.
    1.24        ///
    1.25 -      /// The nodes are assignable. 
    1.26 +      /// The nodes are assignable.
    1.27        ///
    1.28        GraphItem& operator=(GraphItem const&) { return *this; }
    1.29        /// \brief Equality operator.
    1.30 @@ -92,27 +92,27 @@
    1.31  
    1.32        template<typename _GraphItem>
    1.33        struct Constraints {
    1.34 -	void constraints() {
    1.35 -	  _GraphItem i1;
    1.36 -	  _GraphItem i2 = i1;
    1.37 -	  _GraphItem i3 = INVALID;
    1.38 -	  
    1.39 -	  i1 = i2 = i3;
    1.40 +        void constraints() {
    1.41 +          _GraphItem i1;
    1.42 +          _GraphItem i2 = i1;
    1.43 +          _GraphItem i3 = INVALID;
    1.44  
    1.45 -	  bool b;
    1.46 -	  //	  b = (ia == ib) && (ia != ib) && (ia < ib);
    1.47 -	  b = (ia == ib) && (ia != ib);
    1.48 -	  b = (ia == INVALID) && (ib != INVALID);
    1.49 +          i1 = i2 = i3;
    1.50 +
    1.51 +          bool b;
    1.52 +          //          b = (ia == ib) && (ia != ib) && (ia < ib);
    1.53 +          b = (ia == ib) && (ia != ib);
    1.54 +          b = (ia == INVALID) && (ib != INVALID);
    1.55            b = (ia < ib);
    1.56 -	}
    1.57 +        }
    1.58  
    1.59 -	const _GraphItem &ia;
    1.60 -	const _GraphItem &ib;
    1.61 +        const _GraphItem &ia;
    1.62 +        const _GraphItem &ib;
    1.63        };
    1.64      };
    1.65  
    1.66      /// \brief An empty base directed graph class.
    1.67 -    ///  
    1.68 +    ///
    1.69      /// This class provides the minimal set of features needed for a
    1.70      /// directed graph structure. All digraph concepts have to be
    1.71      /// conform to this base directed graph. It just provides types
    1.72 @@ -122,16 +122,16 @@
    1.73      public:
    1.74  
    1.75        typedef BaseDigraphComponent Digraph;
    1.76 -      
    1.77 +
    1.78        /// \brief Node class of the digraph.
    1.79        ///
    1.80 -      /// This class represents the Nodes of the digraph. 
    1.81 +      /// This class represents the Nodes of the digraph.
    1.82        ///
    1.83        typedef GraphItem<'n'> Node;
    1.84  
    1.85        /// \brief Arc class of the digraph.
    1.86        ///
    1.87 -      /// This class represents the Arcs of the digraph. 
    1.88 +      /// This class represents the Arcs of the digraph.
    1.89        ///
    1.90        typedef GraphItem<'e'> Arc;
    1.91  
    1.92 @@ -156,27 +156,27 @@
    1.93  
    1.94        template <typename _Digraph>
    1.95        struct Constraints {
    1.96 -	typedef typename _Digraph::Node Node;
    1.97 -	typedef typename _Digraph::Arc Arc;
    1.98 -      
    1.99 -	void constraints() {
   1.100 -	  checkConcept<GraphItem<'n'>, Node>();
   1.101 -	  checkConcept<GraphItem<'a'>, Arc>();
   1.102 -	  {
   1.103 -	    Node n;
   1.104 -	    Arc e(INVALID);
   1.105 -	    n = digraph.source(e);
   1.106 -	    n = digraph.target(e);
   1.107 +        typedef typename _Digraph::Node Node;
   1.108 +        typedef typename _Digraph::Arc Arc;
   1.109 +
   1.110 +        void constraints() {
   1.111 +          checkConcept<GraphItem<'n'>, Node>();
   1.112 +          checkConcept<GraphItem<'a'>, Arc>();
   1.113 +          {
   1.114 +            Node n;
   1.115 +            Arc e(INVALID);
   1.116 +            n = digraph.source(e);
   1.117 +            n = digraph.target(e);
   1.118              n = digraph.oppositeNode(n, e);
   1.119 -	  }      
   1.120 -	}
   1.121 -      
   1.122 -	const _Digraph& digraph;
   1.123 +          }
   1.124 +        }
   1.125 +
   1.126 +        const _Digraph& digraph;
   1.127        };
   1.128      };
   1.129  
   1.130      /// \brief An empty base undirected graph class.
   1.131 -    ///  
   1.132 +    ///
   1.133      /// This class provides the minimal set of features needed for an
   1.134      /// undirected graph structure. All undirected graph concepts have
   1.135      /// to be conform to this base graph. It just provides types for
   1.136 @@ -199,7 +199,7 @@
   1.137        public:
   1.138          typedef GraphItem<'u'> Parent;
   1.139          /// \brief Default constructor.
   1.140 -        ///      
   1.141 +        ///
   1.142          /// \warning The default constructor is not required to set
   1.143          /// the item to some well-defined value. So you should consider it
   1.144          /// as uninitialized.
   1.145 @@ -217,12 +217,12 @@
   1.146          /// \brief Converter from arc to edge.
   1.147          ///
   1.148          /// Besides the core graph item functionality each arc should
   1.149 -        /// be convertible to the represented edge. 
   1.150 +        /// be convertible to the represented edge.
   1.151          Edge(const Arc&) {}
   1.152          /// \brief Assign arc to edge.
   1.153          ///
   1.154          /// Besides the core graph item functionality each arc should
   1.155 -        /// be convertible to the represented edge. 
   1.156 +        /// be convertible to the represented edge.
   1.157          Edge& operator=(const Arc&) { return *this; }
   1.158        };
   1.159  
   1.160 @@ -237,13 +237,13 @@
   1.161        ///
   1.162        /// Returns the directed arc from its direction and the
   1.163        /// represented edge.
   1.164 -      Arc direct(const Edge&, bool) const { return INVALID;} 
   1.165 +      Arc direct(const Edge&, bool) const { return INVALID;}
   1.166  
   1.167        /// \brief Returns the directed arc.
   1.168        ///
   1.169        /// Returns the directed arc from its source and the
   1.170        /// represented edge.
   1.171 -      Arc direct(const Edge&, const Node&) const { return INVALID;} 
   1.172 +      Arc direct(const Edge&, const Node&) const { return INVALID;}
   1.173  
   1.174        /// \brief Returns the opposite arc.
   1.175        ///
   1.176 @@ -260,38 +260,38 @@
   1.177        ///
   1.178        /// Gives back the other ending of an edge.
   1.179        Node v(const Edge&) const { return INVALID;}
   1.180 -      
   1.181 +
   1.182        template <typename _Graph>
   1.183        struct Constraints {
   1.184 -	typedef typename _Graph::Node Node;
   1.185 -	typedef typename _Graph::Arc Arc;
   1.186 -	typedef typename _Graph::Edge Edge;
   1.187 -      
   1.188 -	void constraints() {
   1.189 +        typedef typename _Graph::Node Node;
   1.190 +        typedef typename _Graph::Arc Arc;
   1.191 +        typedef typename _Graph::Edge Edge;
   1.192 +
   1.193 +        void constraints() {
   1.194            checkConcept<BaseDigraphComponent, _Graph>();
   1.195 -	  checkConcept<GraphItem<'u'>, Edge>();
   1.196 -	  {
   1.197 -	    Node n;
   1.198 -	    Edge ue(INVALID);
   1.199 +          checkConcept<GraphItem<'u'>, Edge>();
   1.200 +          {
   1.201 +            Node n;
   1.202 +            Edge ue(INVALID);
   1.203              Arc e;
   1.204 -	    n = graph.u(ue);
   1.205 -	    n = graph.v(ue);
   1.206 +            n = graph.u(ue);
   1.207 +            n = graph.v(ue);
   1.208              e = graph.direct(ue, true);
   1.209              e = graph.direct(ue, n);
   1.210              e = graph.oppositeArc(e);
   1.211              ue = e;
   1.212              bool d = graph.direction(e);
   1.213              ignore_unused_variable_warning(d);
   1.214 -	  }      
   1.215 -	}
   1.216 -      
   1.217 -	const _Graph& graph;
   1.218 +          }
   1.219 +        }
   1.220 +
   1.221 +        const _Graph& graph;
   1.222        };
   1.223  
   1.224      };
   1.225  
   1.226      /// \brief An empty idable base digraph class.
   1.227 -    ///  
   1.228 +    ///
   1.229      /// This class provides beside the core digraph features
   1.230      /// core id functions for the digraph structure.
   1.231      /// The most of the base digraphs should be conform to this concept.
   1.232 @@ -304,9 +304,9 @@
   1.233        typedef typename Base::Node Node;
   1.234        typedef typename Base::Arc Arc;
   1.235  
   1.236 -      /// \brief Gives back an unique integer id for the Node. 
   1.237 +      /// \brief Gives back an unique integer id for the Node.
   1.238        ///
   1.239 -      /// Gives back an unique integer id for the Node. 
   1.240 +      /// Gives back an unique integer id for the Node.
   1.241        ///
   1.242        int id(const Node&) const { return -1;}
   1.243  
   1.244 @@ -314,12 +314,12 @@
   1.245        ///
   1.246        /// Gives back the node by the unique id.
   1.247        /// If the digraph does not contain node with the given id
   1.248 -      /// then the result of the function is undetermined. 
   1.249 +      /// then the result of the function is undetermined.
   1.250        Node nodeFromId(int) const { return INVALID;}
   1.251  
   1.252 -      /// \brief Gives back an unique integer id for the Arc. 
   1.253 +      /// \brief Gives back an unique integer id for the Arc.
   1.254        ///
   1.255 -      /// Gives back an unique integer id for the Arc. 
   1.256 +      /// Gives back an unique integer id for the Arc.
   1.257        ///
   1.258        int id(const Arc&) const { return -1;}
   1.259  
   1.260 @@ -327,7 +327,7 @@
   1.261        ///
   1.262        /// Gives back the arc by the unique id.
   1.263        /// If the digraph does not contain arc with the given id
   1.264 -      /// then the result of the function is undetermined. 
   1.265 +      /// then the result of the function is undetermined.
   1.266        Arc arcFromId(int) const { return INVALID;}
   1.267  
   1.268        /// \brief Gives back an integer greater or equal to the maximum
   1.269 @@ -347,29 +347,29 @@
   1.270        template <typename _Digraph>
   1.271        struct Constraints {
   1.272  
   1.273 -	void constraints() {
   1.274 -	  checkConcept<Base, _Digraph >();
   1.275 -	  typename _Digraph::Node node;
   1.276 -	  int nid = digraph.id(node);
   1.277 -	  nid = digraph.id(node);
   1.278 -	  node = digraph.nodeFromId(nid);
   1.279 -	  typename _Digraph::Arc arc;
   1.280 -	  int eid = digraph.id(arc);
   1.281 -	  eid = digraph.id(arc);
   1.282 -	  arc = digraph.arcFromId(eid);
   1.283 +        void constraints() {
   1.284 +          checkConcept<Base, _Digraph >();
   1.285 +          typename _Digraph::Node node;
   1.286 +          int nid = digraph.id(node);
   1.287 +          nid = digraph.id(node);
   1.288 +          node = digraph.nodeFromId(nid);
   1.289 +          typename _Digraph::Arc arc;
   1.290 +          int eid = digraph.id(arc);
   1.291 +          eid = digraph.id(arc);
   1.292 +          arc = digraph.arcFromId(eid);
   1.293  
   1.294 -	  nid = digraph.maxNodeId();
   1.295 -	  ignore_unused_variable_warning(nid);
   1.296 -	  eid = digraph.maxArcId();
   1.297 -	  ignore_unused_variable_warning(eid);
   1.298 -	}
   1.299 +          nid = digraph.maxNodeId();
   1.300 +          ignore_unused_variable_warning(nid);
   1.301 +          eid = digraph.maxArcId();
   1.302 +          ignore_unused_variable_warning(eid);
   1.303 +        }
   1.304  
   1.305 -	const _Digraph& digraph;
   1.306 +        const _Digraph& digraph;
   1.307        };
   1.308      };
   1.309  
   1.310      /// \brief An empty idable base undirected graph class.
   1.311 -    ///  
   1.312 +    ///
   1.313      /// This class provides beside the core undirected graph features
   1.314      /// core id functions for the undirected graph structure.  The
   1.315      /// most of the base undirected graphs should be conform to this
   1.316 @@ -383,9 +383,9 @@
   1.317  
   1.318        using IDableDigraphComponent<_Base>::id;
   1.319  
   1.320 -      /// \brief Gives back an unique integer id for the Edge. 
   1.321 +      /// \brief Gives back an unique integer id for the Edge.
   1.322        ///
   1.323 -      /// Gives back an unique integer id for the Edge. 
   1.324 +      /// Gives back an unique integer id for the Edge.
   1.325        ///
   1.326        int id(const Edge&) const { return -1;}
   1.327  
   1.328 @@ -406,18 +406,18 @@
   1.329        template <typename _Graph>
   1.330        struct Constraints {
   1.331  
   1.332 -	void constraints() {
   1.333 -	  checkConcept<Base, _Graph >();
   1.334 -	  checkConcept<IDableDigraphComponent<Base>, _Graph >();
   1.335 -	  typename _Graph::Edge edge;
   1.336 -	  int ueid = graph.id(edge);
   1.337 -	  ueid = graph.id(edge);
   1.338 -	  edge = graph.edgeFromId(ueid);
   1.339 -	  ueid = graph.maxEdgeId();
   1.340 -	  ignore_unused_variable_warning(ueid);
   1.341 -	}
   1.342 +        void constraints() {
   1.343 +          checkConcept<Base, _Graph >();
   1.344 +          checkConcept<IDableDigraphComponent<Base>, _Graph >();
   1.345 +          typename _Graph::Edge edge;
   1.346 +          int ueid = graph.id(edge);
   1.347 +          ueid = graph.id(edge);
   1.348 +          edge = graph.edgeFromId(ueid);
   1.349 +          ueid = graph.maxEdgeId();
   1.350 +          ignore_unused_variable_warning(ueid);
   1.351 +        }
   1.352  
   1.353 -	const _Graph& graph;
   1.354 +        const _Graph& graph;
   1.355        };
   1.356      };
   1.357  
   1.358 @@ -450,52 +450,52 @@
   1.359        GraphItemIt(Invalid) {}
   1.360        /// \brief Assign operator for items.
   1.361        ///
   1.362 -      /// The items are assignable. 
   1.363 +      /// The items are assignable.
   1.364        ///
   1.365 -      GraphItemIt& operator=(const GraphItemIt&) { return *this; }      
   1.366 +      GraphItemIt& operator=(const GraphItemIt&) { return *this; }
   1.367        /// \brief Next item.
   1.368 -      /// 
   1.369 +      ///
   1.370        /// Assign the iterator to the next item.
   1.371        ///
   1.372        GraphItemIt& operator++() { return *this; }
   1.373        /// \brief Equality operator
   1.374 -      /// 
   1.375 +      ///
   1.376        /// Two iterators are equal if and only if they point to the
   1.377        /// same object or both are invalid.
   1.378        bool operator==(const GraphItemIt&) const { return true;}
   1.379        /// \brief Inequality operator
   1.380 -      ///	
   1.381 +      ///
   1.382        /// \sa operator==(Node n)
   1.383        ///
   1.384        bool operator!=(const GraphItemIt&) const { return true;}
   1.385 -      
   1.386 +
   1.387        template<typename _GraphItemIt>
   1.388        struct Constraints {
   1.389 -	void constraints() {
   1.390 -	  _GraphItemIt it1(g);	
   1.391 -	  _GraphItemIt it2;
   1.392 +        void constraints() {
   1.393 +          _GraphItemIt it1(g);
   1.394 +          _GraphItemIt it2;
   1.395  
   1.396 -	  it2 = ++it1;
   1.397 -	  ++it2 = it1;
   1.398 -	  ++(++it1);
   1.399 +          it2 = ++it1;
   1.400 +          ++it2 = it1;
   1.401 +          ++(++it1);
   1.402  
   1.403 -	  _Item bi = it1;
   1.404 -	  bi = it2;
   1.405 -	}
   1.406 -	_Graph& g;
   1.407 +          _Item bi = it1;
   1.408 +          bi = it2;
   1.409 +        }
   1.410 +        _Graph& g;
   1.411        };
   1.412      };
   1.413  
   1.414      /// \brief Skeleton class for graph InArcIt and OutArcIt
   1.415      ///
   1.416      /// \note Because InArcIt and OutArcIt may not inherit from the same
   1.417 -    /// base class, the _selector is a additional template parameter. For 
   1.418 -    /// InArcIt you should instantiate it with character 'i' and for 
   1.419 +    /// base class, the _selector is a additional template parameter. For
   1.420 +    /// InArcIt you should instantiate it with character 'i' and for
   1.421      /// OutArcIt with 'o'.
   1.422      template <typename _Graph,
   1.423 -	      typename _Item = typename _Graph::Arc,
   1.424 -              typename _Base = typename _Graph::Node, 
   1.425 -	      char _selector = '0'>
   1.426 +              typename _Item = typename _Graph::Arc,
   1.427 +              typename _Base = typename _Graph::Node,
   1.428 +              char _selector = '0'>
   1.429      class GraphIncIt : public _Item {
   1.430      public:
   1.431        /// \brief Default constructor.
   1.432 @@ -508,10 +508,10 @@
   1.433        /// Copy constructor.
   1.434        ///
   1.435        GraphIncIt(GraphIncIt const& gi) : _Item(gi) {}
   1.436 -      /// \brief Sets the iterator to the first arc incoming into or outgoing 
   1.437 +      /// \brief Sets the iterator to the first arc incoming into or outgoing
   1.438        /// from the node.
   1.439        ///
   1.440 -      /// Sets the iterator to the first arc incoming into or outgoing 
   1.441 +      /// Sets the iterator to the first arc incoming into or outgoing
   1.442        /// from the node.
   1.443        ///
   1.444        explicit GraphIncIt(const _Graph&, const _Base&) {}
   1.445 @@ -522,9 +522,9 @@
   1.446        GraphIncIt(Invalid) {}
   1.447        /// \brief Assign operator for iterators.
   1.448        ///
   1.449 -      /// The iterators are assignable. 
   1.450 +      /// The iterators are assignable.
   1.451        ///
   1.452 -      GraphIncIt& operator=(GraphIncIt const&) { return *this; }      
   1.453 +      GraphIncIt& operator=(GraphIncIt const&) { return *this; }
   1.454        /// \brief Next item.
   1.455        ///
   1.456        /// Assign the iterator to the next item.
   1.457 @@ -545,23 +545,23 @@
   1.458  
   1.459        template <typename _GraphIncIt>
   1.460        struct Constraints {
   1.461 -	void constraints() {
   1.462 -	  checkConcept<GraphItem<_selector>, _GraphIncIt>();
   1.463 -	  _GraphIncIt it1(graph, node);
   1.464 -	  _GraphIncIt it2;
   1.465 +        void constraints() {
   1.466 +          checkConcept<GraphItem<_selector>, _GraphIncIt>();
   1.467 +          _GraphIncIt it1(graph, node);
   1.468 +          _GraphIncIt it2;
   1.469  
   1.470 -	  it2 = ++it1;
   1.471 -	  ++it2 = it1;
   1.472 -	  ++(++it1);
   1.473 -	  _Item e = it1;
   1.474 -	  e = it2;
   1.475 +          it2 = ++it1;
   1.476 +          ++it2 = it1;
   1.477 +          ++(++it1);
   1.478 +          _Item e = it1;
   1.479 +          e = it2;
   1.480  
   1.481 -	}
   1.482 +        }
   1.483  
   1.484 -	_Item arc;
   1.485 -	_Base node;
   1.486 -	_Graph graph;
   1.487 -	_GraphIncIt it;
   1.488 +        _Item arc;
   1.489 +        _Base node;
   1.490 +        _Graph graph;
   1.491 +        _GraphIncIt it;
   1.492        };
   1.493      };
   1.494  
   1.495 @@ -575,7 +575,7 @@
   1.496      class IterableDigraphComponent : public _Base {
   1.497  
   1.498      public:
   1.499 -    
   1.500 +
   1.501        typedef _Base Base;
   1.502        typedef typename Base::Node Node;
   1.503        typedef typename Base::Arc Arc;
   1.504 @@ -583,33 +583,33 @@
   1.505        typedef IterableDigraphComponent Digraph;
   1.506  
   1.507        /// \name Base iteration
   1.508 -      /// 
   1.509 +      ///
   1.510        /// This interface provides functions for iteration on digraph items
   1.511        ///
   1.512 -      /// @{  
   1.513 +      /// @{
   1.514  
   1.515        /// \brief Gives back the first node in the iterating order.
   1.516 -      ///      
   1.517 +      ///
   1.518        /// Gives back the first node in the iterating order.
   1.519 -      ///     
   1.520 +      ///
   1.521        void first(Node&) const {}
   1.522  
   1.523        /// \brief Gives back the next node in the iterating order.
   1.524        ///
   1.525        /// Gives back the next node in the iterating order.
   1.526 -      ///     
   1.527 +      ///
   1.528        void next(Node&) const {}
   1.529  
   1.530        /// \brief Gives back the first arc in the iterating order.
   1.531        ///
   1.532        /// Gives back the first arc in the iterating order.
   1.533 -      ///     
   1.534 +      ///
   1.535        void first(Arc&) const {}
   1.536  
   1.537        /// \brief Gives back the next arc in the iterating order.
   1.538        ///
   1.539        /// Gives back the next arc in the iterating order.
   1.540 -      ///     
   1.541 +      ///
   1.542        void next(Arc&) const {}
   1.543  
   1.544  
   1.545 @@ -617,7 +617,7 @@
   1.546        /// node.
   1.547        ///
   1.548        /// Gives back the first of the arcs point to the given node.
   1.549 -      ///     
   1.550 +      ///
   1.551        void firstIn(Arc&, const Node&) const {}
   1.552  
   1.553        /// \brief Gives back the next of the arcs points to the given
   1.554 @@ -629,22 +629,22 @@
   1.555  
   1.556        /// \brief Gives back the first of the arcs start from the
   1.557        /// given node.
   1.558 -      ///      
   1.559 +      ///
   1.560        /// Gives back the first of the arcs start from the given node.
   1.561 -      ///     
   1.562 +      ///
   1.563        void firstOut(Arc&, const Node&) const {}
   1.564  
   1.565        /// \brief Gives back the next of the arcs start from the given
   1.566        /// node.
   1.567        ///
   1.568        /// Gives back the next of the arcs start from the given node.
   1.569 -      ///     
   1.570 +      ///
   1.571        void nextOut(Arc&) const {}
   1.572  
   1.573        /// @}
   1.574  
   1.575        /// \name Class based iteration
   1.576 -      /// 
   1.577 +      ///
   1.578        /// This interface provides functions for iteration on digraph items
   1.579        ///
   1.580        /// @{
   1.581 @@ -699,13 +699,13 @@
   1.582  
   1.583        /// @}
   1.584  
   1.585 -      template <typename _Digraph> 
   1.586 +      template <typename _Digraph>
   1.587        struct Constraints {
   1.588 -	void constraints() {
   1.589 -	  checkConcept<Base, _Digraph>();
   1.590 +        void constraints() {
   1.591 +          checkConcept<Base, _Digraph>();
   1.592  
   1.593            {
   1.594 -            typename _Digraph::Node node(INVALID);      
   1.595 +            typename _Digraph::Node node(INVALID);
   1.596              typename _Digraph::Arc arc(INVALID);
   1.597              {
   1.598                digraph.first(node);
   1.599 @@ -723,16 +723,16 @@
   1.600                digraph.firstOut(arc, node);
   1.601                digraph.nextOut(arc);
   1.602              }
   1.603 -          }           
   1.604 +          }
   1.605  
   1.606            {
   1.607              checkConcept<GraphItemIt<_Digraph, typename _Digraph::Arc>,
   1.608                typename _Digraph::ArcIt >();
   1.609              checkConcept<GraphItemIt<_Digraph, typename _Digraph::Node>,
   1.610                typename _Digraph::NodeIt >();
   1.611 -            checkConcept<GraphIncIt<_Digraph, typename _Digraph::Arc, 
   1.612 +            checkConcept<GraphIncIt<_Digraph, typename _Digraph::Arc,
   1.613                typename _Digraph::Node, 'i'>, typename _Digraph::InArcIt>();
   1.614 -            checkConcept<GraphIncIt<_Digraph, typename _Digraph::Arc, 
   1.615 +            checkConcept<GraphIncIt<_Digraph, typename _Digraph::Arc,
   1.616                typename _Digraph::Node, 'o'>, typename _Digraph::OutArcIt>();
   1.617  
   1.618              typename _Digraph::Node n;
   1.619 @@ -745,9 +745,9 @@
   1.620              ignore_unused_variable_warning(n);
   1.621            }
   1.622          }
   1.623 -	
   1.624 -	const _Digraph& digraph;
   1.625 -	
   1.626 +
   1.627 +        const _Digraph& digraph;
   1.628 +
   1.629        };
   1.630      };
   1.631  
   1.632 @@ -765,13 +765,13 @@
   1.633        typedef typename Base::Arc Arc;
   1.634        typedef typename Base::Edge Edge;
   1.635  
   1.636 -    
   1.637 +
   1.638        typedef IterableGraphComponent Graph;
   1.639  
   1.640        /// \name Base iteration
   1.641 -      /// 
   1.642 +      ///
   1.643        /// This interface provides functions for iteration on graph items
   1.644 -      /// @{  
   1.645 +      /// @{
   1.646  
   1.647        using IterableDigraphComponent<_Base>::first;
   1.648        using IterableDigraphComponent<_Base>::next;
   1.649 @@ -780,14 +780,14 @@
   1.650        /// order.
   1.651        ///
   1.652        /// Gives back the first edge in the iterating order.
   1.653 -      ///     
   1.654 +      ///
   1.655        void first(Edge&) const {}
   1.656  
   1.657        /// \brief Gives back the next edge in the iterating
   1.658        /// order.
   1.659        ///
   1.660        /// Gives back the next edge in the iterating order.
   1.661 -      ///     
   1.662 +      ///
   1.663        void next(Edge&) const {}
   1.664  
   1.665  
   1.666 @@ -814,7 +814,7 @@
   1.667        /// @}
   1.668  
   1.669        /// \name Class based iteration
   1.670 -      /// 
   1.671 +      ///
   1.672        /// This interface provides functions for iteration on graph items
   1.673        ///
   1.674        /// @{
   1.675 @@ -841,10 +841,10 @@
   1.676  
   1.677        /// @}
   1.678  
   1.679 -      template <typename _Graph> 
   1.680 +      template <typename _Graph>
   1.681        struct Constraints {
   1.682 -	void constraints() {
   1.683 -	  checkConcept<IterableDigraphComponent<Base>, _Graph>();
   1.684 +        void constraints() {
   1.685 +          checkConcept<IterableDigraphComponent<Base>, _Graph>();
   1.686  
   1.687            {
   1.688              typename _Graph::Node node(INVALID);
   1.689 @@ -858,29 +858,29 @@
   1.690                graph.firstInc(edge, dir, node);
   1.691                graph.nextInc(edge, dir);
   1.692              }
   1.693 -            
   1.694 -          }	
   1.695 -  
   1.696 +
   1.697 +          }
   1.698 +
   1.699            {
   1.700              checkConcept<GraphItemIt<_Graph, typename _Graph::Edge>,
   1.701                typename _Graph::EdgeIt >();
   1.702 -            checkConcept<GraphIncIt<_Graph, typename _Graph::Edge, 
   1.703 +            checkConcept<GraphIncIt<_Graph, typename _Graph::Edge,
   1.704                typename _Graph::Node, 'u'>, typename _Graph::IncEdgeIt>();
   1.705 -            
   1.706 +
   1.707              typename _Graph::Node n;
   1.708              typename _Graph::IncEdgeIt ueit(INVALID);
   1.709              n = graph.baseNode(ueit);
   1.710              n = graph.runningNode(ueit);
   1.711            }
   1.712          }
   1.713 -	
   1.714 -	const _Graph& graph;
   1.715 -	
   1.716 +
   1.717 +        const _Graph& graph;
   1.718 +
   1.719        };
   1.720      };
   1.721  
   1.722      /// \brief An empty alteration notifier digraph class.
   1.723 -    ///  
   1.724 +    ///
   1.725      /// This class provides beside the core digraph features alteration
   1.726      /// notifier interface for the digraph structure.  This implements
   1.727      /// an observer-notifier pattern for each digraph item. More
   1.728 @@ -897,48 +897,48 @@
   1.729  
   1.730  
   1.731        /// The node observer registry.
   1.732 -      typedef AlterationNotifier<AlterableDigraphComponent, Node> 
   1.733 +      typedef AlterationNotifier<AlterableDigraphComponent, Node>
   1.734        NodeNotifier;
   1.735        /// The arc observer registry.
   1.736 -      typedef AlterationNotifier<AlterableDigraphComponent, Arc> 
   1.737 +      typedef AlterationNotifier<AlterableDigraphComponent, Arc>
   1.738        ArcNotifier;
   1.739 -      
   1.740 +
   1.741        /// \brief Gives back the node alteration notifier.
   1.742        ///
   1.743        /// Gives back the node alteration notifier.
   1.744        NodeNotifier& notifier(Node) const {
   1.745 -	return NodeNotifier();
   1.746 +        return NodeNotifier();
   1.747        }
   1.748 -      
   1.749 +
   1.750        /// \brief Gives back the arc alteration notifier.
   1.751        ///
   1.752        /// Gives back the arc alteration notifier.
   1.753        ArcNotifier& notifier(Arc) const {
   1.754 -	return ArcNotifier();
   1.755 +        return ArcNotifier();
   1.756        }
   1.757  
   1.758 -      template <typename _Digraph> 
   1.759 +      template <typename _Digraph>
   1.760        struct Constraints {
   1.761 -	void constraints() {
   1.762 -	  checkConcept<Base, _Digraph>();
   1.763 -          typename _Digraph::NodeNotifier& nn 
   1.764 +        void constraints() {
   1.765 +          checkConcept<Base, _Digraph>();
   1.766 +          typename _Digraph::NodeNotifier& nn
   1.767              = digraph.notifier(typename _Digraph::Node());
   1.768  
   1.769 -          typename _Digraph::ArcNotifier& en 
   1.770 +          typename _Digraph::ArcNotifier& en
   1.771              = digraph.notifier(typename _Digraph::Arc());
   1.772 -          
   1.773 +
   1.774            ignore_unused_variable_warning(nn);
   1.775            ignore_unused_variable_warning(en);
   1.776 -	}
   1.777 -	
   1.778 -	const _Digraph& digraph;
   1.779 -	
   1.780 +        }
   1.781 +
   1.782 +        const _Digraph& digraph;
   1.783 +
   1.784        };
   1.785 -      
   1.786 +
   1.787      };
   1.788  
   1.789      /// \brief An empty alteration notifier undirected graph class.
   1.790 -    ///  
   1.791 +    ///
   1.792      /// This class provides beside the core graph features alteration
   1.793      /// notifier interface for the graph structure.  This implements
   1.794      /// an observer-notifier pattern for each graph item. More
   1.795 @@ -954,33 +954,33 @@
   1.796  
   1.797  
   1.798        /// The arc observer registry.
   1.799 -      typedef AlterationNotifier<AlterableGraphComponent, Edge> 
   1.800 +      typedef AlterationNotifier<AlterableGraphComponent, Edge>
   1.801        EdgeNotifier;
   1.802 -      
   1.803 +
   1.804        /// \brief Gives back the arc alteration notifier.
   1.805        ///
   1.806        /// Gives back the arc alteration notifier.
   1.807        EdgeNotifier& notifier(Edge) const {
   1.808 -	return EdgeNotifier();
   1.809 +        return EdgeNotifier();
   1.810        }
   1.811  
   1.812 -      template <typename _Graph> 
   1.813 +      template <typename _Graph>
   1.814        struct Constraints {
   1.815 -	void constraints() {
   1.816 -	  checkConcept<AlterableGraphComponent<Base>, _Graph>();
   1.817 -          typename _Graph::EdgeNotifier& uen 
   1.818 +        void constraints() {
   1.819 +          checkConcept<AlterableGraphComponent<Base>, _Graph>();
   1.820 +          typename _Graph::EdgeNotifier& uen
   1.821              = graph.notifier(typename _Graph::Edge());
   1.822            ignore_unused_variable_warning(uen);
   1.823 -	}
   1.824 -	
   1.825 -	const _Graph& graph;
   1.826 -	
   1.827 +        }
   1.828 +
   1.829 +        const _Graph& graph;
   1.830 +
   1.831        };
   1.832 -      
   1.833 +
   1.834      };
   1.835  
   1.836      /// \brief Class describing the concept of graph maps
   1.837 -    /// 
   1.838 +    ///
   1.839      /// This class describes the common interface of the graph maps
   1.840      /// (NodeMap, ArcMap), that is \ref maps-page "maps" which can be used to
   1.841      /// associate data to graph descriptors (nodes or arcs).
   1.842 @@ -1009,39 +1009,39 @@
   1.843        ///
   1.844        /// Copy Constructor.
   1.845        GraphMap(const GraphMap&) : Parent() {}
   1.846 -      
   1.847 +
   1.848        /// \brief Assign operator.
   1.849        ///
   1.850        /// Assign operator. It does not mofify the underlying graph,
   1.851        /// it just iterates on the current item set and set the  map
   1.852 -      /// with the value returned by the assigned map. 
   1.853 +      /// with the value returned by the assigned map.
   1.854        template <typename CMap>
   1.855 -      GraphMap& operator=(const CMap&) { 
   1.856 +      GraphMap& operator=(const CMap&) {
   1.857          checkConcept<ReadMap<Key, Value>, CMap>();
   1.858          return *this;
   1.859        }
   1.860  
   1.861        template<typename _Map>
   1.862        struct Constraints {
   1.863 -	void constraints() {
   1.864 -	  checkConcept<ReadWriteMap<Key, Value>, _Map >();
   1.865 -	  // Construction with a graph parameter
   1.866 -	  _Map a(g);
   1.867 -	  // Constructor with a graph and a default value parameter
   1.868 -	  _Map a2(g,t);
   1.869 -	  // Copy constructor.
   1.870 -	  _Map b(c);
   1.871 -          
   1.872 +        void constraints() {
   1.873 +          checkConcept<ReadWriteMap<Key, Value>, _Map >();
   1.874 +          // Construction with a graph parameter
   1.875 +          _Map a(g);
   1.876 +          // Constructor with a graph and a default value parameter
   1.877 +          _Map a2(g,t);
   1.878 +          // Copy constructor.
   1.879 +          _Map b(c);
   1.880 +
   1.881            ReadMap<Key, Value> cmap;
   1.882            b = cmap;
   1.883  
   1.884 -	  ignore_unused_variable_warning(a2);
   1.885 -	  ignore_unused_variable_warning(b);
   1.886 -	}
   1.887 +          ignore_unused_variable_warning(a2);
   1.888 +          ignore_unused_variable_warning(b);
   1.889 +        }
   1.890  
   1.891 -	const _Map &c;
   1.892 -	const Graph &g;
   1.893 -	const typename GraphMap::Value &t;
   1.894 +        const _Map &c;
   1.895 +        const Graph &g;
   1.896 +        const typename GraphMap::Value &t;
   1.897        };
   1.898  
   1.899      };
   1.900 @@ -1070,28 +1070,28 @@
   1.901        public:
   1.902          typedef GraphMap<MappableDigraphComponent, Node, _Value> Parent;
   1.903  
   1.904 -	/// \brief Construct a new map.
   1.905 -	///
   1.906 -	/// Construct a new map for the digraph.
   1.907 -	explicit NodeMap(const MappableDigraphComponent& digraph) 
   1.908 +        /// \brief Construct a new map.
   1.909 +        ///
   1.910 +        /// Construct a new map for the digraph.
   1.911 +        explicit NodeMap(const MappableDigraphComponent& digraph)
   1.912            : Parent(digraph) {}
   1.913  
   1.914 -	/// \brief Construct a new map with default value.
   1.915 -	///
   1.916 -	/// Construct a new map for the digraph and initalise the values.
   1.917 -	NodeMap(const MappableDigraphComponent& digraph, const _Value& value)
   1.918 +        /// \brief Construct a new map with default value.
   1.919 +        ///
   1.920 +        /// Construct a new map for the digraph and initalise the values.
   1.921 +        NodeMap(const MappableDigraphComponent& digraph, const _Value& value)
   1.922            : Parent(digraph, value) {}
   1.923  
   1.924 -	/// \brief Copy constructor.
   1.925 -	///
   1.926 -	/// Copy Constructor.
   1.927 -	NodeMap(const NodeMap& nm) : Parent(nm) {}
   1.928 +        /// \brief Copy constructor.
   1.929 +        ///
   1.930 +        /// Copy Constructor.
   1.931 +        NodeMap(const NodeMap& nm) : Parent(nm) {}
   1.932  
   1.933 -	/// \brief Assign operator.
   1.934 -	///
   1.935 -	/// Assign operator.
   1.936 +        /// \brief Assign operator.
   1.937 +        ///
   1.938 +        /// Assign operator.
   1.939          template <typename CMap>
   1.940 -        NodeMap& operator=(const CMap&) { 
   1.941 +        NodeMap& operator=(const CMap&) {
   1.942            checkConcept<ReadMap<Node, _Value>, CMap>();
   1.943            return *this;
   1.944          }
   1.945 @@ -1107,28 +1107,28 @@
   1.946        public:
   1.947          typedef GraphMap<MappableDigraphComponent, Arc, _Value> Parent;
   1.948  
   1.949 -	/// \brief Construct a new map.
   1.950 -	///
   1.951 -	/// Construct a new map for the digraph.
   1.952 -	explicit ArcMap(const MappableDigraphComponent& digraph) 
   1.953 +        /// \brief Construct a new map.
   1.954 +        ///
   1.955 +        /// Construct a new map for the digraph.
   1.956 +        explicit ArcMap(const MappableDigraphComponent& digraph)
   1.957            : Parent(digraph) {}
   1.958  
   1.959 -	/// \brief Construct a new map with default value.
   1.960 -	///
   1.961 -	/// Construct a new map for the digraph and initalise the values.
   1.962 -	ArcMap(const MappableDigraphComponent& digraph, const _Value& value)
   1.963 +        /// \brief Construct a new map with default value.
   1.964 +        ///
   1.965 +        /// Construct a new map for the digraph and initalise the values.
   1.966 +        ArcMap(const MappableDigraphComponent& digraph, const _Value& value)
   1.967            : Parent(digraph, value) {}
   1.968  
   1.969 -	/// \brief Copy constructor.
   1.970 -	///
   1.971 -	/// Copy Constructor.
   1.972 -	ArcMap(const ArcMap& nm) : Parent(nm) {}
   1.973 +        /// \brief Copy constructor.
   1.974 +        ///
   1.975 +        /// Copy Constructor.
   1.976 +        ArcMap(const ArcMap& nm) : Parent(nm) {}
   1.977  
   1.978 -	/// \brief Assign operator.
   1.979 -	///
   1.980 -	/// Assign operator.
   1.981 +        /// \brief Assign operator.
   1.982 +        ///
   1.983 +        /// Assign operator.
   1.984          template <typename CMap>
   1.985 -        ArcMap& operator=(const CMap&) { 
   1.986 +        ArcMap& operator=(const CMap&) {
   1.987            checkConcept<ReadMap<Arc, _Value>, CMap>();
   1.988            return *this;
   1.989          }
   1.990 @@ -1139,44 +1139,44 @@
   1.991        template <typename _Digraph>
   1.992        struct Constraints {
   1.993  
   1.994 -	struct Dummy {
   1.995 -	  int value;
   1.996 -	  Dummy() : value(0) {}
   1.997 -	  Dummy(int _v) : value(_v) {}
   1.998 -	};
   1.999 +        struct Dummy {
  1.1000 +          int value;
  1.1001 +          Dummy() : value(0) {}
  1.1002 +          Dummy(int _v) : value(_v) {}
  1.1003 +        };
  1.1004  
  1.1005 -	void constraints() {
  1.1006 -	  checkConcept<Base, _Digraph>();
  1.1007 -	  { // int map test
  1.1008 -	    typedef typename _Digraph::template NodeMap<int> IntNodeMap;
  1.1009 -	    checkConcept<GraphMap<_Digraph, typename _Digraph::Node, int>, 
  1.1010 -	      IntNodeMap >();
  1.1011 -	  } { // bool map test
  1.1012 -	    typedef typename _Digraph::template NodeMap<bool> BoolNodeMap;
  1.1013 -	    checkConcept<GraphMap<_Digraph, typename _Digraph::Node, bool>,
  1.1014 -	      BoolNodeMap >();
  1.1015 -	  } { // Dummy map test
  1.1016 -	    typedef typename _Digraph::template NodeMap<Dummy> DummyNodeMap;
  1.1017 -	    checkConcept<GraphMap<_Digraph, typename _Digraph::Node, Dummy>,
  1.1018 -	      DummyNodeMap >();
  1.1019 -	  } 
  1.1020 +        void constraints() {
  1.1021 +          checkConcept<Base, _Digraph>();
  1.1022 +          { // int map test
  1.1023 +            typedef typename _Digraph::template NodeMap<int> IntNodeMap;
  1.1024 +            checkConcept<GraphMap<_Digraph, typename _Digraph::Node, int>,
  1.1025 +              IntNodeMap >();
  1.1026 +          } { // bool map test
  1.1027 +            typedef typename _Digraph::template NodeMap<bool> BoolNodeMap;
  1.1028 +            checkConcept<GraphMap<_Digraph, typename _Digraph::Node, bool>,
  1.1029 +              BoolNodeMap >();
  1.1030 +          } { // Dummy map test
  1.1031 +            typedef typename _Digraph::template NodeMap<Dummy> DummyNodeMap;
  1.1032 +            checkConcept<GraphMap<_Digraph, typename _Digraph::Node, Dummy>,
  1.1033 +              DummyNodeMap >();
  1.1034 +          }
  1.1035  
  1.1036 -	  { // int map test
  1.1037 -	    typedef typename _Digraph::template ArcMap<int> IntArcMap;
  1.1038 -	    checkConcept<GraphMap<_Digraph, typename _Digraph::Arc, int>,
  1.1039 -	      IntArcMap >();
  1.1040 -	  } { // bool map test
  1.1041 -	    typedef typename _Digraph::template ArcMap<bool> BoolArcMap;
  1.1042 -	    checkConcept<GraphMap<_Digraph, typename _Digraph::Arc, bool>,
  1.1043 -	      BoolArcMap >();
  1.1044 -	  } { // Dummy map test
  1.1045 -	    typedef typename _Digraph::template ArcMap<Dummy> DummyArcMap;
  1.1046 -	    checkConcept<GraphMap<_Digraph, typename _Digraph::Arc, Dummy>, 
  1.1047 -	      DummyArcMap >();
  1.1048 -	  } 
  1.1049 -	}
  1.1050 +          { // int map test
  1.1051 +            typedef typename _Digraph::template ArcMap<int> IntArcMap;
  1.1052 +            checkConcept<GraphMap<_Digraph, typename _Digraph::Arc, int>,
  1.1053 +              IntArcMap >();
  1.1054 +          } { // bool map test
  1.1055 +            typedef typename _Digraph::template ArcMap<bool> BoolArcMap;
  1.1056 +            checkConcept<GraphMap<_Digraph, typename _Digraph::Arc, bool>,
  1.1057 +              BoolArcMap >();
  1.1058 +          } { // Dummy map test
  1.1059 +            typedef typename _Digraph::template ArcMap<Dummy> DummyArcMap;
  1.1060 +            checkConcept<GraphMap<_Digraph, typename _Digraph::Arc, Dummy>,
  1.1061 +              DummyArcMap >();
  1.1062 +          }
  1.1063 +        }
  1.1064  
  1.1065 -	_Digraph& digraph;
  1.1066 +        _Digraph& digraph;
  1.1067        };
  1.1068      };
  1.1069  
  1.1070 @@ -1199,32 +1199,32 @@
  1.1071        /// ReadWrite map of the edges.
  1.1072        ///
  1.1073        template <typename _Value>
  1.1074 -      class EdgeMap : public GraphMap<Graph, Edge, _Value> {  
  1.1075 +      class EdgeMap : public GraphMap<Graph, Edge, _Value> {
  1.1076        public:
  1.1077          typedef GraphMap<MappableGraphComponent, Edge, _Value> Parent;
  1.1078  
  1.1079 -	/// \brief Construct a new map.
  1.1080 -	///
  1.1081 -	/// Construct a new map for the graph.
  1.1082 -	explicit EdgeMap(const MappableGraphComponent& graph) 
  1.1083 +        /// \brief Construct a new map.
  1.1084 +        ///
  1.1085 +        /// Construct a new map for the graph.
  1.1086 +        explicit EdgeMap(const MappableGraphComponent& graph)
  1.1087            : Parent(graph) {}
  1.1088  
  1.1089 -	/// \brief Construct a new map with default value.
  1.1090 -	///
  1.1091 -	/// Construct a new map for the graph and initalise the values.
  1.1092 -	EdgeMap(const MappableGraphComponent& graph, const _Value& value)
  1.1093 +        /// \brief Construct a new map with default value.
  1.1094 +        ///
  1.1095 +        /// Construct a new map for the graph and initalise the values.
  1.1096 +        EdgeMap(const MappableGraphComponent& graph, const _Value& value)
  1.1097            : Parent(graph, value) {}
  1.1098  
  1.1099 -	/// \brief Copy constructor.
  1.1100 -	///
  1.1101 -	/// Copy Constructor.
  1.1102 -	EdgeMap(const EdgeMap& nm) : Parent(nm) {}
  1.1103 +        /// \brief Copy constructor.
  1.1104 +        ///
  1.1105 +        /// Copy Constructor.
  1.1106 +        EdgeMap(const EdgeMap& nm) : Parent(nm) {}
  1.1107  
  1.1108 -	/// \brief Assign operator.
  1.1109 -	///
  1.1110 -	/// Assign operator.
  1.1111 +        /// \brief Assign operator.
  1.1112 +        ///
  1.1113 +        /// Assign operator.
  1.1114          template <typename CMap>
  1.1115 -        EdgeMap& operator=(const CMap&) { 
  1.1116 +        EdgeMap& operator=(const CMap&) {
  1.1117            checkConcept<ReadMap<Edge, _Value>, CMap>();
  1.1118            return *this;
  1.1119          }
  1.1120 @@ -1235,31 +1235,31 @@
  1.1121        template <typename _Graph>
  1.1122        struct Constraints {
  1.1123  
  1.1124 -	struct Dummy {
  1.1125 -	  int value;
  1.1126 -	  Dummy() : value(0) {}
  1.1127 -	  Dummy(int _v) : value(_v) {}
  1.1128 -	};
  1.1129 +        struct Dummy {
  1.1130 +          int value;
  1.1131 +          Dummy() : value(0) {}
  1.1132 +          Dummy(int _v) : value(_v) {}
  1.1133 +        };
  1.1134  
  1.1135 -	void constraints() {
  1.1136 -	  checkConcept<MappableGraphComponent<Base>, _Graph>();
  1.1137 +        void constraints() {
  1.1138 +          checkConcept<MappableGraphComponent<Base>, _Graph>();
  1.1139  
  1.1140 -	  { // int map test
  1.1141 -	    typedef typename _Graph::template EdgeMap<int> IntEdgeMap;
  1.1142 -	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, int>,
  1.1143 -	      IntEdgeMap >();
  1.1144 -	  } { // bool map test
  1.1145 -	    typedef typename _Graph::template EdgeMap<bool> BoolEdgeMap;
  1.1146 -	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, bool>,
  1.1147 -	      BoolEdgeMap >();
  1.1148 -	  } { // Dummy map test
  1.1149 -	    typedef typename _Graph::template EdgeMap<Dummy> DummyEdgeMap;
  1.1150 -	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, Dummy>, 
  1.1151 -	      DummyEdgeMap >();
  1.1152 -	  } 
  1.1153 -	}
  1.1154 +          { // int map test
  1.1155 +            typedef typename _Graph::template EdgeMap<int> IntEdgeMap;
  1.1156 +            checkConcept<GraphMap<_Graph, typename _Graph::Edge, int>,
  1.1157 +              IntEdgeMap >();
  1.1158 +          } { // bool map test
  1.1159 +            typedef typename _Graph::template EdgeMap<bool> BoolEdgeMap;
  1.1160 +            checkConcept<GraphMap<_Graph, typename _Graph::Edge, bool>,
  1.1161 +              BoolEdgeMap >();
  1.1162 +          } { // Dummy map test
  1.1163 +            typedef typename _Graph::template EdgeMap<Dummy> DummyEdgeMap;
  1.1164 +            checkConcept<GraphMap<_Graph, typename _Graph::Edge, Dummy>,
  1.1165 +              DummyEdgeMap >();
  1.1166 +          }
  1.1167 +        }
  1.1168  
  1.1169 -	_Graph& graph;
  1.1170 +        _Graph& graph;
  1.1171        };
  1.1172      };
  1.1173  
  1.1174 @@ -1282,28 +1282,28 @@
  1.1175        /// Adds a new node to the digraph.
  1.1176        ///
  1.1177        Node addNode() {
  1.1178 -	return INVALID;
  1.1179 +        return INVALID;
  1.1180        }
  1.1181 -    
  1.1182 +
  1.1183        /// \brief Adds a new arc connects the given two nodes.
  1.1184        ///
  1.1185        /// Adds a new arc connects the the given two nodes.
  1.1186        Arc addArc(const Node&, const Node&) {
  1.1187 -	return INVALID;
  1.1188 +        return INVALID;
  1.1189        }
  1.1190  
  1.1191        template <typename _Digraph>
  1.1192        struct Constraints {
  1.1193 -	void constraints() {
  1.1194 +        void constraints() {
  1.1195            checkConcept<Base, _Digraph>();
  1.1196 -	  typename _Digraph::Node node_a, node_b;
  1.1197 -	  node_a = digraph.addNode();
  1.1198 -	  node_b = digraph.addNode();
  1.1199 -	  typename _Digraph::Arc arc;
  1.1200 -	  arc = digraph.addArc(node_a, node_b);
  1.1201 -	}
  1.1202 +          typename _Digraph::Node node_a, node_b;
  1.1203 +          node_a = digraph.addNode();
  1.1204 +          node_b = digraph.addNode();
  1.1205 +          typename _Digraph::Arc arc;
  1.1206 +          arc = digraph.addArc(node_a, node_b);
  1.1207 +        }
  1.1208  
  1.1209 -	_Digraph& digraph;
  1.1210 +        _Digraph& digraph;
  1.1211        };
  1.1212      };
  1.1213  
  1.1214 @@ -1327,33 +1327,33 @@
  1.1215        /// Adds a new node to the graph.
  1.1216        ///
  1.1217        Node addNode() {
  1.1218 -	return INVALID;
  1.1219 +        return INVALID;
  1.1220        }
  1.1221 -    
  1.1222 +
  1.1223        /// \brief Adds a new arc connects the given two nodes.
  1.1224        ///
  1.1225        /// Adds a new arc connects the the given two nodes.
  1.1226        Edge addArc(const Node&, const Node&) {
  1.1227 -	return INVALID;
  1.1228 +        return INVALID;
  1.1229        }
  1.1230  
  1.1231        template <typename _Graph>
  1.1232        struct Constraints {
  1.1233 -	void constraints() {
  1.1234 -	  checkConcept<Base, _Graph>();
  1.1235 -	  typename _Graph::Node node_a, node_b;
  1.1236 -	  node_a = graph.addNode();
  1.1237 -	  node_b = graph.addNode();
  1.1238 -	  typename _Graph::Edge edge;
  1.1239 -	  edge = graph.addEdge(node_a, node_b);
  1.1240 -	}
  1.1241 +        void constraints() {
  1.1242 +          checkConcept<Base, _Graph>();
  1.1243 +          typename _Graph::Node node_a, node_b;
  1.1244 +          node_a = graph.addNode();
  1.1245 +          node_b = graph.addNode();
  1.1246 +          typename _Graph::Edge edge;
  1.1247 +          edge = graph.addEdge(node_a, node_b);
  1.1248 +        }
  1.1249  
  1.1250 -	_Graph& graph;
  1.1251 +        _Graph& graph;
  1.1252        };
  1.1253      };
  1.1254  
  1.1255      /// \brief An empty erasable digraph class.
  1.1256 -    ///  
  1.1257 +    ///
  1.1258      /// This class provides beside the core digraph features core erase
  1.1259      /// functions for the digraph structure. The main difference between
  1.1260      /// the base and this interface is that the digraph alterations
  1.1261 @@ -1368,9 +1368,9 @@
  1.1262  
  1.1263        /// \brief Erase a node from the digraph.
  1.1264        ///
  1.1265 -      /// Erase a node from the digraph. This function should 
  1.1266 +      /// Erase a node from the digraph. This function should
  1.1267        /// erase all arcs connecting to the node.
  1.1268 -      void erase(const Node&) {}    
  1.1269 +      void erase(const Node&) {}
  1.1270  
  1.1271        /// \brief Erase an arc from the digraph.
  1.1272        ///
  1.1273 @@ -1380,20 +1380,20 @@
  1.1274  
  1.1275        template <typename _Digraph>
  1.1276        struct Constraints {
  1.1277 -	void constraints() {
  1.1278 +        void constraints() {
  1.1279            checkConcept<Base, _Digraph>();
  1.1280 -	  typename _Digraph::Node node;
  1.1281 -	  digraph.erase(node);
  1.1282 -	  typename _Digraph::Arc arc;
  1.1283 -	  digraph.erase(arc);
  1.1284 -	}
  1.1285 +          typename _Digraph::Node node;
  1.1286 +          digraph.erase(node);
  1.1287 +          typename _Digraph::Arc arc;
  1.1288 +          digraph.erase(arc);
  1.1289 +        }
  1.1290  
  1.1291 -	_Digraph& digraph;
  1.1292 +        _Digraph& digraph;
  1.1293        };
  1.1294      };
  1.1295  
  1.1296      /// \brief An empty erasable base undirected graph class.
  1.1297 -    ///  
  1.1298 +    ///
  1.1299      /// This class provides beside the core undirected graph features
  1.1300      /// core erase functions for the undirceted graph structure. The
  1.1301      /// main difference between the base and this interface is that
  1.1302 @@ -1410,7 +1410,7 @@
  1.1303        ///
  1.1304        /// Erase a node from the graph. This function should erase
  1.1305        /// arcs connecting to the node.
  1.1306 -      void erase(const Node&) {}    
  1.1307 +      void erase(const Node&) {}
  1.1308  
  1.1309        /// \brief Erase an arc from the graph.
  1.1310        ///
  1.1311 @@ -1420,15 +1420,15 @@
  1.1312  
  1.1313        template <typename _Graph>
  1.1314        struct Constraints {
  1.1315 -	void constraints() {
  1.1316 +        void constraints() {
  1.1317            checkConcept<Base, _Graph>();
  1.1318 -	  typename _Graph::Node node;
  1.1319 -	  graph.erase(node);
  1.1320 -	  typename _Graph::Edge edge;
  1.1321 -	  graph.erase(edge);
  1.1322 -	}
  1.1323 +          typename _Graph::Node node;
  1.1324 +          graph.erase(node);
  1.1325 +          typename _Graph::Edge edge;
  1.1326 +          graph.erase(edge);
  1.1327 +        }
  1.1328  
  1.1329 -	_Graph& graph;
  1.1330 +        _Graph& graph;
  1.1331        };
  1.1332      };
  1.1333  
  1.1334 @@ -1448,16 +1448,16 @@
  1.1335        ///
  1.1336        /// Erase all nodes and arcs from the digraph.
  1.1337        ///
  1.1338 -      void clear() {}    
  1.1339 +      void clear() {}
  1.1340  
  1.1341        template <typename _Digraph>
  1.1342        struct Constraints {
  1.1343 -	void constraints() {
  1.1344 +        void constraints() {
  1.1345            checkConcept<Base, _Digraph>();
  1.1346 -	  digraph.clear();
  1.1347 -	}
  1.1348 +          digraph.clear();
  1.1349 +        }
  1.1350  
  1.1351 -	_Digraph digraph;
  1.1352 +        _Digraph digraph;
  1.1353        };
  1.1354      };
  1.1355  
  1.1356 @@ -1475,11 +1475,11 @@
  1.1357  
  1.1358        template <typename _Graph>
  1.1359        struct Constraints {
  1.1360 -	void constraints() {
  1.1361 +        void constraints() {
  1.1362            checkConcept<ClearableGraphComponent<Base>, _Graph>();
  1.1363 -	}
  1.1364 +        }
  1.1365  
  1.1366 -	_Graph graph;
  1.1367 +        _Graph graph;
  1.1368        };
  1.1369      };
  1.1370