# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1258129826 -3600
# Node ID 9ae88e7c04a7188bed92911c7eb2ea90d065d2e6
# Parent b7e3662faf02cb4a397373a6f97f2942a9193b33
Doc improvements for Path and PathDumper concepts (#331)
diff --git a/lemon/concepts/path.h b/lemon/concepts/path.h
a
|
b
|
|
18 | 18 | |
19 | 19 | ///\ingroup concept |
20 | 20 | ///\file |
21 | | ///\brief Classes for representing paths in digraphs. |
| 21 | ///\brief The concept of paths |
22 | 22 | /// |
23 | 23 | |
24 | 24 | #ifndef LEMON_CONCEPTS_PATH_H |
… |
… |
|
38 | 38 | /// |
39 | 39 | /// A skeleton structure for representing directed paths in a |
40 | 40 | /// digraph. |
| 41 | /// In a sense, a path can be treated as a list of arcs. |
| 42 | /// LEMON path types just store this list. As a consequence, they cannot |
| 43 | /// enumerate the nodes on the path directly and a zero length path |
| 44 | /// cannot store its source node. |
| 45 | /// |
| 46 | /// The arcs of a path should be stored in the order of their directions, |
| 47 | /// i.e. the target node of each arc should be the same as the source |
| 48 | /// node of the next arc. This consistency could be checked using |
| 49 | /// \ref checkPath(). |
| 50 | /// The source and target nodes of a (consistent) path can be obtained |
| 51 | /// using \ref pathSource() and \ref pathTarget(). |
| 52 | /// |
| 53 | /// A path can be constructed from another path of any type using the |
| 54 | /// copy constructor or the assignment operator. |
| 55 | /// |
41 | 56 | /// \tparam GR The digraph type in which the path is. |
42 | | /// |
43 | | /// In a sense, the path can be treated as a list of arcs. The |
44 | | /// lemon path type stores just this list. As a consequence it |
45 | | /// cannot enumerate the nodes in the path and the zero length |
46 | | /// paths cannot store the source. |
47 | | /// |
48 | 57 | template <typename GR> |
49 | 58 | class Path { |
50 | 59 | public: |
… |
… |
|
59 | 68 | /// \brief Default constructor |
60 | 69 | Path() {} |
61 | 70 | |
62 | | /// \brief Template constructor |
| 71 | /// \brief Template copy constructor |
63 | 72 | template <typename CPath> |
64 | 73 | Path(const CPath& cpath) {} |
65 | 74 | |
66 | | /// \brief Template assigment |
| 75 | /// \brief Template assigment operator |
67 | 76 | template <typename CPath> |
68 | 77 | Path& operator=(const CPath& cpath) { |
69 | 78 | ignore_unused_variable_warning(cpath); |
70 | 79 | return *this; |
71 | 80 | } |
72 | 81 | |
73 | | /// Length of the path ie. the number of arcs in the path. |
| 82 | /// Length of the path, i.e. the number of arcs on the path. |
74 | 83 | int length() const { return 0;} |
75 | 84 | |
76 | 85 | /// Returns whether the path is empty. |
… |
… |
|
79 | 88 | /// Resets the path to an empty path. |
80 | 89 | void clear() {} |
81 | 90 | |
82 | | /// \brief LEMON style iterator for path arcs |
| 91 | /// \brief LEMON style iterator for enumerating the arcs of a path. |
83 | 92 | /// |
84 | | /// This class is used to iterate on the arcs of the paths. |
| 93 | /// LEMON style iterator class for enumerating the arcs of a path. |
85 | 94 | class ArcIt { |
86 | 95 | public: |
87 | 96 | /// Default constructor |
88 | 97 | ArcIt() {} |
89 | 98 | /// Invalid constructor |
90 | 99 | ArcIt(Invalid) {} |
91 | | /// Constructor for first arc |
| 100 | /// Sets the iterator to the first arc of the given path |
92 | 101 | ArcIt(const Path &) {} |
93 | 102 | |
94 | | /// Conversion to Arc |
| 103 | /// Conversion to \c Arc |
95 | 104 | operator Arc() const { return INVALID; } |
96 | 105 | |
97 | 106 | /// Next arc |
… |
… |
|
192 | 201 | /// \brief A skeleton structure for path dumpers. |
193 | 202 | /// |
194 | 203 | /// A skeleton structure for path dumpers. The path dumpers are |
195 | | /// the generalization of the paths. The path dumpers can |
196 | | /// enumerate the arcs of the path wheter in forward or in |
197 | | /// backward order. In most time these classes are not used |
198 | | /// directly rather it used to assign a dumped class to a real |
199 | | /// path type. |
| 204 | /// the generalization of the paths, they can enumerate the arcs |
| 205 | /// of the path either in forward or in backward order. |
| 206 | /// These classes are typically not used directly, they are rather |
| 207 | /// used to be assigned to a real path type. |
200 | 208 | /// |
201 | 209 | /// The main purpose of this concept is that the shortest path |
202 | | /// algorithms can enumerate easily the arcs in reverse order. |
203 | | /// If we would like to give back a real path from these |
204 | | /// algorithms then we should create a temporarly path object. In |
205 | | /// LEMON such algorithms gives back a path dumper what can |
206 | | /// assigned to a real path and the dumpers can be implemented as |
| 210 | /// algorithms can enumerate the arcs easily in reverse order. |
| 211 | /// In LEMON, such algorithms give back a (reverse) path dumper that |
| 212 | /// can be assigned to a real path. The dumpers can be implemented as |
207 | 213 | /// an adaptor class to the predecessor map. |
208 | 214 | /// |
209 | 215 | /// \tparam GR The digraph type in which the path is. |
210 | | /// |
211 | | /// The paths can be constructed from any path type by a |
212 | | /// template constructor or a template assignment operator. |
213 | 216 | template <typename GR> |
214 | 217 | class PathDumper { |
215 | 218 | public: |
… |
… |
|
219 | 222 | /// Arc type of the underlying digraph. |
220 | 223 | typedef typename Digraph::Arc Arc; |
221 | 224 | |
222 | | /// Length of the path ie. the number of arcs in the path. |
| 225 | /// Length of the path, i.e. the number of arcs on the path. |
223 | 226 | int length() const { return 0;} |
224 | 227 | |
225 | 228 | /// Returns whether the path is empty. |
… |
… |
|
227 | 230 | |
228 | 231 | /// \brief Forward or reverse dumping |
229 | 232 | /// |
230 | | /// If the RevPathTag is defined and true then reverse dumping |
231 | | /// is provided in the path dumper. In this case instead of the |
232 | | /// ArcIt the RevArcIt iterator should be implemented in the |
233 | | /// dumper. |
| 233 | /// If this tag is defined to be \c True, then reverse dumping |
| 234 | /// is provided in the path dumper. In this case, \c RevArcIt |
| 235 | /// iterator should be implemented instead of \c ArcIt iterator. |
234 | 236 | typedef False RevPathTag; |
235 | 237 | |
236 | | /// \brief LEMON style iterator for path arcs |
| 238 | /// \brief LEMON style iterator for enumerating the arcs of a path. |
237 | 239 | /// |
238 | | /// This class is used to iterate on the arcs of the paths. |
| 240 | /// LEMON style iterator class for enumerating the arcs of a path. |
239 | 241 | class ArcIt { |
240 | 242 | public: |
241 | 243 | /// Default constructor |
242 | 244 | ArcIt() {} |
243 | 245 | /// Invalid constructor |
244 | 246 | ArcIt(Invalid) {} |
245 | | /// Constructor for first arc |
| 247 | /// Sets the iterator to the first arc of the given path |
246 | 248 | ArcIt(const PathDumper&) {} |
247 | 249 | |
248 | | /// Conversion to Arc |
| 250 | /// Conversion to \c Arc |
249 | 251 | operator Arc() const { return INVALID; } |
250 | 252 | |
251 | 253 | /// Next arc |
… |
… |
|
260 | 262 | |
261 | 263 | }; |
262 | 264 | |
263 | | /// \brief LEMON style iterator for path arcs |
| 265 | /// \brief LEMON style iterator for enumerating the arcs of a path |
| 266 | /// in reverse direction. |
264 | 267 | /// |
265 | | /// This class is used to iterate on the arcs of the paths in |
266 | | /// reverse direction. |
| 268 | /// LEMON style iterator class for enumerating the arcs of a path |
| 269 | /// in reverse direction. |
267 | 270 | class RevArcIt { |
268 | 271 | public: |
269 | 272 | /// Default constructor |
270 | 273 | RevArcIt() {} |
271 | 274 | /// Invalid constructor |
272 | 275 | RevArcIt(Invalid) {} |
273 | | /// Constructor for first arc |
| 276 | /// Sets the iterator to the last arc of the given path |
274 | 277 | RevArcIt(const PathDumper &) {} |
275 | 278 | |
276 | | /// Conversion to Arc |
| 279 | /// Conversion to \c Arc |
277 | 280 | operator Arc() const { return INVALID; } |
278 | 281 | |
279 | 282 | /// Next arc |