Changes in / [315:c175e387da19:312:a4d499904482] in lemon-main
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
demo/graph_to_eps_demo.cc
r313 r220 27 27 /// how to handle parallel egdes, how to change the properties (like 28 28 /// color, shape, size, title etc.) of nodes and arcs individually 29 /// using appropriate graph maps.29 /// using appropriate \ref maps-page "graph maps". 30 30 /// 31 31 /// \include graph_to_eps_demo.cc -
doc/groups.dox
r314 r236 55 55 You are free to use the graph structure that fit your requirements 56 56 the best, most graph algorithms and auxiliary data structures can be used 57 with any graph structure. 58 59 <b>See also:</b> \ref graph_concepts "Graph Structure Concepts". 57 with any graph structures. 60 58 */ 61 59 … … 77 75 This group describes the map structures implemented in LEMON. 78 76 79 LEMON provides several special purpose maps and map adaptorsthat e.g. combine77 LEMON provides several special purpose maps that e.g. combine 80 78 new maps from existing ones. 81 82 <b>See also:</b> \ref map_concepts "Map Concepts".83 79 */ 84 80 … … 91 87 values to the nodes and arcs of graphs. 92 88 */ 89 93 90 94 91 /** … … 108 105 algorithms. If a function type algorithm is called then the function 109 106 type map adaptors can be used comfortable. For example let's see the 110 usage of map adaptors with the \c graphToEps() function.107 usage of map adaptors with the \c digraphToEps() function. 111 108 \code 112 109 Color nodeColor(int deg) { … … 122 119 Digraph::NodeMap<int> degree_map(graph); 123 120 124 graphToEps(graph, "graph.eps")121 digraphToEps(graph, "graph.eps") 125 122 .coords(coords).scaleToA4().undirected() 126 123 .nodeColors(composeMap(functorToMap(nodeColor), degree_map)) … … 128 125 \endcode 129 126 The \c functorToMap() function makes an \c int to \c Color map from the 130 \ c nodeColor() function. The \c composeMap() compose the \cdegree_map127 \e nodeColor() function. The \c composeMap() compose the \e degree_map 131 128 and the previously created map. The composed map is a proper function to 132 129 get the color of each node. … … 177 174 178 175 \sa lemon::concepts::Path 176 179 177 */ 180 178 … … 188 186 */ 189 187 188 190 189 /** 191 190 @defgroup algs Algorithms … … 203 202 204 203 This group describes the common graph search algorithms like 205 Breadth- First Search (BFS) and Depth-First Search (DFS).206 */ 207 208 /** 209 @defgroup shortest_path Shortest Path Algorithms204 Breadth-first search (Bfs) and Depth-first search (Dfs). 205 */ 206 207 /** 208 @defgroup shortest_path Shortest Path algorithms 210 209 @ingroup algs 211 210 \brief Algorithms for finding shortest paths. … … 215 214 216 215 /** 217 @defgroup max_flow Maximum Flow Algorithms216 @defgroup max_flow Maximum Flow algorithms 218 217 @ingroup algs 219 218 \brief Algorithms for finding maximum flows. … … 243 242 provides functions to query the minimum cut, which is the dual linear 244 243 programming problem of the maximum flow. 245 */ 246 247 /** 248 @defgroup min_cost_flow Minimum Cost Flow Algorithms 244 245 */ 246 247 /** 248 @defgroup min_cost_flow Minimum Cost Flow algorithms 249 249 @ingroup algs 250 250 … … 256 256 257 257 /** 258 @defgroup min_cut Minimum Cut Algorithms258 @defgroup min_cut Minimum Cut algorithms 259 259 @ingroup algs 260 260 … … 283 283 If you want to find minimum cut just between two distinict nodes, 284 284 please see the \ref max_flow "Maximum Flow page". 285 */ 286 287 /** 288 @defgroup graph_prop Connectivity and Other Graph Properties 285 286 */ 287 288 /** 289 @defgroup graph_prop Connectivity and other graph properties 289 290 @ingroup algs 290 291 \brief Algorithms for discovering the graph properties … … 298 299 299 300 /** 300 @defgroup planar Planarity Embedding and Drawing301 @defgroup planar Planarity embedding and drawing 301 302 @ingroup algs 302 303 \brief Algorithms for planarity checking, embedding and drawing … … 310 311 311 312 /** 312 @defgroup matching Matching Algorithms313 @defgroup matching Matching algorithms 313 314 @ingroup algs 314 315 \brief Algorithms for finding matchings in graphs and bipartite graphs. … … 348 349 \image html bipartite_matching.png 349 350 \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth 350 */ 351 352 /** 353 @defgroup spantree Minimum Spanning Tree Algorithms 351 352 */ 353 354 /** 355 @defgroup spantree Minimum Spanning Tree algorithms 354 356 @ingroup algs 355 357 \brief Algorithms for finding a minimum cost spanning tree in a graph. … … 359 361 */ 360 362 361 /** 362 @defgroup auxalg Auxiliary Algorithms 363 364 /** 365 @defgroup auxalg Auxiliary algorithms 363 366 @ingroup algs 364 367 \brief Auxiliary algorithms implemented in LEMON. … … 369 372 370 373 /** 371 @defgroup approx Approximation Algorithms 372 @ingroup algs 374 @defgroup approx Approximation algorithms 373 375 \brief Approximation algorithms. 374 376 … … 384 386 This group describes some general optimization frameworks 385 387 implemented in LEMON. 386 */ 387 388 /** 389 @defgroup lp_group Lp and Mip Solvers 388 389 */ 390 391 /** 392 @defgroup lp_group Lp and Mip solvers 390 393 @ingroup gen_opt_group 391 394 \brief Lp and Mip solver interfaces for LEMON. … … 394 397 various LP solvers could be used in the same manner with this 395 398 interface. 396 */ 397 398 /** 399 @defgroup lp_utils Tools for Lp and Mip Solvers 399 400 */ 401 402 /** 403 @defgroup lp_utils Tools for Lp and Mip solvers 400 404 @ingroup lp_group 401 405 \brief Helper tools to the Lp and Mip solvers. … … 438 442 439 443 /** 440 @defgroup timecount Time Measuring and Counting444 @defgroup timecount Time measuring and Counting 441 445 @ingroup misc 442 446 \brief Simple tools for measuring the performance of algorithms. … … 444 448 This group describes simple tools for measuring the performance 445 449 of algorithms. 450 */ 451 452 /** 453 @defgroup graphbits Tools for Graph Implementation 454 @ingroup utils 455 \brief Tools to make it easier to create graphs. 456 457 This group describes the tools that makes it easier to create graphs and 458 the maps that dynamically update with the graph changes. 446 459 */ 447 460 … … 459 472 460 473 This group describes the tools for importing and exporting graphs 461 and graph related data. Now it supports the \ref lgf-format 462 "LEMON Graph Format", the \c DIMACS format and the encapsulated 463 postscript (EPS) format. 474 and graph related data. Now it supports the LEMON format, the 475 \c DIMACS format and the encapsulated postscript (EPS) format. 464 476 */ 465 477 … … 467 479 @defgroup lemon_io LEMON Input-Output 468 480 @ingroup io_group 469 \brief Reading and writing LEMON Graph Format.481 \brief Reading and writing \ref lgf-format "LEMON Graph Format". 470 482 471 483 This group describes methods for reading and writing … … 474 486 475 487 /** 476 @defgroup eps_io Postscript Exporting488 @defgroup eps_io Postscript exporting 477 489 @ingroup io_group 478 490 \brief General \c EPS drawer and graph exporter … … 481 493 graph exporting tools. 482 494 */ 495 483 496 484 497 /** … … 509 522 510 523 - Finally, They can serve as a skeleton of a new implementation of a concept. 511 */ 524 525 */ 526 512 527 513 528 /** … … 520 535 */ 521 536 522 /** 523 @defgroup map_concepts Map Concepts 524 @ingroup concept 525 \brief Skeleton and concept checking classes for maps 526 527 This group describes the skeletons and concept checking classes of maps. 537 /* --- Unused group 538 @defgroup experimental Experimental Structures and Algorithms 539 This group describes some Experimental structures and algorithms. 540 The stuff here is subject to change. 528 541 */ 529 542 -
doc/lgf.dox
r313 r236 79 79 \endcode 80 80 81 The \c \@edges is just a synonym of \c \@arcs. The \@arcs section can81 The \c \@edges is just a synonym of \c \@arcs. The @arcs section can 82 82 also store the edge set of an undirected graph. In such case there is 83 83 a conventional method for store arc maps in the file, if two columns -
doc/mainpage.dox
r314 r307 51 51 If you 52 52 want to see how LEMON works, see 53 some \ref demoprograms "demo programs" .53 some \ref demoprograms "demo programs"! 54 54 55 55 If you know what you are looking for then try to find it under the … … 57 57 section. 58 58 59 If you are a user of the old (0.x) series of LEMON, please check out the 60 \ref migration "Migration Guide" for the backward incompatibilities. 59 If you are a user of the old (0.x) series of LEMON, please check out the \ref migration "Migration Guide" for the backward incompatibilities. 61 60 */ -
doc/migration.dox
r314 r308 58 58 in strings, comments etc. as well as in all identifiers.</b> 59 59 60 \section migration-lgf LGF tools 60 \section migration-lgf LGF tools 61 61 - The \ref lgf-format "LGF file format" has changed, 62 62 <tt>\@nodeset</tt> has changed to <tt>\@nodes</tt>, -
lemon/bits/alteration_notifier.h
r314 r236 25 25 #include <lemon/core.h> 26 26 27 // \ingroup graphbits28 // \file29 // \brief Observer notifier for graph alteration observers.27 ///\ingroup graphbits 28 ///\file 29 ///\brief Observer notifier for graph alteration observers. 30 30 31 31 namespace lemon { 32 32 33 // \ingroup graphbits 34 // 35 // \brief Notifier class to notify observes about alterations in 36 // a container. 37 // 38 // The simple graph's can be refered as two containers, one node container 39 // and one edge container. But they are not standard containers they 40 // does not store values directly they are just key continars for more 41 // value containers which are the node and edge maps. 42 // 43 // The graph's node and edge sets can be changed as we add or erase 44 // nodes and edges in the graph. LEMON would like to handle easily 45 // that the node and edge maps should contain values for all nodes or 46 // edges. If we want to check on every indicing if the map contains 47 // the current indicing key that cause a drawback in the performance 48 // in the library. We use another solution we notify all maps about 49 // an alteration in the graph, which cause only drawback on the 50 // alteration of the graph. 51 // 52 // This class provides an interface to the container. The \e first() and \e 53 // next() member functions make possible to iterate on the keys of the 54 // container. The \e id() function returns an integer id for each key. 55 // The \e maxId() function gives back an upper bound of the ids. 56 // 57 // For the proper functonality of this class, we should notify it 58 // about each alteration in the container. The alterations have four type 59 // as \e add(), \e erase(), \e build() and \e clear(). The \e add() and 60 // \e erase() signals that only one or few items added or erased to or 61 // from the graph. If all items are erased from the graph or from an empty 62 // graph a new graph is builded then it can be signaled with the 63 // clear() and build() members. Important rule that if we erase items 64 // from graph we should first signal the alteration and after that erase 65 // them from the container, on the other way on item addition we should 66 // first extend the container and just after that signal the alteration. 67 // 68 // The alteration can be observed with a class inherited from the 69 // \e ObserverBase nested class. The signals can be handled with 70 // overriding the virtual functions defined in the base class. The 71 // observer base can be attached to the notifier with the 72 // \e attach() member and can be detached with detach() function. The 73 // alteration handlers should not call any function which signals 74 // an other alteration in the same notifier and should not 75 // detach any observer from the notifier. 76 // 77 // Alteration observers try to be exception safe. If an \e add() or 78 // a \e clear() function throws an exception then the remaining 79 // observeres will not be notified and the fulfilled additions will 80 // be rolled back by calling the \e erase() or \e clear() 81 // functions. Thence the \e erase() and \e clear() should not throw 82 // exception. Actullay, it can be throw only \ref ImmediateDetach 83 // exception which detach the observer from the notifier. 84 // 85 // There are some place when the alteration observing is not completly 86 // reliable. If we want to carry out the node degree in the graph 87 // as in the \ref InDegMap and we use the reverseEdge that cause 88 // unreliable functionality. Because the alteration observing signals 89 // only erasing and adding but not the reversing it will stores bad 90 // degrees. The sub graph adaptors cannot signal the alterations because 91 // just a setting in the filter map can modify the graph and this cannot 92 // be watched in any way. 93 // 94 // \param _Container The container which is observed. 95 // \param _Item The item type which is obserbved. 33 /// \ingroup graphbits 34 /// 35 /// \brief Notifier class to notify observes about alterations in 36 /// a container. 37 /// 38 /// The simple graph's can be refered as two containers, one node container 39 /// and one edge container. But they are not standard containers they 40 /// does not store values directly they are just key continars for more 41 /// value containers which are the node and edge maps. 42 /// 43 /// The graph's node and edge sets can be changed as we add or erase 44 /// nodes and edges in the graph. LEMON would like to handle easily 45 /// that the node and edge maps should contain values for all nodes or 46 /// edges. If we want to check on every indicing if the map contains 47 /// the current indicing key that cause a drawback in the performance 48 /// in the library. We use another solution we notify all maps about 49 /// an alteration in the graph, which cause only drawback on the 50 /// alteration of the graph. 51 /// 52 /// This class provides an interface to the container. The \e first() and \e 53 /// next() member functions make possible to iterate on the keys of the 54 /// container. The \e id() function returns an integer id for each key. 55 /// The \e maxId() function gives back an upper bound of the ids. 56 /// 57 /// For the proper functonality of this class, we should notify it 58 /// about each alteration in the container. The alterations have four type 59 /// as \e add(), \e erase(), \e build() and \e clear(). The \e add() and 60 /// \e erase() signals that only one or few items added or erased to or 61 /// from the graph. If all items are erased from the graph or from an empty 62 /// graph a new graph is builded then it can be signaled with the 63 /// clear() and build() members. Important rule that if we erase items 64 /// from graph we should first signal the alteration and after that erase 65 /// them from the container, on the other way on item addition we should 66 /// first extend the container and just after that signal the alteration. 67 /// 68 /// The alteration can be observed with a class inherited from the 69 /// \e ObserverBase nested class. The signals can be handled with 70 /// overriding the virtual functions defined in the base class. The 71 /// observer base can be attached to the notifier with the 72 /// \e attach() member and can be detached with detach() function. The 73 /// alteration handlers should not call any function which signals 74 /// an other alteration in the same notifier and should not 75 /// detach any observer from the notifier. 76 /// 77 /// Alteration observers try to be exception safe. If an \e add() or 78 /// a \e clear() function throws an exception then the remaining 79 /// observeres will not be notified and the fulfilled additions will 80 /// be rolled back by calling the \e erase() or \e clear() 81 /// functions. Thence the \e erase() and \e clear() should not throw 82 /// exception. Actullay, it can be throw only 83 /// \ref AlterationObserver::ImmediateDetach ImmediateDetach 84 /// exception which detach the observer from the notifier. 85 /// 86 /// There are some place when the alteration observing is not completly 87 /// reliable. If we want to carry out the node degree in the graph 88 /// as in the \ref InDegMap and we use the reverseEdge that cause 89 /// unreliable functionality. Because the alteration observing signals 90 /// only erasing and adding but not the reversing it will stores bad 91 /// degrees. The sub graph adaptors cannot signal the alterations because 92 /// just a setting in the filter map can modify the graph and this cannot 93 /// be watched in any way. 94 /// 95 /// \param _Container The container which is observed. 96 /// \param _Item The item type which is obserbved. 96 97 97 98 template <typename _Container, typename _Item> … … 104 105 typedef _Item Item; 105 106 106 // \brief Exception which can be called from \e clear() and107 // \e erase().108 // 109 // From the \e clear() and \e erase() function only this110 // exception is allowed to throw. The exception immediatly111 // detaches the current observer from the notifier. Because the112 // \e clear() and \e erase() should not throw other exceptions113 // it can be used to invalidate the observer.107 /// \brief Exception which can be called from \e clear() and 108 /// \e erase(). 109 /// 110 /// From the \e clear() and \e erase() function only this 111 /// exception is allowed to throw. The exception immediatly 112 /// detaches the current observer from the notifier. Because the 113 /// \e clear() and \e erase() should not throw other exceptions 114 /// it can be used to invalidate the observer. 114 115 struct ImmediateDetach {}; 115 116 116 // \brief ObserverBase is the base class for the observers. 117 // 118 // ObserverBase is the abstract base class for the observers. 119 // It will be notified about an item was inserted into or 120 // erased from the graph. 121 // 122 // The observer interface contains some pure virtual functions 123 // to override. The add() and erase() functions are 124 // to notify the oberver when one item is added or 125 // erased. 126 // 127 // The build() and clear() members are to notify the observer 128 // about the container is built from an empty container or 129 // is cleared to an empty container. 117 /// \brief ObserverBase is the base class for the observers. 118 /// 119 /// ObserverBase is the abstract base class for the observers. 120 /// It will be notified about an item was inserted into or 121 /// erased from the graph. 122 /// 123 /// The observer interface contains some pure virtual functions 124 /// to override. The add() and erase() functions are 125 /// to notify the oberver when one item is added or 126 /// erased. 127 /// 128 /// The build() and clear() members are to notify the observer 129 /// about the container is built from an empty container or 130 /// is cleared to an empty container. 131 130 132 class ObserverBase { 131 133 protected: … … 134 136 friend class AlterationNotifier; 135 137 136 // \brief Default constructor. 137 // 138 // Default constructor for ObserverBase. 138 /// \brief Default constructor. 139 /// 140 /// Default constructor for ObserverBase. 141 /// 139 142 ObserverBase() : _notifier(0) {} 140 143 141 // \brief Constructor which attach the observer into notifier.142 // 143 // Constructor which attach the observer into notifier.144 /// \brief Constructor which attach the observer into notifier. 145 /// 146 /// Constructor which attach the observer into notifier. 144 147 ObserverBase(AlterationNotifier& nf) { 145 148 attach(nf); 146 149 } 147 150 148 // \brief Constructor which attach the obserever to the same notifier.149 // 150 // Constructor which attach the obserever to the same notifier as151 // the other observer is attached to.151 /// \brief Constructor which attach the obserever to the same notifier. 152 /// 153 /// Constructor which attach the obserever to the same notifier as 154 /// the other observer is attached to. 152 155 ObserverBase(const ObserverBase& copy) { 153 156 if (copy.attached()) { … … 156 159 } 157 160 158 // \brief Destructor161 /// \brief Destructor 159 162 virtual ~ObserverBase() { 160 163 if (attached()) { … … 163 166 } 164 167 165 // \brief Attaches the observer into an AlterationNotifier. 166 // 167 // This member attaches the observer into an AlterationNotifier. 168 /// \brief Attaches the observer into an AlterationNotifier. 169 /// 170 /// This member attaches the observer into an AlterationNotifier. 171 /// 168 172 void attach(AlterationNotifier& nf) { 169 173 nf.attach(*this); 170 174 } 171 175 172 // \brief Detaches the observer into an AlterationNotifier. 173 // 174 // This member detaches the observer from an AlterationNotifier. 176 /// \brief Detaches the observer into an AlterationNotifier. 177 /// 178 /// This member detaches the observer from an AlterationNotifier. 179 /// 175 180 void detach() { 176 181 _notifier->detach(*this); 177 182 } 178 183 179 // \brief Gives back a pointer to the notifier which the map 180 // attached into. 181 // 182 // This function gives back a pointer to the notifier which the map 183 // attached into. 184 /// \brief Gives back a pointer to the notifier which the map 185 /// attached into. 186 /// 187 /// This function gives back a pointer to the notifier which the map 188 /// attached into. 189 /// 184 190 Notifier* notifier() const { return const_cast<Notifier*>(_notifier); } 185 191 186 // Gives back true when the observer is attached into a notifier.192 /// Gives back true when the observer is attached into a notifier. 187 193 bool attached() const { return _notifier != 0; } 188 194 … … 196 202 typename std::list<ObserverBase*>::iterator _index; 197 203 198 // \brief The member function to notificate the observer about an199 // item is added to the container.200 // 201 // The add() member function notificates the observer about an item202 // is added to the container. It have to be overrided in the203 // subclasses.204 /// \brief The member function to notificate the observer about an 205 /// item is added to the container. 206 /// 207 /// The add() member function notificates the observer about an item 208 /// is added to the container. It have to be overrided in the 209 /// subclasses. 204 210 virtual void add(const Item&) = 0; 205 211 206 // \brief The member function to notificate the observer about207 // more item is added to the container.208 // 209 // The add() member function notificates the observer about more item210 // is added to the container. It have to be overrided in the211 // subclasses.212 /// \brief The member function to notificate the observer about 213 /// more item is added to the container. 214 /// 215 /// The add() member function notificates the observer about more item 216 /// is added to the container. It have to be overrided in the 217 /// subclasses. 212 218 virtual void add(const std::vector<Item>& items) = 0; 213 219 214 // \brief The member function to notificate the observer about an215 // item is erased from the container.216 // 217 // The erase() member function notificates the observer about an218 // item is erased from the container. It have to be overrided in219 // the subclasses.220 /// \brief The member function to notificate the observer about an 221 /// item is erased from the container. 222 /// 223 /// The erase() member function notificates the observer about an 224 /// item is erased from the container. It have to be overrided in 225 /// the subclasses. 220 226 virtual void erase(const Item&) = 0; 221 227 222 // \brief The member function to notificate the observer about223 // more item is erased from the container.224 // 225 // The erase() member function notificates the observer about more item226 // is erased from the container. It have to be overrided in the227 // subclasses.228 /// \brief The member function to notificate the observer about 229 /// more item is erased from the container. 230 /// 231 /// The erase() member function notificates the observer about more item 232 /// is erased from the container. It have to be overrided in the 233 /// subclasses. 228 234 virtual void erase(const std::vector<Item>& items) = 0; 229 235 230 // \brief The member function to notificate the observer about the 231 // container is built. 232 // 233 // The build() member function notificates the observer about the 234 // container is built from an empty container. It have to be 235 // overrided in the subclasses. 236 /// \brief The member function to notificate the observer about the 237 /// container is built. 238 /// 239 /// The build() member function notificates the observer about the 240 /// container is built from an empty container. It have to be 241 /// overrided in the subclasses. 242 236 243 virtual void build() = 0; 237 244 238 // \brief The member function to notificate the observer about all239 // items are erased from the container.240 // 241 // The clear() member function notificates the observer about all242 // items are erased from the container. It have to be overrided in243 // the subclasses.245 /// \brief The member function to notificate the observer about all 246 /// items are erased from the container. 247 /// 248 /// The clear() member function notificates the observer about all 249 /// items are erased from the container. It have to be overrided in 250 /// the subclasses. 244 251 virtual void clear() = 0; 245 252 … … 256 263 public: 257 264 258 // \brief Default constructor.259 // 260 // The default constructor of the AlterationNotifier.261 // It creates an empty notifier.265 /// \brief Default constructor. 266 /// 267 /// The default constructor of the AlterationNotifier. 268 /// It creates an empty notifier. 262 269 AlterationNotifier() 263 270 : container(0) {} 264 271 265 // \brief Constructor.266 // 267 // Constructor with the observed container parameter.272 /// \brief Constructor. 273 /// 274 /// Constructor with the observed container parameter. 268 275 AlterationNotifier(const Container& _container) 269 276 : container(&_container) {} 270 277 271 // \brief Copy Constructor of the AlterationNotifier.272 // 273 // Copy constructor of the AlterationNotifier.274 // It creates only an empty notifier because the copiable275 // notifier's observers have to be registered still into that notifier.278 /// \brief Copy Constructor of the AlterationNotifier. 279 /// 280 /// Copy constructor of the AlterationNotifier. 281 /// It creates only an empty notifier because the copiable 282 /// notifier's observers have to be registered still into that notifier. 276 283 AlterationNotifier(const AlterationNotifier& _notifier) 277 284 : container(_notifier.container) {} 278 285 279 // \brief Destructor. 280 // 281 // Destructor of the AlterationNotifier. 286 /// \brief Destructor. 287 /// 288 /// Destructor of the AlterationNotifier. 289 /// 282 290 ~AlterationNotifier() { 283 291 typename Observers::iterator it; … … 287 295 } 288 296 289 // \brief Sets the container.290 // 291 // Sets the container.297 /// \brief Sets the container. 298 /// 299 /// Sets the container. 292 300 void setContainer(const Container& _container) { 293 301 container = &_container; … … 300 308 public: 301 309 302 // \brief First item in the container. 303 // 304 // Returns the first item in the container. It is 305 // for start the iteration on the container. 310 311 312 /// \brief First item in the container. 313 /// 314 /// Returns the first item in the container. It is 315 /// for start the iteration on the container. 306 316 void first(Item& item) const { 307 317 container->first(item); 308 318 } 309 319 310 // \brief Next item in the container.311 // 312 // Returns the next item in the container. It is313 // for iterate on the container.320 /// \brief Next item in the container. 321 /// 322 /// Returns the next item in the container. It is 323 /// for iterate on the container. 314 324 void next(Item& item) const { 315 325 container->next(item); 316 326 } 317 327 318 // \brief Returns the id of the item.319 // 320 // Returns the id of the item provided by the container.328 /// \brief Returns the id of the item. 329 /// 330 /// Returns the id of the item provided by the container. 321 331 int id(const Item& item) const { 322 332 return container->id(item); 323 333 } 324 334 325 // \brief Returns the maximum id of the container.326 // 327 // Returns the maximum id of the container.335 /// \brief Returns the maximum id of the container. 336 /// 337 /// Returns the maximum id of the container. 328 338 int maxId() const { 329 339 return container->maxId(Item()); … … 345 355 public: 346 356 347 // \brief Notifies all the registed observers about an item added to 348 // the container. 349 // 350 // It notifies all the registed observers about an item added to 351 // the container. 357 /// \brief Notifies all the registed observers about an item added to 358 /// the container. 359 /// 360 /// It notifies all the registed observers about an item added to 361 /// the container. 362 /// 352 363 void add(const Item& item) { 353 364 typename Observers::reverse_iterator it; … … 365 376 } 366 377 367 // \brief Notifies all the registed observers about more item added to 368 // the container. 369 // 370 // It notifies all the registed observers about more item added to 371 // the container. 378 /// \brief Notifies all the registed observers about more item added to 379 /// the container. 380 /// 381 /// It notifies all the registed observers about more item added to 382 /// the container. 383 /// 372 384 void add(const std::vector<Item>& items) { 373 385 typename Observers::reverse_iterator it; … … 385 397 } 386 398 387 // \brief Notifies all the registed observers about an item erased from 388 // the container. 389 // 390 // It notifies all the registed observers about an item erased from 391 // the container. 399 /// \brief Notifies all the registed observers about an item erased from 400 /// the container. 401 /// 402 /// It notifies all the registed observers about an item erased from 403 /// the container. 404 /// 392 405 void erase(const Item& item) throw() { 393 406 typename Observers::iterator it = _observers.begin(); … … 404 417 } 405 418 406 // \brief Notifies all the registed observers about more item erased 407 // from the container. 408 // 409 // It notifies all the registed observers about more item erased from 410 // the container. 419 /// \brief Notifies all the registed observers about more item erased 420 /// from the container. 421 /// 422 /// It notifies all the registed observers about more item erased from 423 /// the container. 424 /// 411 425 void erase(const std::vector<Item>& items) { 412 426 typename Observers::iterator it = _observers.begin(); … … 423 437 } 424 438 425 // \brief Notifies all the registed observers about the container is426 // built.427 // 428 // Notifies all the registed observers about the container is built429 // from an empty container.439 /// \brief Notifies all the registed observers about the container is 440 /// built. 441 /// 442 /// Notifies all the registed observers about the container is built 443 /// from an empty container. 430 444 void build() { 431 445 typename Observers::reverse_iterator it; … … 443 457 } 444 458 445 // \brief Notifies all the registed observers about all items are446 // erased.447 // 448 // Notifies all the registed observers about all items are erased449 // from the container.459 /// \brief Notifies all the registed observers about all items are 460 /// erased. 461 /// 462 /// Notifies all the registed observers about all items are erased 463 /// from the container. 450 464 void clear() { 451 465 typename Observers::iterator it = _observers.begin(); -
lemon/bits/array_map.h
r314 r263 27 27 #include <lemon/concepts/maps.h> 28 28 29 // \ingroup graphbits30 // \file31 // \brief Graph map based on the array storage.29 /// \ingroup graphbits 30 /// \file 31 /// \brief Graph map based on the array storage. 32 32 33 33 namespace lemon { 34 34 35 // \ingroup graphbits36 // 37 // \brief Graph map based on the array storage.38 // 39 // The ArrayMap template class is graph map structure what40 // automatically updates the map when a key is added to or erased from41 // the map. This map uses the allocators to implement42 // the container functionality.43 // 44 // The template parameters are the Graph the current Item type and45 // the Value type of the map.35 /// \ingroup graphbits 36 /// 37 /// \brief Graph map based on the array storage. 38 /// 39 /// The ArrayMap template class is graph map structure what 40 /// automatically updates the map when a key is added to or erased from 41 /// the map. This map uses the allocators to implement 42 /// the container functionality. 43 /// 44 /// The template parameters are the Graph the current Item type and 45 /// the Value type of the map. 46 46 template <typename _Graph, typename _Item, typename _Value> 47 47 class ArrayMap 48 48 : public ItemSetTraits<_Graph, _Item>::ItemNotifier::ObserverBase { 49 49 public: 50 // The graph type of the maps.50 /// The graph type of the maps. 51 51 typedef _Graph Graph; 52 // The item type of the map.52 /// The item type of the map. 53 53 typedef _Item Item; 54 // The reference map tag.54 /// The reference map tag. 55 55 typedef True ReferenceMapTag; 56 56 57 // The key type of the maps.57 /// The key type of the maps. 58 58 typedef _Item Key; 59 // The value type of the map.59 /// The value type of the map. 60 60 typedef _Value Value; 61 61 62 // The const reference type of the map.62 /// The const reference type of the map. 63 63 typedef const _Value& ConstReference; 64 // The reference type of the map.64 /// The reference type of the map. 65 65 typedef _Value& Reference; 66 66 67 // The notifier type.67 /// The notifier type. 68 68 typedef typename ItemSetTraits<_Graph, _Item>::ItemNotifier Notifier; 69 69 70 // The MapBase of the Map which imlements the core regisitry function.70 /// The MapBase of the Map which imlements the core regisitry function. 71 71 typedef typename Notifier::ObserverBase Parent; 72 72 … … 76 76 public: 77 77 78 // \brief Graph initialized map constructor.79 // 80 // Graph initialized map constructor.78 /// \brief Graph initialized map constructor. 79 /// 80 /// Graph initialized map constructor. 81 81 explicit ArrayMap(const Graph& graph) { 82 82 Parent::attach(graph.notifier(Item())); … … 90 90 } 91 91 92 // \brief Constructor to use default value to initialize the map.93 // 94 // It constructs a map and initialize all of the the map.92 /// \brief Constructor to use default value to initialize the map. 93 /// 94 /// It constructs a map and initialize all of the the map. 95 95 ArrayMap(const Graph& graph, const Value& value) { 96 96 Parent::attach(graph.notifier(Item())); … … 105 105 106 106 private: 107 // \brief Constructor to copy a map of the same map type.108 // 109 // Constructor to copy a map of the same map type.107 /// \brief Constructor to copy a map of the same map type. 108 /// 109 /// Constructor to copy a map of the same map type. 110 110 ArrayMap(const ArrayMap& copy) : Parent() { 111 111 if (copy.attached()) { … … 123 123 } 124 124 125 // \brief Assign operator.126 // 127 // This operator assigns for each item in the map the128 // value mapped to the same item in the copied map.129 // The parameter map should be indiced with the same130 // itemset because this assign operator does not change131 // the container of the map.125 /// \brief Assign operator. 126 /// 127 /// This operator assigns for each item in the map the 128 /// value mapped to the same item in the copied map. 129 /// The parameter map should be indiced with the same 130 /// itemset because this assign operator does not change 131 /// the container of the map. 132 132 ArrayMap& operator=(const ArrayMap& cmap) { 133 133 return operator=<ArrayMap>(cmap); … … 135 135 136 136 137 // \brief Template assign operator.138 // 139 // The given parameter should be conform to the ReadMap140 // concecpt and could be indiced by the current item set of141 // the NodeMap. In this case the value for each item142 // is assigned by the value of the given ReadMap.137 /// \brief Template assign operator. 138 /// 139 /// The given parameter should be conform to the ReadMap 140 /// concecpt and could be indiced by the current item set of 141 /// the NodeMap. In this case the value for each item 142 /// is assigned by the value of the given ReadMap. 143 143 template <typename CMap> 144 144 ArrayMap& operator=(const CMap& cmap) { … … 153 153 154 154 public: 155 // \brief The destructor of the map.156 // 157 // The destructor of the map.155 /// \brief The destructor of the map. 156 /// 157 /// The destructor of the map. 158 158 virtual ~ArrayMap() { 159 159 if (attached()) { … … 171 171 public: 172 172 173 // \brief The subscript operator.174 // 175 // The subscript operator. The map can be subscripted by the176 // actual keys of the graph.173 /// \brief The subscript operator. 174 /// 175 /// The subscript operator. The map can be subscripted by the 176 /// actual keys of the graph. 177 177 Value& operator[](const Key& key) { 178 178 int id = Parent::notifier()->id(key); … … 180 180 } 181 181 182 // \brief The const subscript operator.183 // 184 // The const subscript operator. The map can be subscripted by the185 // actual keys of the graph.182 /// \brief The const subscript operator. 183 /// 184 /// The const subscript operator. The map can be subscripted by the 185 /// actual keys of the graph. 186 186 const Value& operator[](const Key& key) const { 187 187 int id = Parent::notifier()->id(key); … … 189 189 } 190 190 191 // \brief Setter function of the map.192 // 193 // Setter function of the map. Equivalent with map[key] = val.194 // This is a compatibility feature with the not dereferable maps.191 /// \brief Setter function of the map. 192 /// 193 /// Setter function of the map. Equivalent with map[key] = val. 194 /// This is a compatibility feature with the not dereferable maps. 195 195 void set(const Key& key, const Value& val) { 196 196 (*this)[key] = val; … … 199 199 protected: 200 200 201 // \brief Adds a new key to the map.202 // 203 // It adds a new key to the map. It called by the observer notifier204 // and it overrides the add() member function of the observer base.201 /// \brief Adds a new key to the map. 202 /// 203 /// It adds a new key to the map. It called by the observer notifier 204 /// and it overrides the add() member function of the observer base. 205 205 virtual void add(const Key& key) { 206 206 Notifier* nf = Parent::notifier(); … … 227 227 } 228 228 229 // \brief Adds more new keys to the map.230 // 231 // It adds more new keys to the map. It called by the observer notifier232 // and it overrides the add() member function of the observer base.229 /// \brief Adds more new keys to the map. 230 /// 231 /// It adds more new keys to the map. It called by the observer notifier 232 /// and it overrides the add() member function of the observer base. 233 233 virtual void add(const std::vector<Key>& keys) { 234 234 Notifier* nf = Parent::notifier(); … … 271 271 } 272 272 273 // \brief Erase a key from the map.274 // 275 // Erase a key from the map. It called by the observer notifier276 // and it overrides the erase() member function of the observer base.273 /// \brief Erase a key from the map. 274 /// 275 /// Erase a key from the map. It called by the observer notifier 276 /// and it overrides the erase() member function of the observer base. 277 277 virtual void erase(const Key& key) { 278 278 int id = Parent::notifier()->id(key); … … 280 280 } 281 281 282 // \brief Erase more keys from the map.283 // 284 // Erase more keys from the map. It called by the observer notifier285 // and it overrides the erase() member function of the observer base.282 /// \brief Erase more keys from the map. 283 /// 284 /// Erase more keys from the map. It called by the observer notifier 285 /// and it overrides the erase() member function of the observer base. 286 286 virtual void erase(const std::vector<Key>& keys) { 287 287 for (int i = 0; i < int(keys.size()); ++i) { … … 291 291 } 292 292 293 // \brief Buildes the map.294 // 295 // It buildes the map. It called by the observer notifier296 // and it overrides the build() member function of the observer base.293 /// \brief Buildes the map. 294 /// 295 /// It buildes the map. It called by the observer notifier 296 /// and it overrides the build() member function of the observer base. 297 297 virtual void build() { 298 298 Notifier* nf = Parent::notifier(); … … 305 305 } 306 306 307 // \brief Clear the map.308 // 309 // It erase all items from the map. It called by the observer notifier310 // and it overrides the clear() member function of the observer base.307 /// \brief Clear the map. 308 /// 309 /// It erase all items from the map. It called by the observer notifier 310 /// and it overrides the clear() member function of the observer base. 311 311 virtual void clear() { 312 312 Notifier* nf = Parent::notifier(); -
lemon/bits/base_extender.h
r314 r289 29 29 #include <lemon/concepts/maps.h> 30 30 31 // \ingroup digraphbits32 // \file33 // \brief Extenders for the digraph types31 ///\ingroup digraphbits 32 ///\file 33 ///\brief Extenders for the digraph types 34 34 namespace lemon { 35 35 36 // \ingroup digraphbits37 // 38 // \brief BaseDigraph to BaseGraph extender36 /// \ingroup digraphbits 37 /// 38 /// \brief BaseDigraph to BaseGraph extender 39 39 template <typename Base> 40 40 class UndirDigraphExtender : public Base { … … 75 75 }; 76 76 77 // First node of the edge77 /// First node of the edge 78 78 Node u(const Edge &e) const { 79 79 return Parent::source(e); 80 80 } 81 81 82 // Source of the given arc82 /// Source of the given arc 83 83 Node source(const Arc &e) const { 84 84 return e.forward ? Parent::source(e) : Parent::target(e); 85 85 } 86 86 87 // Second node of the edge87 /// Second node of the edge 88 88 Node v(const Edge &e) const { 89 89 return Parent::target(e); 90 90 } 91 91 92 // Target of the given arc92 /// Target of the given arc 93 93 Node target(const Arc &e) const { 94 94 return e.forward ? Parent::target(e) : Parent::source(e); 95 95 } 96 96 97 // \brief Directed arc from an edge.98 // 99 // Returns a directed arc corresponding to the specified edge.100 // If the given bool is true, the first node of the given edge and101 // the source node of the returned arc are the same.97 /// \brief Directed arc from an edge. 98 /// 99 /// Returns a directed arc corresponding to the specified edge. 100 /// If the given bool is true, the first node of the given edge and 101 /// the source node of the returned arc are the same. 102 102 static Arc direct(const Edge &e, bool d) { 103 103 return Arc(e, d); 104 104 } 105 105 106 // Returns whether the given directed arc has the same orientation107 // as the corresponding edge.106 /// Returns whether the given directed arc has the same orientation 107 /// as the corresponding edge. 108 108 static bool direction(const Arc &a) { return a.forward; } 109 109 -
lemon/bits/bezier.h
r314 r209 20 20 #define LEMON_BEZIER_H 21 21 22 // \ingroup misc23 // \file24 // \brief Classes to compute with Bezier curves.25 // 26 // Up to now this file is used internally by \ref graph_to_eps.h22 ///\ingroup misc 23 ///\file 24 ///\brief Classes to compute with Bezier curves. 25 /// 26 ///Up to now this file is used internally by \ref graph_to_eps.h 27 27 28 28 #include<lemon/dim2.h> -
lemon/bits/default_map.h
r314 r209 20 20 #define LEMON_BITS_DEFAULT_MAP_H 21 21 22 22 23 #include <lemon/bits/array_map.h> 23 24 #include <lemon/bits/vector_map.h> 24 25 //#include <lemon/bits/debug_map.h> 25 26 26 // \ingroup graphbits27 // \file28 // \brief Graph maps that construct and destruct their elements dynamically.27 ///\ingroup graphbits 28 ///\file 29 ///\brief Graph maps that construct and destruct their elements dynamically. 29 30 30 31 namespace lemon { … … 149 150 // #endif 150 151 151 // DefaultMap class152 /// \e 152 153 template <typename _Graph, typename _Item, typename _Value> 153 154 class DefaultMap -
lemon/bits/enable_if.h
r314 r220 36 36 #define LEMON_BITS_ENABLE_IF_H 37 37 38 // \file39 // \brief Miscellaneous basic utilities38 ///\file 39 ///\brief Miscellaneous basic utilities 40 40 41 41 namespace lemon 42 42 { 43 43 44 // Basic type for defining "tags". A "YES" condition for \c enable_if.44 /// Basic type for defining "tags". A "YES" condition for \c enable_if. 45 45 46 // Basic type for defining "tags". A "YES" condition for \c enable_if.47 // 48 // \sa False46 /// Basic type for defining "tags". A "YES" condition for \c enable_if. 47 /// 48 ///\sa False 49 49 struct True { 50 // \e50 ///\e 51 51 static const bool value = true; 52 52 }; 53 53 54 // Basic type for defining "tags". A "NO" condition for \c enable_if.54 /// Basic type for defining "tags". A "NO" condition for \c enable_if. 55 55 56 // Basic type for defining "tags". A "NO" condition for \c enable_if.57 // 58 // \sa True56 /// Basic type for defining "tags". A "NO" condition for \c enable_if. 57 /// 58 ///\sa True 59 59 struct False { 60 // \e60 ///\e 61 61 static const bool value = false; 62 62 }; -
lemon/bits/graph_extender.h
r314 r263 28 28 #include <lemon/concepts/maps.h> 29 29 30 // \ingroup graphbits31 // \file32 // \brief Extenders for the digraph types30 ///\ingroup graphbits 31 ///\file 32 ///\brief Extenders for the digraph types 33 33 namespace lemon { 34 34 35 // \ingroup graphbits36 // 37 // \brief Extender for the Digraphs35 /// \ingroup graphbits 36 /// 37 /// \brief Extender for the Digraphs 38 38 template <typename Base> 39 39 class DigraphExtender : public Base { … … 187 187 }; 188 188 189 // \brief Base node of the iterator190 // 191 // Returns the base node (i.e. the source in this case) of the iterator189 /// \brief Base node of the iterator 190 /// 191 /// Returns the base node (i.e. the source in this case) of the iterator 192 192 Node baseNode(const OutArcIt &arc) const { 193 193 return Parent::source(arc); 194 194 } 195 // \brief Running node of the iterator196 // 197 // Returns the running node (i.e. the target in this case) of the198 // iterator195 /// \brief Running node of the iterator 196 /// 197 /// Returns the running node (i.e. the target in this case) of the 198 /// iterator 199 199 Node runningNode(const OutArcIt &arc) const { 200 200 return Parent::target(arc); 201 201 } 202 202 203 // \brief Base node of the iterator204 // 205 // Returns the base node (i.e. the target in this case) of the iterator203 /// \brief Base node of the iterator 204 /// 205 /// Returns the base node (i.e. the target in this case) of the iterator 206 206 Node baseNode(const InArcIt &arc) const { 207 207 return Parent::target(arc); 208 208 } 209 // \brief Running node of the iterator210 // 211 // Returns the running node (i.e. the source in this case) of the212 // iterator209 /// \brief Running node of the iterator 210 /// 211 /// Returns the running node (i.e. the source in this case) of the 212 /// iterator 213 213 Node runningNode(const InArcIt &arc) const { 214 214 return Parent::source(arc); … … 326 326 }; 327 327 328 // \ingroup _graphbits329 // 330 // \brief Extender for the Graphs328 /// \ingroup _graphbits 329 /// 330 /// \brief Extender for the Graphs 331 331 template <typename Base> 332 332 class GraphExtender : public Base { … … 556 556 }; 557 557 558 // \brief Base node of the iterator559 // 560 // Returns the base node (ie. the source in this case) of the iterator558 /// \brief Base node of the iterator 559 /// 560 /// Returns the base node (ie. the source in this case) of the iterator 561 561 Node baseNode(const OutArcIt &arc) const { 562 562 return Parent::source(static_cast<const Arc&>(arc)); 563 563 } 564 // \brief Running node of the iterator565 // 566 // Returns the running node (ie. the target in this case) of the567 // iterator564 /// \brief Running node of the iterator 565 /// 566 /// Returns the running node (ie. the target in this case) of the 567 /// iterator 568 568 Node runningNode(const OutArcIt &arc) const { 569 569 return Parent::target(static_cast<const Arc&>(arc)); 570 570 } 571 571 572 // \brief Base node of the iterator573 // 574 // Returns the base node (ie. the target in this case) of the iterator572 /// \brief Base node of the iterator 573 /// 574 /// Returns the base node (ie. the target in this case) of the iterator 575 575 Node baseNode(const InArcIt &arc) const { 576 576 return Parent::target(static_cast<const Arc&>(arc)); 577 577 } 578 // \brief Running node of the iterator579 // 580 // Returns the running node (ie. the source in this case) of the581 // iterator578 /// \brief Running node of the iterator 579 /// 580 /// Returns the running node (ie. the source in this case) of the 581 /// iterator 582 582 Node runningNode(const InArcIt &arc) const { 583 583 return Parent::source(static_cast<const Arc&>(arc)); 584 584 } 585 585 586 // Base node of the iterator587 // 588 // Returns the base node of the iterator586 /// Base node of the iterator 587 /// 588 /// Returns the base node of the iterator 589 589 Node baseNode(const IncEdgeIt &edge) const { 590 590 return edge._direction ? u(edge) : v(edge); 591 591 } 592 // Running node of the iterator593 // 594 // Returns the running node of the iterator592 /// Running node of the iterator 593 /// 594 /// Returns the running node of the iterator 595 595 Node runningNode(const IncEdgeIt &edge) const { 596 596 return edge._direction ? v(edge) : u(edge); -
lemon/bits/map_extender.h
r314 r263 27 27 #include <lemon/concepts/maps.h> 28 28 29 // \file30 // \brief Extenders for iterable maps.29 ///\file 30 ///\brief Extenders for iterable maps. 31 31 32 32 namespace lemon { 33 33 34 // \ingroup graphbits35 // 36 // \brief Extender for maps34 /// \ingroup graphbits 35 /// 36 /// \brief Extender for maps 37 37 template <typename _Map> 38 38 class MapExtender : public _Map { … … 172 172 }; 173 173 174 // \ingroup graphbits175 // 176 // \brief Extender for maps which use a subset of the items.174 /// \ingroup graphbits 175 /// 176 /// \brief Extender for maps which use a subset of the items. 177 177 template <typename _Graph, typename _Map> 178 178 class SubMapExtender : public _Map { -
lemon/bits/traits.h
r314 r220 20 20 #define LEMON_BITS_TRAITS_H 21 21 22 // \file23 // \brief Traits for graphs and maps24 // 22 ///\file 23 ///\brief Traits for graphs and maps 24 /// 25 25 26 26 #include <lemon/bits/enable_if.h> -
lemon/bits/vector_map.h
r314 r280 29 29 #include <lemon/concepts/maps.h> 30 30 31 // \ingroup graphbits32 // 33 // \file34 // \brief Vector based graph maps.31 ///\ingroup graphbits 32 /// 33 ///\file 34 ///\brief Vector based graph maps. 35 35 namespace lemon { 36 36 37 // \ingroup graphbits38 // 39 // \brief Graph map based on the std::vector storage.40 // 41 // The VectorMap template class is graph map structure what42 // automatically updates the map when a key is added to or erased from43 // the map. This map type uses the std::vector to store the values.44 // 45 // \tparam _Graph The graph this map is attached to.46 // \tparam _Item The item type of the graph items.47 // \tparam _Value The value type of the map.37 /// \ingroup graphbits 38 /// 39 /// \brief Graph map based on the std::vector storage. 40 /// 41 /// The VectorMap template class is graph map structure what 42 /// automatically updates the map when a key is added to or erased from 43 /// the map. This map type uses the std::vector to store the values. 44 /// 45 /// \tparam _Graph The graph this map is attached to. 46 /// \tparam _Item The item type of the graph items. 47 /// \tparam _Value The value type of the map. 48 48 template <typename _Graph, typename _Item, typename _Value> 49 49 class VectorMap … … 51 51 private: 52 52 53 // The container type of the map.53 /// The container type of the map. 54 54 typedef std::vector<_Value> Container; 55 55 56 56 public: 57 57 58 // The graph type of the map.58 /// The graph type of the map. 59 59 typedef _Graph Graph; 60 // The item type of the map.60 /// The item type of the map. 61 61 typedef _Item Item; 62 // The reference map tag.62 /// The reference map tag. 63 63 typedef True ReferenceMapTag; 64 64 65 // The key type of the map.65 /// The key type of the map. 66 66 typedef _Item Key; 67 // The value type of the map.67 /// The value type of the map. 68 68 typedef _Value Value; 69 69 70 // The notifier type.70 /// The notifier type. 71 71 typedef typename ItemSetTraits<_Graph, _Item>::ItemNotifier Notifier; 72 72 73 // The map type.73 /// The map type. 74 74 typedef VectorMap Map; 75 // The base class of the map.75 /// The base class of the map. 76 76 typedef typename Notifier::ObserverBase Parent; 77 77 78 // The reference type of the map;78 /// The reference type of the map; 79 79 typedef typename Container::reference Reference; 80 // The const reference type of the map;80 /// The const reference type of the map; 81 81 typedef typename Container::const_reference ConstReference; 82 82 83 83 84 // \brief Constructor to attach the new map into the notifier.85 // 86 // It constructs a map and attachs it into the notifier.87 // It adds all the items of the graph to the map.84 /// \brief Constructor to attach the new map into the notifier. 85 /// 86 /// It constructs a map and attachs it into the notifier. 87 /// It adds all the items of the graph to the map. 88 88 VectorMap(const Graph& graph) { 89 89 Parent::attach(graph.notifier(Item())); … … 91 91 } 92 92 93 // \brief Constructor uses given value to initialize the map.94 // 95 // It constructs a map uses a given value to initialize the map.96 // It adds all the items of the graph to the map.93 /// \brief Constructor uses given value to initialize the map. 94 /// 95 /// It constructs a map uses a given value to initialize the map. 96 /// It adds all the items of the graph to the map. 97 97 VectorMap(const Graph& graph, const Value& value) { 98 98 Parent::attach(graph.notifier(Item())); … … 101 101 102 102 private: 103 // \brief Copy constructor104 // 105 // Copy constructor.103 /// \brief Copy constructor 104 /// 105 /// Copy constructor. 106 106 VectorMap(const VectorMap& _copy) : Parent() { 107 107 if (_copy.attached()) { … … 111 111 } 112 112 113 // \brief Assign operator.114 // 115 // This operator assigns for each item in the map the116 // value mapped to the same item in the copied map.117 // The parameter map should be indiced with the same118 // itemset because this assign operator does not change119 // the container of the map.113 /// \brief Assign operator. 114 /// 115 /// This operator assigns for each item in the map the 116 /// value mapped to the same item in the copied map. 117 /// The parameter map should be indiced with the same 118 /// itemset because this assign operator does not change 119 /// the container of the map. 120 120 VectorMap& operator=(const VectorMap& cmap) { 121 121 return operator=<VectorMap>(cmap); … … 123 123 124 124 125 // \brief Template assign operator.126 // 127 // The given parameter should be conform to the ReadMap128 // concecpt and could be indiced by the current item set of129 // the NodeMap. In this case the value for each item130 // is assigned by the value of the given ReadMap.125 /// \brief Template assign operator. 126 /// 127 /// The given parameter should be conform to the ReadMap 128 /// concecpt and could be indiced by the current item set of 129 /// the NodeMap. In this case the value for each item 130 /// is assigned by the value of the given ReadMap. 131 131 template <typename CMap> 132 132 VectorMap& operator=(const CMap& cmap) { … … 142 142 public: 143 143 144 // \brief The subcript operator.145 // 146 // The subscript operator. The map can be subscripted by the147 // actual items of the graph.144 /// \brief The subcript operator. 145 /// 146 /// The subscript operator. The map can be subscripted by the 147 /// actual items of the graph. 148 148 Reference operator[](const Key& key) { 149 149 return container[Parent::notifier()->id(key)]; 150 150 } 151 151 152 // \brief The const subcript operator.153 // 154 // The const subscript operator. The map can be subscripted by the155 // actual items of the graph.152 /// \brief The const subcript operator. 153 /// 154 /// The const subscript operator. The map can be subscripted by the 155 /// actual items of the graph. 156 156 ConstReference operator[](const Key& key) const { 157 157 return container[Parent::notifier()->id(key)]; … … 159 159 160 160 161 // \brief The setter function of the map.162 // 163 // It the same as operator[](key) = value expression.161 /// \brief The setter function of the map. 162 /// 163 /// It the same as operator[](key) = value expression. 164 164 void set(const Key& key, const Value& value) { 165 165 (*this)[key] = value; … … 168 168 protected: 169 169 170 // \brief Adds a new key to the map.171 // 172 // It adds a new key to the map. It called by the observer notifier173 // and it overrides the add() member function of the observer base.170 /// \brief Adds a new key to the map. 171 /// 172 /// It adds a new key to the map. It called by the observer notifier 173 /// and it overrides the add() member function of the observer base. 174 174 virtual void add(const Key& key) { 175 175 int id = Parent::notifier()->id(key); … … 179 179 } 180 180 181 // \brief Adds more new keys to the map.182 // 183 // It adds more new keys to the map. It called by the observer notifier184 // and it overrides the add() member function of the observer base.181 /// \brief Adds more new keys to the map. 182 /// 183 /// It adds more new keys to the map. It called by the observer notifier 184 /// and it overrides the add() member function of the observer base. 185 185 virtual void add(const std::vector<Key>& keys) { 186 186 int max = container.size() - 1; … … 194 194 } 195 195 196 // \brief Erase a key from the map.197 // 198 // Erase a key from the map. It called by the observer notifier199 // and it overrides the erase() member function of the observer base.196 /// \brief Erase a key from the map. 197 /// 198 /// Erase a key from the map. It called by the observer notifier 199 /// and it overrides the erase() member function of the observer base. 200 200 virtual void erase(const Key& key) { 201 201 container[Parent::notifier()->id(key)] = Value(); 202 202 } 203 203 204 // \brief Erase more keys from the map.205 // 206 // Erase more keys from the map. It called by the observer notifier207 // and it overrides the erase() member function of the observer base.204 /// \brief Erase more keys from the map. 205 /// 206 /// Erase more keys from the map. It called by the observer notifier 207 /// and it overrides the erase() member function of the observer base. 208 208 virtual void erase(const std::vector<Key>& keys) { 209 209 for (int i = 0; i < int(keys.size()); ++i) { … … 212 212 } 213 213 214 // \brief Buildes the map.215 // 216 // It buildes the map. It called by the observer notifier217 // and it overrides the build() member function of the observer base.214 /// \brief Buildes the map. 215 /// 216 /// It buildes the map. It called by the observer notifier 217 /// and it overrides the build() member function of the observer base. 218 218 virtual void build() { 219 219 int size = Parent::notifier()->maxId() + 1; … … 222 222 } 223 223 224 // \brief Clear the map.225 // 226 // It erase all items from the map. It called by the observer notifier227 // and it overrides the clear() member function of the observer base.224 /// \brief Clear the map. 225 /// 226 /// It erase all items from the map. It called by the observer notifier 227 /// and it overrides the clear() member function of the observer base. 228 228 virtual void clear() { 229 229 container.clear(); -
lemon/color.h
r313 r209 93 93 extern const Color DARK_CYAN; 94 94 95 ///Map <tt>int</tt>s to different <tt>Color</tt>s95 ///Map <tt>int</tt>s to different \ref Color "Color"s 96 96 97 97 ///This map assigns one of the predefined \ref Color "Color"s to -
lemon/concepts/graph_components.h
r313 r263 983 983 /// 984 984 /// This class describes the common interface of the graph maps 985 /// (NodeMap, ArcMap), that is maps thatcan be used to985 /// (NodeMap, ArcMap), that is \ref maps-page "maps" which can be used to 986 986 /// associate data to graph descriptors (nodes or arcs). 987 987 template <typename _Graph, typename _Item, typename _Value> -
lemon/concepts/maps.h
r314 r220 23 23 #include <lemon/concept_check.h> 24 24 25 ///\ingroup map_concepts25 ///\ingroup concept 26 26 ///\file 27 27 ///\brief The concept of maps. … … 31 31 namespace concepts { 32 32 33 /// \addtogroup map_concepts33 /// \addtogroup concept 34 34 /// @{ 35 35 -
lemon/core.h
r313 r300 1555 1555 ///structure is updated after each graph alteration. Thus although 1556 1556 ///this data structure is theoretically faster than \ref ArcLookUp 1557 ///and \ref AllArcLook Up, it often provides worse performance than1557 ///and \ref AllArcLookup, it often provides worse performance than 1558 1558 ///them. 1559 1559 Arc operator()(Node s, Node t, Arc p = INVALID) const { … … 1700 1700 ///Find an arc between two nodes. 1701 1701 1702 ///Find an arc between two nodes in time <em>O</em>(log<em>d</em>), 1703 /// where<em>d</em> is the number of outgoing arcs of \c s.1702 ///Find an arc between two nodes in time <em>O</em>(log<em>d</em>), where 1703 ///<em>d</em> is the number of outgoing arcs of \c s. 1704 1704 ///\param s The source node. 1705 1705 ///\param t The target node. … … 1818 1818 ///\endcode 1819 1819 /// 1820 ///Finding the first arc take <em>O</em>(log<em>d</em>) time, 1821 /// where <em>d</em> is the number of outgoing arcs of \c s. Thenthe1820 ///Finding the first arc take <em>O</em>(log<em>d</em>) time, where 1821 ///<em>d</em> is the number of outgoing arcs of \c s. Then, the 1822 1822 ///consecutive arcs are found in constant time. 1823 1823 /// -
lemon/dfs.h
r313 r301 836 836 }; 837 837 838 /// Default traits class used by DfsWizard838 /// Default traits class used by \ref DfsWizard 839 839 840 840 /// To make it easier to use Dfs algorithm -
lemon/dijkstra.h
r313 r301 454 454 455 455 /// \brief \ref named-templ-param "Named parameter" for setting 456 ///\ cOperationTraits type456 ///\ref OperationTraits type 457 457 /// 458 458 ///\ref named-templ-param "Named parameter" for setting … … 1039 1039 }; 1040 1040 1041 /// Default traits class used by DijkstraWizard1041 /// Default traits class used by \ref DijkstraWizard 1042 1042 1043 1043 /// To make it easier to use Dijkstra algorithm -
lemon/dim2.h
r314 r253 260 260 261 261 262 /// Bounding box of plain vectors ( points).262 /// Bounding box of plain vectors (\ref Point points). 263 263 264 264 /// A class to calculate or store the bounding box of plain vectors 265 /// (\ref Point "points").265 /// (\ref Point points). 266 266 template<typename T> 267 267 class Box { … … 574 574 } 575 575 576 ///Map of x-coordinates of a <tt>Point</tt>-map 577 576 ///Map of x-coordinates of a \ref Point "Point"-map 577 578 ///\ingroup maps 578 579 ///Map of x-coordinates of a \ref Point "Point"-map. 579 580 /// … … 592 593 }; 593 594 594 ///Returns an XMap class 595 596 ///This function just returns an XMap class. 595 ///Returns an \ref XMap class 596 597 ///This function just returns an \ref XMap class. 598 /// 599 ///\ingroup maps 597 600 ///\relates XMap 598 601 template<class M> … … 608 611 } 609 612 610 ///Constant (read only) version of XMap 611 612 ///Constant (read only) version of XMap. 613 ///Constant (read only) version of \ref XMap 614 615 ///\ingroup maps 616 ///Constant (read only) version of \ref XMap 613 617 /// 614 618 template<class M> … … 625 629 }; 626 630 627 ///Returns a ConstXMap class 628 629 ///This function just returns a ConstXMap class. 631 ///Returns a \ref ConstXMap class 632 633 ///This function just returns a \ref ConstXMap class. 634 /// 635 ///\ingroup maps 630 636 ///\relates ConstXMap 631 637 template<class M> … … 635 641 } 636 642 637 ///Map of y-coordinates of a <tt>Point</tt>-map 638 643 ///Map of y-coordinates of a \ref Point "Point"-map 644 645 ///\ingroup maps 639 646 ///Map of y-coordinates of a \ref Point "Point"-map. 640 647 /// … … 653 660 }; 654 661 655 ///Returns a YMap class 656 657 ///This function just returns a YMap class. 662 ///Returns a \ref YMap class 663 664 ///This function just returns a \ref YMap class. 665 /// 666 ///\ingroup maps 658 667 ///\relates YMap 659 668 template<class M> … … 669 678 } 670 679 671 ///Constant (read only) version of YMap 672 673 ///Constant (read only) version of YMap. 680 ///Constant (read only) version of \ref YMap 681 682 ///\ingroup maps 683 ///Constant (read only) version of \ref YMap 674 684 /// 675 685 template<class M> … … 686 696 }; 687 697 688 ///Returns a ConstYMap class 689 690 ///This function just returns a ConstYMap class. 698 ///Returns a \ref ConstYMap class 699 700 ///This function just returns a \ref ConstYMap class. 701 /// 702 ///\ingroup maps 691 703 ///\relates ConstYMap 692 704 template<class M> … … 697 709 698 710 699 ///\brief Map of the normSquare() of a <tt>Point</tt>-map 711 ///\brief Map of the \ref Point::normSquare() "normSquare()" 712 ///of a \ref Point "Point"-map 700 713 /// 701 714 ///Map of the \ref Point::normSquare() "normSquare()" 702 715 ///of a \ref Point "Point"-map. 716 ///\ingroup maps 703 717 template<class M> 704 718 class NormSquareMap … … 714 728 }; 715 729 716 ///Returns a NormSquareMap class 717 718 ///This function just returns a NormSquareMap class. 730 ///Returns a \ref NormSquareMap class 731 732 ///This function just returns a \ref NormSquareMap class. 733 /// 734 ///\ingroup maps 719 735 ///\relates NormSquareMap 720 736 template<class M> -
lemon/graph_to_eps.h
r313 r291 63 63 } 64 64 65 ///Default traits class of GraphToEps65 ///Default traits class of \ref GraphToEps 66 66 67 67 ///Default traits class of \ref GraphToEps. -
lemon/list_graph.h
r313 r280 414 414 /// 415 415 ///\note The <tt>InArcIt</tt>s referencing the changed arc remain 416 ///valid. However the <tt>ArcIt< /tt>s and <tt>OutArcIt</tt>s are416 ///valid. However the <tt>ArcIt<tt>s and <tt>OutArcIt</tt>s are 417 417 ///invalidated. 418 418 /// -
lemon/maps.h
r314 r301 44 44 class MapBase { 45 45 public: 46 /// \b rief The key type of the map.46 /// \biref The key type of the map. 47 47 typedef K Key; 48 48 /// \brief The value type of the map. … … 1683 1683 1684 1684 } 1685 1686 /// @}1687 1688 /// \addtogroup maps1689 /// @{1690 1685 1691 1686 /// \brief Writable bool map for logging each \c true assigned element … … 1781 1776 } 1782 1777 1783 /// @}1784 1785 /// \addtogroup graph_maps1786 /// @{1787 1788 1778 /// Provides an immutable and unique id for each item in the graph. 1789 1779 … … 1892 1882 /// The value type of the InvertableMap. 1893 1883 typedef typename Map::Value Value; 1884 1885 1894 1886 1895 1887 /// \brief Constructor. … … 2058 2050 } 2059 2051 2052 2053 2060 2054 }; 2061 2055 … … 2273 2267 /// 2274 2268 /// Constructor 2275 /// \param digraph The digraph that the map belongs to.2269 /// \param _digraph The digraph that the map belongs to. 2276 2270 explicit SourceMap(const Digraph& digraph) : _digraph(digraph) {} 2277 2271 … … 2312 2306 /// 2313 2307 /// Constructor 2314 /// \param digraph The digraph that the map belongs to.2308 /// \param _digraph The digraph that the map belongs to. 2315 2309 explicit TargetMap(const Digraph& digraph) : _digraph(digraph) {} 2316 2310 … … 2351 2345 /// 2352 2346 /// Constructor 2353 /// \param graph The graph that the map belongs to.2347 /// \param _graph The graph that the map belongs to. 2354 2348 explicit ForwardMap(const Graph& graph) : _graph(graph) {} 2355 2349 … … 2390 2384 /// 2391 2385 /// Constructor 2392 /// \param graph The graph that the map belongs to.2386 /// \param _graph The graph that the map belongs to. 2393 2387 explicit BackwardMap(const Graph& graph) : _graph(graph) {} 2394 2388 -
lemon/path.h
r313 r236 850 850 int empty() const { return len == 0; } 851 851 852 /// \br iefErase all arcs in the digraph.852 /// \break Erase all arcs in the digraph. 853 853 void clear() { 854 854 len = 0; -
lemon/smart_graph.h
r313 r280 366 366 367 367 ///This constructor immediately makes a snapshot of the digraph. 368 ///\param graphThe digraph we make a snapshot of.368 ///\param _g The digraph we make a snapshot of. 369 369 Snapshot(SmartDigraph &graph) : _graph(&graph) { 370 370 node_num=_graph->nodes.size(); … … 378 378 ///This function can be called more than once. In case of a repeated 379 379 ///call, the previous snapshot gets lost. 380 ///\param graphThe digraph we make the snapshot of.380 ///\param _g The digraph we make the snapshot of. 381 381 void save(SmartDigraph &graph) 382 382 { … … 776 776 777 777 ///This constructor immediately makes a snapshot of the digraph. 778 ///\param g raphThe digraph we make a snapshot of.778 ///\param g The digraph we make a snapshot of. 779 779 Snapshot(SmartGraph &graph) { 780 780 graph.saveSnapshot(*this); … … 787 787 ///This function can be called more than once. In case of a repeated 788 788 ///call, the previous snapshot gets lost. 789 ///\param g raphThe digraph we make the snapshot of.789 ///\param g The digraph we make the snapshot of. 790 790 void save(SmartGraph &graph) 791 791 { -
lemon/time_measure.h
r314 r280 312 312 ///Basically a Timer can be either running or stopped, 313 313 ///but it provides a bit finer control on the execution. 314 ///The \ref lemon::Timer "Timer" also counts the number of315 /// \ref lemon::Timer::start() "start()" executions, and it stops316 /// only after the same amount (or more) \ref lemon::Timer::stop()317 /// "stop()"s. This can be useful e.g. to computethe running time314 ///The \ref Timer also counts the number of \ref start() 315 ///executions, and is stops only after the same amount (or more) 316 ///\ref stop() "stop()"s. This can be useful e.g. to compute 317 ///the running time 318 318 ///of recursive functions. 319 /// 319 320 320 321 ///@{ … … 472 473 }; 473 474 474 ///Same as Timer but prints a report on destruction.475 ///Same as \ref Timer but prints a report on destruction. 475 476 476 477 ///Same as \ref Timer but prints a report on destruction. … … 491 492 std::ostream &_os; 492 493 public: 493 ///Constructor 494 495 ///Constructor. 494 ///\e 495 496 496 ///\param title This text will be printed before the ellapsed time. 497 497 ///\param os The stream to print the report to. 498 498 ///\param run Sets whether the timer should start immediately. 499 499 500 TimeReport(std::string title,std::ostream &os=std::cerr,bool run=true) 500 501 : Timer(run), _title(title), _os(os){} 501 /// Destructor that prints the ellapsed time502 ///\e Prints the ellapsed time on destruction. 502 503 ~TimeReport() 503 504 { … … 506 507 }; 507 508 508 ///'Do nothing' version of TimeReport509 ///'Do nothing' version of \ref TimeReport 509 510 510 511 ///\sa TimeReport
Note: See TracChangeset
for help on using the changeset viewer.