419 /// \brief The opposite node on the given arc. |
419 /// \brief The opposite node on the given arc. |
420 /// |
420 /// |
421 /// Gives back the opposite node on the given arc. |
421 /// Gives back the opposite node on the given arc. |
422 Node oppositeNode(const Node&, const Arc&) const { return INVALID; } |
422 Node oppositeNode(const Node&, const Arc&) const { return INVALID; } |
423 |
423 |
424 /// \brief Read write map of the nodes to type \c T. |
424 /// \brief Reference map of the nodes to type \c T. |
425 /// |
425 /// |
426 /// ReadWrite map of the nodes to type \c T. |
426 /// Reference map of the nodes to type \c T. |
427 /// \sa Reference |
|
428 template<class T> |
427 template<class T> |
429 class NodeMap : public ReadWriteMap< Node, T > { |
428 class NodeMap : public ReferenceMap<Node, T, T&, const T&> { |
430 public: |
429 public: |
431 |
430 |
432 ///\e |
431 ///\e |
433 NodeMap(const Digraph&) { } |
432 NodeMap(const Digraph&) { } |
434 ///\e |
433 ///\e |
435 NodeMap(const Digraph&, T) { } |
434 NodeMap(const Digraph&, T) { } |
436 |
435 |
437 private: |
436 private: |
438 ///Copy constructor |
437 ///Copy constructor |
439 NodeMap(const NodeMap& nm) : ReadWriteMap< Node, T >(nm) { } |
438 NodeMap(const NodeMap& nm) : |
|
439 ReferenceMap<Node, T, T&, const T&>(nm) { } |
440 ///Assignment operator |
440 ///Assignment operator |
441 template <typename CMap> |
441 template <typename CMap> |
442 NodeMap& operator=(const CMap&) { |
442 NodeMap& operator=(const CMap&) { |
443 checkConcept<ReadMap<Node, T>, CMap>(); |
443 checkConcept<ReadMap<Node, T>, CMap>(); |
444 return *this; |
444 return *this; |
445 } |
445 } |
446 }; |
446 }; |
447 |
447 |
448 /// \brief Read write map of the arcs to type \c T. |
448 /// \brief Reference map of the arcs to type \c T. |
449 /// |
449 /// |
450 /// Reference map of the arcs to type \c T. |
450 /// Reference map of the arcs to type \c T. |
451 /// \sa Reference |
|
452 template<class T> |
451 template<class T> |
453 class ArcMap : public ReadWriteMap<Arc,T> { |
452 class ArcMap : public ReferenceMap<Arc, T, T&, const T&> { |
454 public: |
453 public: |
455 |
454 |
456 ///\e |
455 ///\e |
457 ArcMap(const Digraph&) { } |
456 ArcMap(const Digraph&) { } |
458 ///\e |
457 ///\e |
459 ArcMap(const Digraph&, T) { } |
458 ArcMap(const Digraph&, T) { } |
460 private: |
459 private: |
461 ///Copy constructor |
460 ///Copy constructor |
462 ArcMap(const ArcMap& em) : ReadWriteMap<Arc,T>(em) { } |
461 ArcMap(const ArcMap& em) : |
|
462 ReferenceMap<Arc, T, T&, const T&>(em) { } |
463 ///Assignment operator |
463 ///Assignment operator |
464 template <typename CMap> |
464 template <typename CMap> |
465 ArcMap& operator=(const CMap&) { |
465 ArcMap& operator=(const CMap&) { |
466 checkConcept<ReadMap<Arc, T>, CMap>(); |
466 checkConcept<ReadMap<Arc, T>, CMap>(); |
467 return *this; |
467 return *this; |
469 }; |
469 }; |
470 |
470 |
471 template <typename _Digraph> |
471 template <typename _Digraph> |
472 struct Constraints { |
472 struct Constraints { |
473 void constraints() { |
473 void constraints() { |
|
474 checkConcept<BaseDigraphComponent, _Digraph>(); |
474 checkConcept<IterableDigraphComponent<>, _Digraph>(); |
475 checkConcept<IterableDigraphComponent<>, _Digraph>(); |
475 checkConcept<IDableDigraphComponent<>, _Digraph>(); |
476 checkConcept<IDableDigraphComponent<>, _Digraph>(); |
476 checkConcept<MappableDigraphComponent<>, _Digraph>(); |
477 checkConcept<MappableDigraphComponent<>, _Digraph>(); |
477 } |
478 } |
478 }; |
479 }; |