- Revised "Concepts" group documentation
authoralpar
Tue, 04 Jul 2006 17:49:01 +0000
changeset 211796efb4fa0736
parent 2116 b6a68c15a6a3
child 2118 54350d5c316a
- Revised "Concepts" group documentation
- Other minor doc improvements
doc/groups.dox
lemon/concept/graph.h
lemon/list_graph.h
     1.1 --- a/doc/groups.dox	Fri Jun 30 12:15:45 2006 +0000
     1.2 +++ b/doc/groups.dox	Tue Jul 04 17:49:01 2006 +0000
     1.3 @@ -25,10 +25,10 @@
     1.4  
     1.5  Alteration of standard containers need a very limited number of 
     1.6  operations, these together satisfy the everyday requirements. 
     1.7 -In the case of graph strutures, different operations are needed which do 
     1.8 +In the case of graph structures, different operations are needed which do 
     1.9  not alter the physical graph, but gives another view. If some nodes or 
    1.10  edges have to be hidden or the reverse oriented graph have to be used, then 
    1.11 -this is the case. It also may happen that in a flow implemenation 
    1.12 +this is the case. It also may happen that in a flow implementation 
    1.13  the residual graph can be accessed by another algorithm, or a node-set 
    1.14  is to be shrunk for another algorithm. 
    1.15  LEMON also provides a variety of graphs for these requirements called 
    1.16 @@ -45,9 +45,9 @@
    1.17  @ingroup graphs
    1.18  \brief Graph types between real graphs and graph adaptors.
    1.19  
    1.20 -Graph types between real graphs and graph adaptors. These classes
    1.21 -wrap graphs to give new functionality as the adaptors do it. But the
    1.22 -other way they are not light-weigth structures as the adaptors.
    1.23 +Graph types between real graphs and graph adaptors. These classes wrap
    1.24 +graphs to give new functionality as the adaptors do it. On the other
    1.25 +hand they are not light-weight structures as the adaptors.
    1.26  */
    1.27  
    1.28  /**
    1.29 @@ -77,7 +77,7 @@
    1.30  Map adaptors are used to create "implicit" maps from other maps.
    1.31  
    1.32  Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can
    1.33 -make arithmetic oprerations between one or two maps (negation, scaling,
    1.34 +make arithmetic operations between one or two maps (negation, scaling,
    1.35  addition, multiplication etc.) or e.g. convert a map to another one
    1.36  of different Value type.
    1.37  */
    1.38 @@ -185,10 +185,10 @@
    1.39  /**
    1.40  @defgroup spantree Minimum Cost Spanning Tree Algorithms
    1.41  @ingroup algs
    1.42 -\brief This group containes the algorithms for finding a minimum cost spanning
    1.43 +\brief This group contains the algorithms for finding a minimum cost spanning
    1.44  tree in a graph
    1.45  
    1.46 -This group containes the algorithms for finding a minimum cost spanning
    1.47 +This group contains the algorithms for finding a minimum cost spanning
    1.48  tree in a graph
    1.49  */
    1.50  
    1.51 @@ -232,7 +232,7 @@
    1.52  
    1.53  Here you can find tools for importing and exporting graphs 
    1.54  and graph related data. Now it supports the LEMON format, the
    1.55 -dimacs format and the encapsulated postscript format.
    1.56 +\c DIMACS format and the encapsulated postscript format.
    1.57  */
    1.58  
    1.59  /**
    1.60 @@ -268,9 +268,9 @@
    1.61  /**
    1.62  @defgroup eps_io Postscript exporting
    1.63  @ingroup io_group
    1.64 -\brief General EPS drawer and graph exporter
    1.65 +\brief General \c EPS drawer and graph exporter
    1.66  
    1.67 -This group contains general EPS drawing methods and special
    1.68 +This group contains general \c EPS drawing methods and special
    1.69  graph exporting tools. 
    1.70  */
    1.71  
    1.72 @@ -286,10 +286,26 @@
    1.73  This group describes the data/algorithm skeletons and concept checking
    1.74  classes implemented in LEMON.
    1.75  
    1.76 -One aim of these classes is to make it easier to check if a certain
    1.77 -class or template function is correctly implemented.
    1.78 +The purpose of the classes in this group is fourfold.
    1.79 + 
    1.80 +- These classes contain the documentations of the concepts. In order
    1.81 +  to avoid document multiplications, an implementation of a concept
    1.82 +  simply refers to the corresponding concept class.
    1.83  
    1.84 -The other (sometimes even more important) aim is to document the concepts.
    1.85 +- These classes declare every functions, <tt>typedef<tt>s etc. an
    1.86 +  implementation of the concepts should provide, however completely
    1.87 +  without implementations and real data structures behind the
    1.88 +  interface. On the other hand they should provide nothing else. All
    1.89 +  the algorithms working on a data structure meeting a certain concept
    1.90 +  should compile with these classes. (Though it will not run properly,
    1.91 +  of course.) In this way it is easily to check if an algorithm
    1.92 +  doesn't use any extra feature of a certain implementation.
    1.93 +
    1.94 +- The concept descriptor classes also provide a <em>checker class<em>
    1.95 +  that makes it possible check whether a certain implementation of a
    1.96 +  concept indeed provides all the required features.
    1.97 +
    1.98 +- Finally, They can serve as a skeleton of a new implementation of a concept.
    1.99  
   1.100  */
   1.101  
     2.1 --- a/lemon/concept/graph.h	Fri Jun 30 12:15:45 2006 +0000
     2.2 +++ b/lemon/concept/graph.h	Tue Jul 04 17:49:01 2006 +0000
     2.3 @@ -59,24 +59,15 @@
     2.4      /// \addtogroup graph_concepts
     2.5      /// @{
     2.6  
     2.7 -    /// An empty graph class.
     2.8 -  
     2.9 -    /// This class provides all the common features of a graph structure,
    2.10 -    /// however completely without implementations and real data structures
    2.11 -    /// behind the interface.
    2.12 -    /// All graph algorithms should compile with this class, but it will not
    2.13 -    /// run properly, of course.
    2.14 +    /// The directed graph concept
    2.15 +
    2.16 +    /// This class describes the \ref concept "concept" of the
    2.17 +    /// immutable directed graphs.
    2.18      ///
    2.19 -    /// It can be used for checking the interface compatibility,
    2.20 -    /// or it can serve as a skeleton of a new graph structure.
    2.21 -    /// 
    2.22 -    /// Also, you will find here the full documentation of a certain graph
    2.23 -    /// feature, the documentation of a real graph imlementation
    2.24 -    /// like @ref ListGraph or
    2.25 -    /// @ref SmartGraph will just refer to this structure.
    2.26 +    /// Note that actual graph implementation like @ref ListGraph or
    2.27 +    /// @ref SmartGraph may have several additional functionality.
    2.28      ///
    2.29 -    /// \todo A pages describing the concept of concept description would
    2.30 -    /// be nice.
    2.31 +    /// \sa concept
    2.32      class Graph {
    2.33      public:
    2.34        ///\e
     3.1 --- a/lemon/list_graph.h	Fri Jun 30 12:15:45 2006 +0000
     3.2 +++ b/lemon/list_graph.h	Tue Jul 04 17:49:01 2006 +0000
     3.3 @@ -314,9 +314,9 @@
     3.4  
     3.5    ///A list graph class.
     3.6  
     3.7 -  ///This is a simple and fast erasable graph implementation.
     3.8 +  ///This is a simple and fast graph implementation.
     3.9    ///
    3.10 -  ///It conforms to the \ref concept::Graph "Graph" concept and it
    3.11 +  ///It conforms to the \ref concept::Graph "Graph concept" and it
    3.12    ///also provides several additional useful extra functionalities.
    3.13    ///The most of the member functions and nested classes are
    3.14    ///documented only in the concept class.
    3.15 @@ -717,10 +717,10 @@
    3.16  
    3.17    ///An undirected list graph class.
    3.18  
    3.19 -  ///This is a simple and fast erasable undirected graph implementation.
    3.20 +  ///This is a simple and fast undirected graph implementation.
    3.21    ///
    3.22    ///It conforms to the
    3.23 -  ///\ref concept::UGraph "UGraph" concept.
    3.24 +  ///\ref concept::UGraph "UGraph concept".
    3.25    ///
    3.26    ///\sa concept::UGraph.
    3.27    ///
    3.28 @@ -1145,8 +1145,7 @@
    3.29    /// \brief A smart bipartite undirected graph class.
    3.30    ///
    3.31    /// This is a bipartite undirected graph implementation.
    3.32 -  /// It is conforms to the \ref concept::ErasableBpUGraph "ErasableBpUGraph" 
    3.33 -  /// concept.
    3.34 +  /// It is conforms to the \ref concept::BpUGraph "BpUGraph concept".
    3.35    /// \sa concept::BpUGraph.
    3.36    ///
    3.37    class ListBpUGraph : public ExtendedListBpUGraphBase {};