0
16
0
1
1
5
5
1
1
21
26
5
5
1
1
... | ... |
@@ -25,9 +25,9 @@ |
25 | 25 |
/// <tt>.eps</tt> files demonstrating the capability of \ref |
26 | 26 |
/// graphToEps(), and showing how to draw directed graphs, |
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 |
|
29 |
/// using appropriate graph maps. |
|
30 | 30 |
/// |
31 | 31 |
/// \include graph_to_eps_demo.cc |
32 | 32 |
|
33 | 33 |
#include<lemon/list_graph.h> |
... | ... |
@@ -77,9 +77,9 @@ |
77 | 77 |
1 3 12 |
78 | 78 |
2 3 18 |
79 | 79 |
\endcode |
80 | 80 |
|
81 |
The \c \@edges is just a synonym of \c \@arcs. The @arcs section can |
|
81 |
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 |
84 | 84 |
has the same caption with \c '+' and \c '-' prefix, then these columns |
85 | 85 |
can be regarded as the values of an arc map. |
... | ... |
@@ -78,10 +78,9 @@ |
78 | 78 |
/// a \e clear() function throws an exception then the remaining |
79 | 79 |
/// observeres will not be notified and the fulfilled additions will |
80 | 80 |
/// be rolled back by calling the \e erase() or \e clear() |
81 | 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 |
|
82 |
/// exception. Actullay, it can be throw only \ref ImmediateDetach |
|
84 | 83 |
/// exception which detach the observer from the notifier. |
85 | 84 |
/// |
86 | 85 |
/// There are some place when the alteration observing is not completly |
87 | 86 |
/// reliable. If we want to carry out the node degree in the graph |
... | ... |
@@ -91,9 +91,9 @@ |
91 | 91 |
extern const Color DARK_MAGENTA; |
92 | 92 |
/// Dark cyan color constant |
93 | 93 |
extern const Color DARK_CYAN; |
94 | 94 |
|
95 |
///Map <tt>int</tt>s to different |
|
95 |
///Map <tt>int</tt>s to different <tt>Color</tt>s |
|
96 | 96 |
|
97 | 97 |
///This map assigns one of the predefined \ref Color "Color"s to |
98 | 98 |
///each <tt>int</tt>. It is possible to change the colors as well as |
99 | 99 |
///their number. The integer range is cyclically mapped to the |
... | ... |
@@ -981,9 +981,9 @@ |
981 | 981 |
|
982 | 982 |
/// \brief Class describing the concept of graph maps |
983 | 983 |
/// |
984 | 984 |
/// This class describes the common interface of the graph maps |
985 |
/// (NodeMap, ArcMap), that is |
|
985 |
/// (NodeMap, ArcMap), that is maps that can be used to |
|
986 | 986 |
/// associate data to graph descriptors (nodes or arcs). |
987 | 987 |
template <typename _Graph, typename _Item, typename _Value> |
988 | 988 |
class GraphMap : public ReadWriteMap<_Item, _Value> { |
989 | 989 |
public: |
... | ... |
@@ -1553,9 +1553,9 @@ |
1553 | 1553 |
/// |
1554 | 1554 |
///\note This is a dynamic data structure, therefore the data |
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 |
|
1557 |
///and \ref AllArcLookUp, it often provides worse performance than |
|
1558 | 1558 |
///them. |
1559 | 1559 |
Arc operator()(Node s, Node t, Arc p = INVALID) const { |
1560 | 1560 |
if (p == INVALID) { |
1561 | 1561 |
Arc a = _head[s]; |
... | ... |
@@ -1698,10 +1698,10 @@ |
1698 | 1698 |
} |
1699 | 1699 |
|
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>), where |
|
1703 |
///<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>), |
|
1703 |
///where <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. |
1706 | 1706 |
///\return An arc from \c s to \c t if there exists, |
1707 | 1707 |
///\ref INVALID otherwise. |
... | ... |
@@ -1816,10 +1816,10 @@ |
1816 | 1816 |
///int n = 0; |
1817 | 1817 |
///for(Arc a = ae(u,v); a != INVALID; a=ae(u,v,a)) n++; |
1818 | 1818 |
///\endcode |
1819 | 1819 |
/// |
1820 |
///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 |
|
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. Then the |
|
1822 | 1822 |
///consecutive arcs are found in constant time. |
1823 | 1823 |
/// |
1824 | 1824 |
///\warning If you change the digraph, refresh() must be called before using |
1825 | 1825 |
///this operator. If you change the outgoing arcs of |
... | ... |
@@ -834,9 +834,9 @@ |
834 | 834 |
///It must meet the \ref concepts::Path "Path" concept. |
835 | 835 |
typedef lemon::Path<Digraph> Path; |
836 | 836 |
}; |
837 | 837 |
|
838 |
/// Default traits class used by |
|
838 |
/// Default traits class used by DfsWizard |
|
839 | 839 |
|
840 | 840 |
/// To make it easier to use Dfs algorithm |
841 | 841 |
/// we have created a wizard class. |
842 | 842 |
/// This \ref DfsWizard class needs default traits, |
... | ... |
@@ -452,9 +452,9 @@ |
452 | 452 |
typedef T OperationTraits; |
453 | 453 |
}; |
454 | 454 |
|
455 | 455 |
/// \brief \ref named-templ-param "Named parameter" for setting |
456 |
///\ |
|
456 |
///\c OperationTraits type |
|
457 | 457 |
/// |
458 | 458 |
///\ref named-templ-param "Named parameter" for setting |
459 | 459 |
///\ref OperationTraits type. |
460 | 460 |
template <class T> |
... | ... |
@@ -1037,9 +1037,9 @@ |
1037 | 1037 |
///It must meet the \ref concepts::Path "Path" concept. |
1038 | 1038 |
typedef lemon::Path<Digraph> Path; |
1039 | 1039 |
}; |
1040 | 1040 |
|
1041 |
/// Default traits class used by |
|
1041 |
/// Default traits class used by DijkstraWizard |
|
1042 | 1042 |
|
1043 | 1043 |
/// To make it easier to use Dijkstra algorithm |
1044 | 1044 |
/// we have created a wizard class. |
1045 | 1045 |
/// This \ref DijkstraWizard class needs default traits, |
... | ... |
@@ -258,12 +258,12 @@ |
258 | 258 |
} |
259 | 259 |
|
260 | 260 |
|
261 | 261 |
|
262 |
/// Bounding box of plain vectors ( |
|
262 |
/// Bounding box of plain vectors (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 { |
268 | 268 |
Point<T> _bottom_left, _top_right; |
269 | 269 |
bool _empty; |
... | ... |
@@ -572,13 +572,12 @@ |
572 | 572 |
os << "(" << b.bottomLeft() << "," << b.topRight() << ")"; |
573 | 573 |
return os; |
574 | 574 |
} |
575 | 575 |
|
576 |
///Map of x-coordinates of a |
|
576 |
///Map of x-coordinates of a <tt>Point</tt>-map |
|
577 | 577 |
|
578 |
///Map of x-coordinates of a \ref Point "Point"-map. |
|
578 | 579 |
///\ingroup maps |
579 |
///Map of x-coordinates of a \ref Point "Point"-map. |
|
580 |
/// |
|
581 | 580 |
template<class M> |
582 | 581 |
class XMap |
583 | 582 |
{ |
584 | 583 |
M& _map; |
... | ... |
@@ -591,11 +590,11 @@ |
591 | 590 |
Value operator[](Key k) const {return _map[k].x;} |
592 | 591 |
void set(Key k,Value v) {_map.set(k,typename M::Value(v,_map[k].y));} |
593 | 592 |
}; |
594 | 593 |
|
595 |
///Returns an |
|
594 |
///Returns an XMap class |
|
596 | 595 |
|
597 |
///This function just returns an |
|
596 |
///This function just returns an XMap class. |
|
598 | 597 |
/// |
599 | 598 |
///\ingroup maps |
600 | 599 |
///\relates XMap |
601 | 600 |
template<class M> |
... | ... |
@@ -609,13 +608,12 @@ |
609 | 608 |
{ |
610 | 609 |
return XMap<M>(m); |
611 | 610 |
} |
612 | 611 |
|
613 |
///Constant (read only) version of |
|
612 |
///Constant (read only) version of XMap |
|
614 | 613 |
|
614 |
///Constant (read only) version of XMap. |
|
615 | 615 |
///\ingroup maps |
616 |
///Constant (read only) version of \ref XMap |
|
617 |
/// |
|
618 | 616 |
template<class M> |
619 | 617 |
class ConstXMap |
620 | 618 |
{ |
621 | 619 |
const M& _map; |
... | ... |
@@ -627,11 +625,11 @@ |
627 | 625 |
ConstXMap(const M &map) : _map(map) {} |
628 | 626 |
Value operator[](Key k) const {return _map[k].x;} |
629 | 627 |
}; |
630 | 628 |
|
631 |
///Returns a |
|
629 |
///Returns a ConstXMap class |
|
632 | 630 |
|
633 |
///This function just returns a |
|
631 |
///This function just returns a ConstXMap class. |
|
634 | 632 |
/// |
635 | 633 |
///\ingroup maps |
636 | 634 |
///\relates ConstXMap |
637 | 635 |
template<class M> |
... | ... |
@@ -639,13 +637,12 @@ |
639 | 637 |
{ |
640 | 638 |
return ConstXMap<M>(m); |
641 | 639 |
} |
642 | 640 |
|
643 |
///Map of y-coordinates of a |
|
641 |
///Map of y-coordinates of a <tt>Point</tt>-map |
|
644 | 642 |
|
643 |
///Map of y-coordinates of a \ref Point "Point"-map. |
|
645 | 644 |
///\ingroup maps |
646 |
///Map of y-coordinates of a \ref Point "Point"-map. |
|
647 |
/// |
|
648 | 645 |
template<class M> |
649 | 646 |
class YMap |
650 | 647 |
{ |
651 | 648 |
M& _map; |
... | ... |
@@ -658,11 +655,11 @@ |
658 | 655 |
Value operator[](Key k) const {return _map[k].y;} |
659 | 656 |
void set(Key k,Value v) {_map.set(k,typename M::Value(_map[k].x,v));} |
660 | 657 |
}; |
661 | 658 |
|
662 |
///Returns a |
|
659 |
///Returns a YMap class |
|
663 | 660 |
|
664 |
///This function just returns a |
|
661 |
///This function just returns a YMap class. |
|
665 | 662 |
/// |
666 | 663 |
///\ingroup maps |
667 | 664 |
///\relates YMap |
668 | 665 |
template<class M> |
... | ... |
@@ -676,13 +673,12 @@ |
676 | 673 |
{ |
677 | 674 |
return YMap<M>(m); |
678 | 675 |
} |
679 | 676 |
|
680 |
///Constant (read only) version of |
|
677 |
///Constant (read only) version of YMap |
|
681 | 678 |
|
679 |
///Constant (read only) version of YMap. |
|
682 | 680 |
///\ingroup maps |
683 |
///Constant (read only) version of \ref YMap |
|
684 |
/// |
|
685 | 681 |
template<class M> |
686 | 682 |
class ConstYMap |
687 | 683 |
{ |
688 | 684 |
const M& _map; |
... | ... |
@@ -694,11 +690,11 @@ |
694 | 690 |
ConstYMap(const M &map) : _map(map) {} |
695 | 691 |
Value operator[](Key k) const {return _map[k].y;} |
696 | 692 |
}; |
697 | 693 |
|
698 |
///Returns a |
|
694 |
///Returns a ConstYMap class |
|
699 | 695 |
|
700 |
///This function just returns a |
|
696 |
///This function just returns a ConstYMap class. |
|
701 | 697 |
/// |
702 | 698 |
///\ingroup maps |
703 | 699 |
///\relates ConstYMap |
704 | 700 |
template<class M> |
... | ... |
@@ -707,10 +703,9 @@ |
707 | 703 |
return ConstYMap<M>(m); |
708 | 704 |
} |
709 | 705 |
|
710 | 706 |
|
711 |
///\brief Map of the \ref Point::normSquare() "normSquare()" |
|
712 |
///of a \ref Point "Point"-map |
|
707 |
///\brief Map of the normSquare() of a <tt>Point</tt>-map |
|
713 | 708 |
/// |
714 | 709 |
///Map of the \ref Point::normSquare() "normSquare()" |
715 | 710 |
///of a \ref Point "Point"-map. |
716 | 711 |
///\ingroup maps |
... | ... |
@@ -726,11 +721,11 @@ |
726 | 721 |
NormSquareMap(const M &map) : _map(map) {} |
727 | 722 |
Value operator[](Key k) const {return _map[k].normSquare();} |
728 | 723 |
}; |
729 | 724 |
|
730 |
///Returns a |
|
725 |
///Returns a NormSquareMap class |
|
731 | 726 |
|
732 |
///This function just returns a |
|
727 |
///This function just returns a NormSquareMap class. |
|
733 | 728 |
/// |
734 | 729 |
///\ingroup maps |
735 | 730 |
///\relates NormSquareMap |
736 | 731 |
template<class M> |
... | ... |
@@ -61,9 +61,9 @@ |
61 | 61 |
Value operator[](Key n) { return Value(map[n].x,map[n].y*yscale);} |
62 | 62 |
}; |
63 | 63 |
} |
64 | 64 |
|
65 |
///Default traits class of |
|
65 |
///Default traits class of GraphToEps |
|
66 | 66 |
|
67 | 67 |
///Default traits class of \ref GraphToEps. |
68 | 68 |
/// |
69 | 69 |
///\c G is the type of the underlying graph. |
... | ... |
@@ -412,9 +412,9 @@ |
412 | 412 |
|
413 | 413 |
/// Change the source of \c a to \c n |
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 are |
|
416 |
///valid. However the <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s are |
|
417 | 417 |
///invalidated. |
418 | 418 |
/// |
419 | 419 |
///\warning This functionality cannot be used together with the Snapshot |
420 | 420 |
///feature. |
... | ... |
@@ -42,9 +42,9 @@ |
42 | 42 |
/// required by the map %concepts. |
43 | 43 |
template<typename K, typename V> |
44 | 44 |
class MapBase { |
45 | 45 |
public: |
46 |
/// \ |
|
46 |
/// \brief The key type of the map. |
|
47 | 47 |
typedef K Key; |
48 | 48 |
/// \brief The value type of the map. |
49 | 49 |
/// (The type of objects associated with the keys). |
50 | 50 |
typedef V Value; |
... | ... |
@@ -2265,9 +2265,9 @@ |
2265 | 2265 |
|
2266 | 2266 |
/// \brief Constructor |
2267 | 2267 |
/// |
2268 | 2268 |
/// Constructor |
2269 |
/// \param |
|
2269 |
/// \param digraph The digraph that the map belongs to. |
|
2270 | 2270 |
explicit SourceMap(const Digraph& digraph) : _digraph(digraph) {} |
2271 | 2271 |
|
2272 | 2272 |
/// \brief The subscript operator. |
2273 | 2273 |
/// |
... | ... |
@@ -2304,9 +2304,9 @@ |
2304 | 2304 |
|
2305 | 2305 |
/// \brief Constructor |
2306 | 2306 |
/// |
2307 | 2307 |
/// Constructor |
2308 |
/// \param |
|
2308 |
/// \param digraph The digraph that the map belongs to. |
|
2309 | 2309 |
explicit TargetMap(const Digraph& digraph) : _digraph(digraph) {} |
2310 | 2310 |
|
2311 | 2311 |
/// \brief The subscript operator. |
2312 | 2312 |
/// |
... | ... |
@@ -2343,9 +2343,9 @@ |
2343 | 2343 |
|
2344 | 2344 |
/// \brief Constructor |
2345 | 2345 |
/// |
2346 | 2346 |
/// Constructor |
2347 |
/// \param |
|
2347 |
/// \param graph The graph that the map belongs to. |
|
2348 | 2348 |
explicit ForwardMap(const Graph& graph) : _graph(graph) {} |
2349 | 2349 |
|
2350 | 2350 |
/// \brief The subscript operator. |
2351 | 2351 |
/// |
... | ... |
@@ -2382,9 +2382,9 @@ |
2382 | 2382 |
|
2383 | 2383 |
/// \brief Constructor |
2384 | 2384 |
/// |
2385 | 2385 |
/// Constructor |
2386 |
/// \param |
|
2386 |
/// \param graph The graph that the map belongs to. |
|
2387 | 2387 |
explicit BackwardMap(const Graph& graph) : _graph(graph) {} |
2388 | 2388 |
|
2389 | 2389 |
/// \brief The subscript operator. |
2390 | 2390 |
/// |
... | ... |
@@ -848,9 +848,9 @@ |
848 | 848 |
|
849 | 849 |
/// \brief Return true when the path is empty. |
850 | 850 |
int empty() const { return len == 0; } |
851 | 851 |
|
852 |
/// \ |
|
852 |
/// \brief Erase all arcs in the digraph. |
|
853 | 853 |
void clear() { |
854 | 854 |
len = 0; |
855 | 855 |
if (arcs) delete[] arcs; |
856 | 856 |
arcs = 0; |
... | ... |
@@ -364,9 +364,9 @@ |
364 | 364 |
Snapshot() : _graph(0) {} |
365 | 365 |
///Constructor that immediately makes a snapshot |
366 | 366 |
|
367 | 367 |
///This constructor immediately makes a snapshot of the digraph. |
368 |
///\param |
|
368 |
///\param graph The digraph we make a snapshot of. |
|
369 | 369 |
Snapshot(SmartDigraph &graph) : _graph(&graph) { |
370 | 370 |
node_num=_graph->nodes.size(); |
371 | 371 |
arc_num=_graph->arcs.size(); |
372 | 372 |
} |
... | ... |
@@ -376,9 +376,9 @@ |
376 | 376 |
///Make a snapshot of the digraph. |
377 | 377 |
/// |
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 |
|
380 |
///\param graph The digraph we make the snapshot of. |
|
381 | 381 |
void save(SmartDigraph &graph) |
382 | 382 |
{ |
383 | 383 |
_graph=&graph; |
384 | 384 |
node_num=_graph->nodes.size(); |
... | ... |
@@ -774,9 +774,9 @@ |
774 | 774 |
Snapshot() : _graph(0) {} |
775 | 775 |
///Constructor that immediately makes a snapshot |
776 | 776 |
|
777 | 777 |
///This constructor immediately makes a snapshot of the digraph. |
778 |
///\param |
|
778 |
///\param graph The digraph we make a snapshot of. |
|
779 | 779 |
Snapshot(SmartGraph &graph) { |
780 | 780 |
graph.saveSnapshot(*this); |
781 | 781 |
} |
782 | 782 |
|
... | ... |
@@ -785,9 +785,9 @@ |
785 | 785 |
///Make a snapshot of the graph. |
786 | 786 |
/// |
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 |
|
789 |
///\param graph The digraph we make the snapshot of. |
|
790 | 790 |
void save(SmartGraph &graph) |
791 | 791 |
{ |
792 | 792 |
graph.saveSnapshot(*this); |
793 | 793 |
} |
... | ... |
@@ -310,14 +310,13 @@ |
310 | 310 |
|
311 | 311 |
///\name Control the state of the timer |
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 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 |
|
314 |
///The \ref lemon::Timer "Timer" also counts the number of |
|
315 |
///\ref lemon::Timer::start() "start()" executions, and it stops |
|
316 |
///only after the same amount (or more) \ref lemon::Timer::stop() |
|
317 |
///"stop()"s. This can be useful e.g. to compute the running time |
|
318 | 318 |
///of recursive functions. |
319 |
/// |
|
320 | 319 |
|
321 | 320 |
///@{ |
322 | 321 |
|
323 | 322 |
///Reset and stop the time counters |
... | ... |
@@ -471,9 +470,9 @@ |
471 | 470 |
|
472 | 471 |
///@} |
473 | 472 |
}; |
474 | 473 |
|
475 |
///Same as |
|
474 |
///Same as Timer but prints a report on destruction. |
|
476 | 475 |
|
477 | 476 |
///Same as \ref Timer but prints a report on destruction. |
478 | 477 |
///This example shows its usage. |
479 | 478 |
///\code |
... | ... |
@@ -490,24 +489,24 @@ |
490 | 489 |
{ |
491 | 490 |
std::string _title; |
492 | 491 |
std::ostream &_os; |
493 | 492 |
public: |
494 |
/// |
|
493 |
///Constructor |
|
495 | 494 |
|
495 |
///Constructor. |
|
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 |
|
|
500 | 499 |
TimeReport(std::string title,std::ostream &os=std::cerr,bool run=true) |
501 | 500 |
: Timer(run), _title(title), _os(os){} |
502 |
/// |
|
501 |
///Destructor that prints the ellapsed time |
|
503 | 502 |
~TimeReport() |
504 | 503 |
{ |
505 | 504 |
_os << _title << *this << std::endl; |
506 | 505 |
} |
507 | 506 |
}; |
508 | 507 |
|
509 |
///'Do nothing' version of |
|
508 |
///'Do nothing' version of TimeReport |
|
510 | 509 |
|
511 | 510 |
///\sa TimeReport |
512 | 511 |
/// |
513 | 512 |
class NoTimeReport |
0 comments (0 inline)