17 #ifndef LEMON_LIST_GRAPH_H |
17 #ifndef LEMON_LIST_GRAPH_H |
18 #define LEMON_LIST_GRAPH_H |
18 #define LEMON_LIST_GRAPH_H |
19 |
19 |
20 ///\ingroup graphs |
20 ///\ingroup graphs |
21 ///\file |
21 ///\file |
22 ///\brief ListGraph, UndirListGraph classes. |
22 ///\brief ListGraph, ListUGraph classes. |
23 |
23 |
24 #include <lemon/bits/erasable_graph_extender.h> |
24 #include <lemon/bits/erasable_graph_extender.h> |
25 #include <lemon/bits/clearable_graph_extender.h> |
25 #include <lemon/bits/clearable_graph_extender.h> |
26 #include <lemon/bits/extendable_graph_extender.h> |
26 #include <lemon/bits/extendable_graph_extender.h> |
27 #include <lemon/bits/iterable_graph_extender.h> |
27 #include <lemon/bits/iterable_graph_extender.h> |
574 |
574 |
575 ///@} |
575 ///@} |
576 |
576 |
577 /**************** Undirected List Graph ****************/ |
577 /**************** Undirected List Graph ****************/ |
578 |
578 |
579 typedef ErasableUndirGraphExtender< |
579 typedef ErasableUGraphExtender< |
580 ClearableUndirGraphExtender< |
580 ClearableUGraphExtender< |
581 ExtendableUndirGraphExtender< |
581 ExtendableUGraphExtender< |
582 MappableUndirGraphExtender< |
582 MappableUGraphExtender< |
583 IterableUndirGraphExtender< |
583 IterableUGraphExtender< |
584 AlterableUndirGraphExtender< |
584 AlterableUGraphExtender< |
585 UndirGraphExtender<ListGraphBase> > > > > > > ExtendedUndirListGraphBase; |
585 UGraphExtender<ListGraphBase> > > > > > > ExtendedListUGraphBase; |
586 |
586 |
587 /// \addtogroup graphs |
587 /// \addtogroup graphs |
588 /// @{ |
588 /// @{ |
589 |
589 |
590 ///An undirected list graph class. |
590 ///An undirected list graph class. |
591 |
591 |
592 ///This is a simple and fast erasable undirected graph implementation. |
592 ///This is a simple and fast erasable undirected graph implementation. |
593 /// |
593 /// |
594 ///It conforms to the |
594 ///It conforms to the |
595 ///\ref concept::UndirGraph "UndirGraph" concept. |
595 ///\ref concept::UGraph "UGraph" concept. |
596 /// |
596 /// |
597 ///\sa concept::UndirGraph. |
597 ///\sa concept::UGraph. |
598 /// |
598 /// |
599 ///\todo Snapshot, reverseEdge(), changeTarget(), changeSource(), contract() |
599 ///\todo Snapshot, reverseEdge(), changeTarget(), changeSource(), contract() |
600 ///haven't been implemented yet. |
600 ///haven't been implemented yet. |
601 /// |
601 /// |
602 class UndirListGraph : public ExtendedUndirListGraphBase { |
602 class ListUGraph : public ExtendedListUGraphBase { |
603 public: |
603 public: |
604 typedef ExtendedUndirListGraphBase Parent; |
604 typedef ExtendedListUGraphBase Parent; |
605 /// \brief Changes the target of \c e to \c n |
605 /// \brief Changes the target of \c e to \c n |
606 /// |
606 /// |
607 /// Changes the target of \c e to \c n |
607 /// Changes the target of \c e to \c n |
608 /// |
608 /// |
609 /// \note The <tt>Edge</tt>'s and <tt>OutEdge</tt>'s |
609 /// \note The <tt>Edge</tt>'s and <tt>OutEdge</tt>'s |
610 /// referencing the changed edge remain |
610 /// referencing the changed edge remain |
611 /// valid. However <tt>InEdge</tt>'s are invalidated. |
611 /// valid. However <tt>InEdge</tt>'s are invalidated. |
612 void changeTarget(UndirEdge e, Node n) { |
612 void changeTarget(UEdge e, Node n) { |
613 _changeTarget(e,n); |
613 _changeTarget(e,n); |
614 } |
614 } |
615 /// Changes the source of \c e to \c n |
615 /// Changes the source of \c e to \c n |
616 /// |
616 /// |
617 /// Changes the source of \c e to \c n |
617 /// Changes the source of \c e to \c n |
618 /// |
618 /// |
619 ///\note The <tt>Edge</tt>'s and <tt>InEdge</tt>'s |
619 ///\note The <tt>Edge</tt>'s and <tt>InEdge</tt>'s |
620 ///referencing the changed edge remain |
620 ///referencing the changed edge remain |
621 ///valid. However <tt>OutEdge</tt>'s are invalidated. |
621 ///valid. However <tt>OutEdge</tt>'s are invalidated. |
622 void changeSource(UndirEdge e, Node n) { |
622 void changeSource(UEdge e, Node n) { |
623 _changeSource(e,n); |
623 _changeSource(e,n); |
624 } |
624 } |
625 /// \brief Contract two nodes. |
625 /// \brief Contract two nodes. |
626 /// |
626 /// |
627 /// This function contracts two nodes. |
627 /// This function contracts two nodes. |