lemon/list_graph.h
changeset 1919 9704601de87f
parent 1875 98698b69a902
child 1956 a055123339d5
equal deleted inserted replaced
14:7308865f1bd2 15:888160d60916
    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.