# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1213464855 -7200
# Node ID d57ae6f0a335ba6ee61d0f1e4fd7f11460318268
# Parent 579979fad316ae8b42af36ac92b98eec5d3bfb3f
Rename StoreBoolMap to LoggerBoolMap (ticket #34).
diff -r 579979fad316 -r d57ae6f0a335 lemon/kruskal.h
a
|
b
|
|
229 | 229 | typedef typename In::value_type::second_type Value; |
230 | 230 | |
231 | 231 | static Value kruskal(const Graph& graph, const In& in, Out& out) { |
232 | | typedef StoreBoolMap<typename RemoveConst<Out>::type> Map; |
| 232 | typedef LoggerBoolMap<typename RemoveConst<Out>::type> Map; |
233 | 233 | Map map(out); |
234 | 234 | return _kruskal_bits::kruskal(graph, in, map); |
235 | 235 | } |
diff -r 579979fad316 -r d57ae6f0a335 lemon/maps.h
a
|
b
|
|
1700 | 1700 | /// maps and most of them assign \c true at most once for each key. |
1701 | 1701 | /// In these cases it is a natural request to store each \c true |
1702 | 1702 | /// assigned elements (in order of the assignment), which can be |
1703 | | /// easily done with StoreBoolMap. |
| 1703 | /// easily done with LoggerBoolMap. |
1704 | 1704 | /// |
1705 | | /// The simplest way of using this map is through the storeBoolMap() |
| 1705 | /// The simplest way of using this map is through the loggerBoolMap() |
1706 | 1706 | /// function. |
1707 | 1707 | /// |
1708 | 1708 | /// \tparam It The type of the iterator. |
… |
… |
|
1717 | 1717 | template <typename It, |
1718 | 1718 | typename Ke=typename _maps_bits::IteratorTraits<It>::Value> |
1719 | 1719 | #endif |
1720 | | class StoreBoolMap { |
| 1720 | class LoggerBoolMap { |
1721 | 1721 | public: |
1722 | 1722 | typedef It Iterator; |
1723 | 1723 | |
… |
… |
|
1725 | 1725 | typedef bool Value; |
1726 | 1726 | |
1727 | 1727 | /// Constructor |
1728 | | StoreBoolMap(Iterator it) |
| 1728 | LoggerBoolMap(Iterator it) |
1729 | 1729 | : _begin(it), _end(it) {} |
1730 | 1730 | |
1731 | 1731 | /// Gives back the given iterator set for the first key |
… |
… |
|
1750 | 1750 | Iterator _end; |
1751 | 1751 | }; |
1752 | 1752 | |
1753 | | /// Returns a \ref StoreBoolMap class |
| 1753 | /// Returns a \ref LoggerBoolMap class |
1754 | 1754 | |
1755 | | /// This function just returns a \ref StoreBoolMap class. |
| 1755 | /// This function just returns a \ref LoggerBoolMap class. |
1756 | 1756 | /// |
1757 | 1757 | /// The most important usage of it is storing certain nodes or arcs |
1758 | 1758 | /// that were marked \c true by an algorithm. |
… |
… |
|
1760 | 1760 | /// order of Dfs algorithm, as the following examples show. |
1761 | 1761 | /// \code |
1762 | 1762 | /// std::vector<Node> v; |
1763 | | /// dfs(g,s).processedMap(storeBoolMap(std::back_inserter(v))).run(); |
| 1763 | /// dfs(g,s).processedMap(loggerBoolMap(std::back_inserter(v))).run(); |
1764 | 1764 | /// \endcode |
1765 | 1765 | /// \code |
1766 | 1766 | /// std::vector<Node> v(countNodes(g)); |
1767 | | /// dfs(g,s).processedMap(storeBoolMap(v.begin())).run(); |
| 1767 | /// dfs(g,s).processedMap(loggerBoolMap(v.begin())).run(); |
1768 | 1768 | /// \endcode |
1769 | 1769 | /// |
1770 | 1770 | /// \note The container of the iterator must contain enough space |
1771 | 1771 | /// for the elements or the iterator should be an inserter iterator. |
1772 | 1772 | /// |
1773 | | /// \note StoreBoolMap is just \ref concepts::WriteMap "writable", so |
| 1773 | /// \note LoggerBoolMap is just \ref concepts::WriteMap "writable", so |
1774 | 1774 | /// it cannot be used when a readable map is needed, for example as |
1775 | | /// \c ReachedMap for Bfs, Dfs and Dijkstra algorithms. |
| 1775 | /// \c ReachedMap for \ref Bfs, \ref Dfs and \ref Dijkstra algorithms. |
1776 | 1776 | /// |
1777 | | /// \relates StoreBoolMap |
| 1777 | /// \relates LoggerBoolMap |
1778 | 1778 | template<typename Iterator> |
1779 | | inline StoreBoolMap<Iterator> storeBoolMap(Iterator it) { |
1780 | | return StoreBoolMap<Iterator>(it); |
| 1779 | inline LoggerBoolMap<Iterator> loggerBoolMap(Iterator it) { |
| 1780 | return LoggerBoolMap<Iterator>(it); |
1781 | 1781 | } |
1782 | 1782 | |
1783 | 1783 | /// @} |
diff -r 579979fad316 -r d57ae6f0a335 test/maps_test.cc
a
|
b
|
|
305 | 305 | "Something is wrong with EqualMap"); |
306 | 306 | } |
307 | 307 | |
308 | | // StoreBoolMap |
| 308 | // LoggerBoolMap |
309 | 309 | { |
310 | 310 | typedef std::vector<int> vec; |
311 | 311 | vec v1; |
312 | 312 | vec v2(10); |
313 | | StoreBoolMap<std::back_insert_iterator<vec> > map1(std::back_inserter(v1)); |
314 | | StoreBoolMap<vec::iterator> map2(v2.begin()); |
| 313 | LoggerBoolMap<std::back_insert_iterator<vec> > map1(std::back_inserter(v1)); |
| 314 | LoggerBoolMap<vec::iterator> map2(v2.begin()); |
315 | 315 | map1.set(10, false); |
316 | 316 | map1.set(20, true); map2.set(20, true); |
317 | 317 | map1.set(30, false); map2.set(40, false); |
… |
… |
|
319 | 319 | map1.set(60, true); map2.set(60, true); |
320 | 320 | check(v1.size() == 3 && v2.size() == 10 && |
321 | 321 | v1[0]==20 && v1[1]==50 && v1[2]==60 && v2[0]==20 && v2[1]==50 && v2[2]==60, |
322 | | "Something is wrong with StoreBoolMap"); |
| 322 | "Something is wrong with LoggerBoolMap"); |
323 | 323 | |
324 | 324 | int i = 0; |
325 | | for ( StoreBoolMap<vec::iterator>::Iterator it = map2.begin(); |
| 325 | for ( LoggerBoolMap<vec::iterator>::Iterator it = map2.begin(); |
326 | 326 | it != map2.end(); ++it ) |
327 | | check(v1[i++] == *it, "Something is wrong with StoreBoolMap"); |
| 327 | check(v1[i++] == *it, "Something is wrong with LoggerBoolMap"); |
328 | 328 | } |
329 | 329 | |
330 | 330 | return 0; |