1.1 --- a/doc/groups.dox Mon Jul 04 16:18:11 2005 +0000
1.2 +++ b/doc/groups.dox Mon Jul 04 16:27:54 2005 +0000
1.3 @@ -66,7 +66,7 @@
1.4
1.5 Map adaptors are used to create "implicit" maps from other maps.
1.6
1.7 -Most of them are \ref concept::ReadMap "ReadMap"s. They can
1.8 +Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can
1.9 make arithmetic oprerations between one or two maps (negation, scalig,
1.10 addition, multiplication etc.) or e.g. convert a map to another one
1.11 of different Value type.
2.1 --- a/doc/license.dox Mon Jul 04 16:18:11 2005 +0000
2.2 +++ b/doc/license.dox Mon Jul 04 16:27:54 2005 +0000
2.3 @@ -2,6 +2,6 @@
2.4
2.5 \page license License Terms
2.6
2.7 -\verbinclude ../../LICENSE
2.8 +\verbinclude ../LICENSE
2.9
2.10 */
2.11 \ No newline at end of file
3.1 --- a/doc/named-param.dox Mon Jul 04 16:18:11 2005 +0000
3.2 +++ b/doc/named-param.dox Mon Jul 04 16:27:54 2005 +0000
3.3 @@ -4,13 +4,21 @@
3.4
3.5 \section named-func-param Named "Function" Parameters
3.6
3.7 -C++ makes it possible to use default parameter values when calling a function. In such
3.8 -a case we do not have to give value for parameters, the program will use the default ones.
3.9 -Unfortunately sometimes this is not enough. If we do not want to give values for all the parameters, only
3.10 -for some of them we come across problems, because an arbitrary set of parameters cannot be omitted. On the other hand parameters have a fixed order in the head of the function.
3.11 -C++ can apply the default values only in the back of the order, if we do not give other value for them.
3.12 -So we can not give the function for example the value of the first, and the third parameter, expecting that the program will aplly the default value for the second parameter.
3.13 -However sometimes we would like to use some functinos exactly in this way. With a crafty trick and with some little inconvenience this is possible. We have implemented this little trick as an example below.
3.14 +C++ makes it possible to use default parameter values when calling a
3.15 +function. In such a case we do not have to give value for parameters,
3.16 +the program will use the default ones. Unfortunately sometimes this
3.17 +is not enough. If we do not want to give values for all the
3.18 +parameters, only for some of them we come across problems, because an
3.19 +arbitrary set of parameters cannot be omitted. On the other hand
3.20 +parameters have a fixed order in the head of the function. C++ can
3.21 +apply the default values only in the back of the order, if we do not
3.22 +give other value for them. So we can not give the function for
3.23 +example the value of the first, and the third parameter, expecting
3.24 +that the program will aplly the default value for the second
3.25 +parameter. However sometimes we would like to use some functinos
3.26 +exactly in this way. With a crafty trick and with some little
3.27 +inconvenience this is possible. We have implemented this little trick
3.28 +as an example below.
3.29
3.30 \code
3.31 class named_fn
3.32 @@ -34,22 +42,41 @@
3.33
3.34 The usage is the following.
3.35
3.36 -We have to define a class, let's call it named_fn.
3.37 -Let us assume that we would like to use a parameter, called X. In the named_fn class we have to define an _X attribute, and an X function. The function expects a parameter with the type of _X, and sets the value of _X. After setting the value the function returns the class itself. The class also have to have a function, called for example run(), we have to implement here the original function itself. The constructor of the class have to give all the attributes like _X the default values of them.
3.38 +We have to define a class, let's call it named_fn. Let us assume that
3.39 +we would like to use a parameter, called X. In the named_fn class we
3.40 +have to define an _X attribute, and an X function. The function
3.41 +expects a parameter with the type of _X, and sets the value of
3.42 +_X. After setting the value the function returns the class itself. The
3.43 +class also have to have a function, called for example run(), we have
3.44 +to implement here the original function itself. The constructor of the
3.45 +class have to give all the attributes like _X the default values of
3.46 +them.
3.47
3.48 -If we instantiate this class, the default values will be set for the attributes (originally the parameters), initially. If we call the X function, we get a class with the modified parameter value of X. Therefore we can modify any parameter-value, independent from the order. To run the algorithm we have to call the run() function at the end of the row.
3.49 +If we instantiate this class, the default values will be set for the
3.50 +attributes (originally the parameters), initially. If we call the X
3.51 +function, we get a class with the modified parameter value of
3.52 +X. Therefore we can modify any parameter-value, independent from the
3.53 +order. To run the algorithm we have to call the run() function at the
3.54 +end of the row.
3.55
3.56 Example: named_fn().id(3).val(2).run();
3.57
3.58 \section traits-classes Traits Classes
3.59
3.60 -The procedure above can also be applied when defining classes. In this case the type of the attributes can be changed.
3.61 -Initially we have to define a class with the default attribute types. This is the so called Traits Class. Later on
3.62 -the types of these attributes can be changed, as described below. In our software \ref DijkstraDefaultTraits is an example of how a traits class looks like.
3.63 +The procedure above can also be applied when defining classes. In this
3.64 +case the type of the attributes can be changed. Initially we have to
3.65 +define a class with the default attribute types. This is the so called
3.66 +Traits Class. Later on the types of these attributes can be changed,
3.67 +as described below. In our software \ref lemon::DijkstraDefaultTraits is an
3.68 +example of how a traits class looks like.
3.69
3.70 \section named-templ-param Named Class Template Parameters
3.71
3.72 -If we would like to change the type of an attribute in a class that was instantiated by using a traits class as a template parameter, and the class contains named parameters, we do not have to reinstantiate the class with new traits class. Instead of that, adaptor classes can be used like in the following cases.
3.73 +If we would like to change the type of an attribute in a class that
3.74 +was instantiated by using a traits class as a template parameter, and
3.75 +the class contains named parameters, we do not have to reinstantiate
3.76 +the class with new traits class. Instead of that, adaptor classes can
3.77 +be used like in the following cases.
3.78
3.79 \code
3.80 Dijkstra<>::SetPredNodeMap<NullMap<Node,Node> >
3.81 @@ -62,11 +89,13 @@
3.82 Dijkstra<>::SetDistMap<MyMap>::SetPredMap<NullMap<Node,Edge> >
3.83 \endcode
3.84
3.85 -The result will be an instantiated Dijkstra class, in which the DistMap and the PredMap is modified.
3.86 +The result will be an instantiated Dijkstra class, in which the
3.87 +DistMap and the PredMap is modified.
3.88
3.89 \section named-templ-func-param Named "Function" Template Parameters
3.90
3.91 -If the class has so called wizard functions, the new class with the modified tpye of attributes can be returned
3.92 -by the appropriate wizard function. The usage of these wizard functions is the following:
3.93 +If the class has so called wizard functions, the new class with the
3.94 +modified tpye of attributes can be returned by the appropriate wizard
3.95 +function. The usage of these wizard functions is the following:
3.96
3.97 */
4.1 --- a/lemon/bfs.h Mon Jul 04 16:18:11 2005 +0000
4.2 +++ b/lemon/bfs.h Mon Jul 04 16:27:54 2005 +0000
4.3 @@ -84,9 +84,13 @@
4.4 ///Instantiates a ProcessedMap.
4.5
4.6 ///This function instantiates a \ref ProcessedMap.
4.7 - ///\param G is the graph, to which
4.8 + ///\param g is the graph, to which
4.9 ///we would like to define the \ref ProcessedMap
4.10 +#ifdef DOXYGEN
4.11 + static ProcessedMap *createProcessedMap(const GR &g)
4.12 +#else
4.13 static ProcessedMap *createProcessedMap(const GR &)
4.14 +#endif
4.15 {
4.16 return new ProcessedMap();
4.17 }
4.18 @@ -659,7 +663,7 @@
4.19 ///Copies the shortest path to \c t into \c p
4.20
4.21 ///This function copies the shortest path to \c t into \c p.
4.22 - ///If it \c \t is a source itself or unreachable, then it does not
4.23 + ///If \c t is a source itself or unreachable, then it does not
4.24 ///alter \c p.
4.25 ///\todo Is it the right way to handle unreachable nodes?
4.26 ///\return Returns \c true if a path to \c t was actually copied to \c p,
4.27 @@ -770,9 +774,13 @@
4.28 ///Instantiates a PredMap.
4.29
4.30 ///This function instantiates a \ref PredMap.
4.31 - ///\param G is the graph, to which we would like to define the PredMap.
4.32 + ///\param g is the graph, to which we would like to define the PredMap.
4.33 ///\todo The graph alone may be insufficient to initialize
4.34 +#ifdef DOXYGEN
4.35 + static PredMap *createPredMap(const GR &g)
4.36 +#else
4.37 static PredMap *createPredMap(const GR &)
4.38 +#endif
4.39 {
4.40 return new PredMap();
4.41 }
4.42 @@ -803,9 +811,13 @@
4.43 ///Instantiates a ProcessedMap.
4.44
4.45 ///This function instantiates a \ref ProcessedMap.
4.46 - ///\param G is the graph, to which
4.47 + ///\param g is the graph, to which
4.48 ///we would like to define the \ref ProcessedMap
4.49 +#ifdef DOXYGEN
4.50 + static ProcessedMap *createProcessedMap(const GR &g)
4.51 +#else
4.52 static ProcessedMap *createProcessedMap(const GR &)
4.53 +#endif
4.54 {
4.55 return new ProcessedMap();
4.56 }
4.57 @@ -833,8 +845,12 @@
4.58 ///Instantiates a DistMap.
4.59
4.60 ///This function instantiates a \ref DistMap.
4.61 - ///\param G is the graph, to which we would like to define the \ref DistMap
4.62 + ///\param g is the graph, to which we would like to define the \ref DistMap
4.63 +#ifdef DOXYGEN
4.64 + static DistMap *createDistMap(const GR &g)
4.65 +#else
4.66 static DistMap *createDistMap(const GR &)
4.67 +#endif
4.68 {
4.69 return new DistMap();
4.70 }
5.1 --- a/lemon/dfs.h Mon Jul 04 16:18:11 2005 +0000
5.2 +++ b/lemon/dfs.h Mon Jul 04 16:27:54 2005 +0000
5.3 @@ -84,9 +84,13 @@
5.4 ///Instantiates a ProcessedMap.
5.5
5.6 ///This function instantiates a \ref ProcessedMap.
5.7 - ///\param G is the graph, to which
5.8 + ///\param g is the graph, to which
5.9 ///we would like to define the \ref ProcessedMap
5.10 +#ifdef DOXYGEN
5.11 + static ProcessedMap *createProcessedMap(const GR &g)
5.12 +#else
5.13 static ProcessedMap *createProcessedMap(const GR &)
5.14 +#endif
5.15 {
5.16 return new ProcessedMap();
5.17 }
5.18 @@ -779,9 +783,13 @@
5.19 ///Instantiates a PredMap.
5.20
5.21 ///This function instantiates a \ref PredMap.
5.22 - ///\param G is the graph, to which we would like to define the PredMap.
5.23 + ///\param g is the graph, to which we would like to define the PredMap.
5.24 ///\todo The graph alone may be insufficient to initialize
5.25 +#ifdef DOXYGEN
5.26 + static PredMap *createPredMap(const GR &g)
5.27 +#else
5.28 static PredMap *createPredMap(const GR &)
5.29 +#endif
5.30 {
5.31 return new PredMap();
5.32 }
5.33 @@ -812,9 +820,13 @@
5.34 ///Instantiates a ProcessedMap.
5.35
5.36 ///This function instantiates a \ref ProcessedMap.
5.37 - ///\param G is the graph, to which
5.38 + ///\param g is the graph, to which
5.39 ///we would like to define the \ref ProcessedMap
5.40 +#ifdef DOXYGEN
5.41 + static ProcessedMap *createProcessedMap(const GR &g)
5.42 +#else
5.43 static ProcessedMap *createProcessedMap(const GR &)
5.44 +#endif
5.45 {
5.46 return new ProcessedMap();
5.47 }
5.48 @@ -842,8 +854,12 @@
5.49 ///Instantiates a DistMap.
5.50
5.51 ///This function instantiates a \ref DistMap.
5.52 - ///\param G is the graph, to which we would like to define the \ref DistMap
5.53 + ///\param g is the graph, to which we would like to define the \ref DistMap
5.54 +#ifdef DOXYGEN
5.55 + static DistMap *createDistMap(const GR &g)
5.56 +#else
5.57 static DistMap *createDistMap(const GR &)
5.58 +#endif
5.59 {
5.60 return new DistMap();
5.61 }
6.1 --- a/lemon/dijkstra.h Mon Jul 04 16:18:11 2005 +0000
6.2 +++ b/lemon/dijkstra.h Mon Jul 04 16:27:54 2005 +0000
6.3 @@ -108,9 +108,13 @@
6.4 ///Instantiates a ProcessedMap.
6.5
6.6 ///This function instantiates a \ref ProcessedMap.
6.7 - ///\param G is the graph, to which
6.8 + ///\param g is the graph, to which
6.9 ///we would like to define the \ref ProcessedMap
6.10 +#ifdef DOXYGEN
6.11 + static ProcessedMap *createProcessedMap(const GR &g)
6.12 +#else
6.13 static ProcessedMap *createProcessedMap(const GR &)
6.14 +#endif
6.15 {
6.16 return new ProcessedMap();
6.17 }
6.18 @@ -663,7 +667,7 @@
6.19 ///Copies the shortest path to \c t into \c p
6.20
6.21 ///This function copies the shortest path to \c t into \c p.
6.22 - ///If it \c \t is a source itself or unreachable, then it does not
6.23 + ///If it \c t is a source itself or unreachable, then it does not
6.24 ///alter \c p.
6.25 ///\todo Is it the right way to handle unreachable nodes?
6.26 ///\return Returns \c true if a path to \c t was actually copied to \c p,
6.27 @@ -788,9 +792,13 @@
6.28 ///Instantiates a PredMap.
6.29
6.30 ///This function instantiates a \ref PredMap.
6.31 - ///\param G is the graph, to which we would like to define the PredMap.
6.32 + ///\param g is the graph, to which we would like to define the PredMap.
6.33 ///\todo The graph alone may be insufficient for the initialization
6.34 +#ifdef DOXYGEN
6.35 + static PredMap *createPredMap(const GR &g)
6.36 +#else
6.37 static PredMap *createPredMap(const GR &)
6.38 +#endif
6.39 {
6.40 return new PredMap();
6.41 }
6.42 @@ -806,9 +814,13 @@
6.43 ///Instantiates a ProcessedMap.
6.44
6.45 ///This function instantiates a \ref ProcessedMap.
6.46 - ///\param G is the graph, to which
6.47 + ///\param g is the graph, to which
6.48 ///we would like to define the \ref ProcessedMap
6.49 +#ifdef DOXYGEN
6.50 + static ProcessedMap *createProcessedMap(const GR &g)
6.51 +#else
6.52 static ProcessedMap *createProcessedMap(const GR &)
6.53 +#endif
6.54 {
6.55 return new ProcessedMap();
6.56 }
6.57 @@ -821,8 +833,12 @@
6.58 ///Instantiates a DistMap.
6.59
6.60 ///This function instantiates a \ref DistMap.
6.61 - ///\param G is the graph, to which we would like to define the \ref DistMap
6.62 + ///\param g is the graph, to which we would like to define the \ref DistMap
6.63 +#ifdef DOXYGEN
6.64 + static DistMap *createDistMap(const GR &g)
6.65 +#else
6.66 static DistMap *createDistMap(const GR &)
6.67 +#endif
6.68 {
6.69 return new DistMap();
6.70 }
7.1 --- a/lemon/error.h Mon Jul 04 16:18:11 2005 +0000
7.2 +++ b/lemon/error.h Mon Jul 04 16:27:54 2005 +0000
7.3 @@ -100,7 +100,9 @@
7.4 class ErrorMessage {
7.5 protected:
7.6 ///\e
7.7 - ///\todo The good solution is boost:shared_ptr...
7.8 +
7.9 + ///\todo The good solution is boost::shared_ptr...
7.10 + ///
7.11 mutable
7.12 std::auto_ptr<std::ostringstream> buf;
7.13
8.1 --- a/lemon/graph_adaptor.h Mon Jul 04 16:18:11 2005 +0000
8.2 +++ b/lemon/graph_adaptor.h Mon Jul 04 16:27:54 2005 +0000
8.3 @@ -451,7 +451,7 @@
8.4 only such edges is a shortest one. Thus we have to compute a maximum number
8.5 of edge-disjoint paths between \c s and \c t in the graph which has edge-set
8.6 all the tight edges. The computation will be demonstrated on the following
8.7 - graph, which is read from the dimacs file \ref sub_graph_adaptor_demo.dim.
8.8 + graph, which is read from the dimacs file \c sub_graph_adaptor_demo.dim.
8.9 The full source code is available in \ref sub_graph_adaptor_demo.cc.
8.10 If you are interested in more demo programs, you can use
8.11 \ref dim_to_dot.cc to generate .dot files from dimacs files.
9.1 --- a/lemon/graph_utils.h Mon Jul 04 16:18:11 2005 +0000
9.2 +++ b/lemon/graph_utils.h Mon Jul 04 16:27:54 2005 +0000
9.3 @@ -177,7 +177,7 @@
9.4 /// ...
9.5 /// }
9.6 /// \endcode
9.7 - /// \todo We may want to use the \ref concept::GraphBase "GraphBase"
9.8 + /// \todo We may want to use the "GraphBase"
9.9 /// interface here...
9.10 /// \bug Untested ...
9.11 template <typename Graph>
9.12 @@ -859,10 +859,10 @@
9.13 /// \brief The subscript operator.
9.14 ///
9.15 /// The subscript operator.
9.16 - /// \param edge The edge
9.17 + /// \param e The edge
9.18 /// \return The target of the edge
9.19 - Value operator[](const Key& key) {
9.20 - return graph.target(key);
9.21 + Value operator[](const Key& e) {
9.22 + return graph.target(e);
9.23 }
9.24
9.25 private:
10.1 --- a/lemon/lp_base.h Mon Jul 04 16:18:11 2005 +0000
10.2 +++ b/lemon/lp_base.h Mon Jul 04 16:27:54 2005 +0000
10.3 @@ -399,8 +399,8 @@
10.4 ///Reference to the lower bound.
10.5
10.6 ///\return
10.7 - ///- -\ref INF: the constraint is lower unbounded.
10.8 - ///- -\ref NaN: lower bound has not been set.
10.9 + ///- \ref INF "INF": the constraint is lower unbounded.
10.10 + ///- \ref NaN "NaN": lower bound has not been set.
10.11 ///- finite number: the lower bound
10.12 Value &lowerBound() { return _lb; }
10.13 ///The const version of \ref lowerBound()
10.14 @@ -408,8 +408,8 @@
10.15 ///Reference to the upper bound.
10.16
10.17 ///\return
10.18 - ///- -\ref INF: the constraint is upper unbounded.
10.19 - ///- -\ref NaN: upper bound has not been set.
10.20 + ///- \ref INF "INF": the constraint is upper unbounded.
10.21 + ///- \ref NaN "NaN": upper bound has not been set.
10.22 ///- finite number: the upper bound
10.23 Value &upperBound() { return _ub; }
10.24 ///The const version of \ref upperBound()
11.1 --- a/lemon/maps.h Mon Jul 04 16:18:11 2005 +0000
11.2 +++ b/lemon/maps.h Mon Jul 04 16:27:54 2005 +0000
11.3 @@ -227,15 +227,6 @@
11.4 ///converts the \c Value of a maps to type \c T.
11.5 ///Its \c Value is inherited from \c M.
11.6 ///
11.7 - ///Actually,
11.8 - ///\code
11.9 - /// ConvertMap<X> sh(x,v);
11.10 - ///\endcode
11.11 - ///it is equivalent with
11.12 - ///\code
11.13 - /// ConstMap<X::Key, X::Value> c_tmp(v);
11.14 - /// AddMap<X, ConstMap<X::Key, X::Value> > sh(x,v);
11.15 - ///\endcode
11.16 ///\bug wrong documentation
11.17 template<class M, class T>
11.18 class ConvertMap {
11.19 @@ -252,14 +243,13 @@
11.20 ///Constructor
11.21
11.22 ///Constructor
11.23 - ///\param _m is the undelying map
11.24 - ///\param _v is the convert value
11.25 + ///\param _m is the underlying map
11.26 ConvertMap(const M &_m) : m(_m) {};
11.27
11.28 /// \brief The subscript operator.
11.29 ///
11.30 /// The subscript operator.
11.31 - /// \param edge The edge
11.32 + /// \param k The key
11.33 /// \return The target of the edge
11.34 Value operator[](Key k) const {return m[k];}
11.35 };
11.36 @@ -297,9 +287,6 @@
11.37 typedef typename M1::Value Value;
11.38
11.39 ///Constructor
11.40 -
11.41 - ///\e
11.42 - ///
11.43 AddMap(const M1 &_m1,const M2 &_m2) : m1(_m1), m2(_m2) {};
11.44 Value operator[](Key k) const {return m1[k]+m2[k];}
11.45 };
11.46 @@ -386,9 +373,6 @@
11.47 typedef typename M1::Value Value;
11.48
11.49 ///Constructor
11.50 -
11.51 - ///\e
11.52 - ///
11.53 SubMap(const M1 &_m1,const M2 &_m2) : m1(_m1), m2(_m2) {};
11.54 Value operator[](Key k) const {return m1[k]-m2[k];}
11.55 };
11.56 @@ -426,9 +410,6 @@
11.57 typedef typename M1::Value Value;
11.58
11.59 ///Constructor
11.60 -
11.61 - ///\e
11.62 - ///
11.63 MulMap(const M1 &_m1,const M2 &_m2) : m1(_m1), m2(_m2) {};
11.64 Value operator[](Key k) const {return m1[k]*m2[k];}
11.65 };
11.66 @@ -512,9 +493,6 @@
11.67 typedef typename M1::Value Value;
11.68
11.69 ///Constructor
11.70 -
11.71 - ///\e
11.72 - ///
11.73 DivMap(const M1 &_m1,const M2 &_m2) : m1(_m1), m2(_m2) {};
11.74 Value operator[](Key k) const {return m1[k]/m2[k];}
11.75 };
11.76 @@ -560,9 +538,6 @@
11.77 typedef typename M1::Value Value;
11.78
11.79 ///Constructor
11.80 -
11.81 - ///\e
11.82 - ///
11.83 ComposeMap(const M1 &_m1,const M2 &_m2) : m1(_m1), m2(_m2) {};
11.84 Value operator[](Key k) const {return m1[m2[k]];}
11.85 };
11.86 @@ -615,9 +590,6 @@
11.87 typedef V Value;
11.88
11.89 ///Constructor
11.90 -
11.91 - ///\e
11.92 - ///
11.93 CombineMap(const M1 &_m1,const M2 &_m2,const F &_f)
11.94 : m1(_m1), m2(_m2), f(_f) {};
11.95 Value operator[](Key k) const {return f(m1[k],m2[k]);}
11.96 @@ -666,9 +638,6 @@
11.97 typedef typename M::Value Value;
11.98
11.99 ///Constructor
11.100 -
11.101 - ///\e
11.102 - ///
11.103 NegMap(const M &_m) : m(_m) {};
11.104 Value operator[](Key k) const {return -m[k];}
11.105 };
11.106 @@ -720,9 +689,6 @@
11.107 typedef typename M::Value Value;
11.108
11.109 ///Constructor
11.110 -
11.111 - ///\e
11.112 - ///
11.113 AbsMap(const M &_m) : m(_m) {};
11.114 Value operator[](Key k) const {Value tmp=m[k]; return tmp>=0?tmp:-tmp;}
11.115 };
11.116 @@ -763,9 +729,6 @@
11.117 typedef V Value;
11.118
11.119 ///Constructor
11.120 -
11.121 - ///\e
11.122 - ///
11.123 FunctorMap(const F &_f) : f(_f) {};
11.124 Value operator[](Key k) const {return f(k);}
11.125 };