# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1253874162 -7200
# Node ID d8073df341f625e4a519b40e6903ac83539c2f73
# Parent acdd0bd75a55f3844e955aa37a69522457b193a7
Rename ValueIterator to ValueIt in graph maps (#302)
but keep ValueIterator as an alias in CrossRefMap
(only for reverse compatibility).
diff --git a/lemon/maps.h b/lemon/maps.h
a
|
b
|
|
1907 | 1907 | /// and if a key is set to a new value, then stores it in the inverse map. |
1908 | 1908 | /// The graph items can be accessed by their values either using |
1909 | 1909 | /// \c InverseMap or \c operator()(), and the values of the map can be |
1910 | | /// accessed with an STL compatible forward iterator (\c ValueIterator). |
| 1910 | /// accessed with an STL compatible forward iterator (\c ValueIt). |
1911 | 1911 | /// |
1912 | 1912 | /// This map is intended to be used when all associated values are |
1913 | 1913 | /// different (the map is actually invertable) or there are only a few |
… |
… |
|
1961 | 1961 | /// be accessed in the <tt>[beginValue, endValue)</tt> range. |
1962 | 1962 | /// They are considered with multiplicity, so each value is |
1963 | 1963 | /// traversed for each item it is assigned to. |
1964 | | class ValueIterator |
| 1964 | class ValueIt |
1965 | 1965 | : public std::iterator<std::forward_iterator_tag, Value> { |
1966 | 1966 | friend class CrossRefMap; |
1967 | 1967 | private: |
1968 | | ValueIterator(typename Container::const_iterator _it) |
| 1968 | ValueIt(typename Container::const_iterator _it) |
1969 | 1969 | : it(_it) {} |
1970 | 1970 | public: |
1971 | 1971 | |
1972 | 1972 | /// Constructor |
1973 | | ValueIterator() {} |
| 1973 | ValueIt() {} |
1974 | 1974 | |
1975 | 1975 | /// \e |
1976 | | ValueIterator& operator++() { ++it; return *this; } |
| 1976 | ValueIt& operator++() { ++it; return *this; } |
1977 | 1977 | /// \e |
1978 | | ValueIterator operator++(int) { |
1979 | | ValueIterator tmp(*this); |
| 1978 | ValueIt operator++(int) { |
| 1979 | ValueIt tmp(*this); |
1980 | 1980 | operator++(); |
1981 | 1981 | return tmp; |
1982 | 1982 | } |
… |
… |
|
1987 | 1987 | const Value* operator->() const { return &(it->first); } |
1988 | 1988 | |
1989 | 1989 | /// \e |
1990 | | bool operator==(ValueIterator jt) const { return it == jt.it; } |
| 1990 | bool operator==(ValueIt jt) const { return it == jt.it; } |
1991 | 1991 | /// \e |
1992 | | bool operator!=(ValueIterator jt) const { return it != jt.it; } |
| 1992 | bool operator!=(ValueIt jt) const { return it != jt.it; } |
1993 | 1993 | |
1994 | 1994 | private: |
1995 | 1995 | typename Container::const_iterator it; |
1996 | 1996 | }; |
| 1997 | |
| 1998 | /// Alias for \c ValueIt |
| 1999 | typedef ValueIt ValueIterator; |
1997 | 2000 | |
1998 | 2001 | /// \brief Returns an iterator to the first value. |
1999 | 2002 | /// |
… |
… |
|
2001 | 2004 | /// first value of the map. The values of the |
2002 | 2005 | /// map can be accessed in the <tt>[beginValue, endValue)</tt> |
2003 | 2006 | /// range. |
2004 | | ValueIterator beginValue() const { |
2005 | | return ValueIterator(_inv_map.begin()); |
| 2007 | ValueIt beginValue() const { |
| 2008 | return ValueIt(_inv_map.begin()); |
2006 | 2009 | } |
2007 | 2010 | |
2008 | 2011 | /// \brief Returns an iterator after the last value. |
… |
… |
|
2011 | 2014 | /// last value of the map. The values of the |
2012 | 2015 | /// map can be accessed in the <tt>[beginValue, endValue)</tt> |
2013 | 2016 | /// range. |
2014 | | ValueIterator endValue() const { |
2015 | | return ValueIterator(_inv_map.end()); |
| 2017 | ValueIt endValue() const { |
| 2018 | return ValueIt(_inv_map.end()); |
2016 | 2019 | } |
2017 | 2020 | |
2018 | 2021 | /// \brief Sets the value associated with the given key. |
… |
… |
|
3023 | 3026 | /// comparable value for graph items (\c Node, \c Arc or \c Edge). |
3024 | 3027 | /// For each value it is possible to iterate on the keys mapped to |
3025 | 3028 | /// the value (\c ItemIt), and the values of the map can be accessed |
3026 | | /// with an STL compatible forward iterator (\c ValueIterator). |
| 3029 | /// with an STL compatible forward iterator (\c ValueIt). |
3027 | 3030 | /// The map stores a linked list for each value, which contains |
3028 | 3031 | /// the items mapped to the value, and the used values are stored |
3029 | 3032 | /// in balanced binary tree (\c std::map). |
… |
… |
|
3111 | 3114 | /// This iterator is an STL compatible forward |
3112 | 3115 | /// iterator on the values of the map. The values can |
3113 | 3116 | /// be accessed in the <tt>[beginValue, endValue)</tt> range. |
3114 | | class ValueIterator |
| 3117 | class ValueIt |
3115 | 3118 | : public std::iterator<std::forward_iterator_tag, Value> { |
3116 | 3119 | friend class IterableValueMap; |
3117 | 3120 | private: |
3118 | | ValueIterator(typename std::map<Value, Key>::const_iterator _it) |
| 3121 | ValueIt(typename std::map<Value, Key>::const_iterator _it) |
3119 | 3122 | : it(_it) {} |
3120 | 3123 | public: |
3121 | 3124 | |
3122 | 3125 | /// Constructor |
3123 | | ValueIterator() {} |
| 3126 | ValueIt() {} |
3124 | 3127 | |
3125 | 3128 | /// \e |
3126 | | ValueIterator& operator++() { ++it; return *this; } |
| 3129 | ValueIt& operator++() { ++it; return *this; } |
3127 | 3130 | /// \e |
3128 | | ValueIterator operator++(int) { |
3129 | | ValueIterator tmp(*this); |
| 3131 | ValueIt operator++(int) { |
| 3132 | ValueIt tmp(*this); |
3130 | 3133 | operator++(); |
3131 | 3134 | return tmp; |
3132 | 3135 | } |
… |
… |
|
3137 | 3140 | const Value* operator->() const { return &(it->first); } |
3138 | 3141 | |
3139 | 3142 | /// \e |
3140 | | bool operator==(ValueIterator jt) const { return it == jt.it; } |
| 3143 | bool operator==(ValueIt jt) const { return it == jt.it; } |
3141 | 3144 | /// \e |
3142 | | bool operator!=(ValueIterator jt) const { return it != jt.it; } |
| 3145 | bool operator!=(ValueIt jt) const { return it != jt.it; } |
3143 | 3146 | |
3144 | 3147 | private: |
3145 | 3148 | typename std::map<Value, Key>::const_iterator it; |
… |
… |
|
3151 | 3154 | /// first value of the map. The values of the |
3152 | 3155 | /// map can be accessed in the <tt>[beginValue, endValue)</tt> |
3153 | 3156 | /// range. |
3154 | | ValueIterator beginValue() const { |
3155 | | return ValueIterator(_first.begin()); |
| 3157 | ValueIt beginValue() const { |
| 3158 | return ValueIt(_first.begin()); |
3156 | 3159 | } |
3157 | 3160 | |
3158 | 3161 | /// \brief Returns an iterator after the last value. |
… |
… |
|
3161 | 3164 | /// last value of the map. The values of the |
3162 | 3165 | /// map can be accessed in the <tt>[beginValue, endValue)</tt> |
3163 | 3166 | /// range. |
3164 | | ValueIterator endValue() const { |
3165 | | return ValueIterator(_first.end()); |
| 3167 | ValueIt endValue() const { |
| 3168 | return ValueIt(_first.end()); |
3166 | 3169 | } |
3167 | 3170 | |
3168 | 3171 | /// \brief Set operation of the map. |
… |
… |
|
3280 | 3283 | class SourceMap { |
3281 | 3284 | public: |
3282 | 3285 | |
3283 | | ///\e |
| 3286 | /// The key type (the \c Arc type of the digraph). |
3284 | 3287 | typedef typename GR::Arc Key; |
3285 | | ///\e |
| 3288 | /// The value type (the \c Node type of the digraph). |
3286 | 3289 | typedef typename GR::Node Value; |
3287 | 3290 | |
3288 | 3291 | /// \brief Constructor |
… |
… |
|
3321 | 3324 | class TargetMap { |
3322 | 3325 | public: |
3323 | 3326 | |
3324 | | ///\e |
| 3327 | /// The key type (the \c Arc type of the digraph). |
3325 | 3328 | typedef typename GR::Arc Key; |
3326 | | ///\e |
| 3329 | /// The value type (the \c Node type of the digraph). |
3327 | 3330 | typedef typename GR::Node Value; |
3328 | 3331 | |
3329 | 3332 | /// \brief Constructor |
… |
… |
|
3363 | 3366 | class ForwardMap { |
3364 | 3367 | public: |
3365 | 3368 | |
| 3369 | /// The key type (the \c Edge type of the digraph). |
| 3370 | typedef typename GR::Edge Key; |
| 3371 | /// The value type (the \c Arc type of the digraph). |
3366 | 3372 | typedef typename GR::Arc Value; |
3367 | | typedef typename GR::Edge Key; |
3368 | 3373 | |
3369 | 3374 | /// \brief Constructor |
3370 | 3375 | /// |
… |
… |
|
3403 | 3408 | class BackwardMap { |
3404 | 3409 | public: |
3405 | 3410 | |
| 3411 | /// The key type (the \c Edge type of the digraph). |
| 3412 | typedef typename GR::Edge Key; |
| 3413 | /// The value type (the \c Arc type of the digraph). |
3406 | 3414 | typedef typename GR::Arc Value; |
3407 | | typedef typename GR::Edge Key; |
3408 | 3415 | |
3409 | 3416 | /// \brief Constructor |
3410 | 3417 | /// |
diff --git a/test/maps_test.cc b/test/maps_test.cc
a
|
b
|
|
526 | 526 | |
527 | 527 | Graph gr; |
528 | 528 | typedef CrossRefMap<Graph, Node, char> CRMap; |
529 | | typedef CRMap::ValueIterator ValueIt; |
530 | 529 | CRMap map(gr); |
531 | 530 | |
532 | 531 | Node n0 = gr.addNode(); |
… |
… |
|
546 | 545 | check(map.count('A') == 1 && map.count('B') == 1 && map.count('C') == 1, |
547 | 546 | "Wrong CrossRefMap::count()"); |
548 | 547 | |
549 | | ValueIt it = map.beginValue(); |
| 548 | CRMap::ValueIt it = map.beginValue(); |
550 | 549 | check(*it++ == 'A' && *it++ == 'B' && *it++ == 'C' && |
551 | 550 | it == map.endValue(), "Wrong value iterator"); |
552 | 551 | |
… |
… |
|
742 | 741 | check(static_cast<Item>(it) == INVALID, "Wrong value"); |
743 | 742 | } |
744 | 743 | |
745 | | for (Ivm::ValueIterator vit = map1.beginValue(); |
| 744 | for (Ivm::ValueIt vit = map1.beginValue(); |
746 | 745 | vit != map1.endValue(); ++vit) { |
747 | 746 | check(map1[static_cast<Item>(Ivm::ItemIt(map1, *vit))] == *vit, |
748 | | "Wrong ValueIterator"); |
| 747 | "Wrong ValueIt"); |
749 | 748 | } |
750 | 749 | |
751 | 750 | for (int i = 0; i < num; ++i) { |