gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Rename ValueIterator to ValueIt in graph maps (#302) but keep ValueIterator as an alias in CrossRefMap (only for reverse compatibility).
0 2 0
default
2 files changed with 42 insertions and 36 deletions:
↑ Collapse diff ↑
Show white space 12 line context
... ...
@@ -1904,13 +1904,13 @@
1904 1904

	
1905 1905
  /// This class provides simple invertable graph maps.
1906 1906
  /// It wraps a standard graph map (\c NodeMap, \c ArcMap or \c EdgeMap)
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
1914 1914
  /// items with the same value.
1915 1915
  /// Otherwise consider to use \c IterableValueMap, which is more 
1916 1916
  /// suitable and more efficient for such cases. It provides iterators
... ...
@@ -1958,64 +1958,67 @@
1958 1958
    ///
1959 1959
    /// This iterator is an STL compatible forward
1960 1960
    /// iterator on the values of the map. The values can
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
      }
1983 1983

	
1984 1984
      /// \e
1985 1985
      const Value& operator*() const { return it->first; }
1986 1986
      /// \e
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 1997

	
1998
    /// Alias for \c ValueIt
1999
    typedef ValueIt ValueIterator;
2000

	
1998 2001
    /// \brief Returns an iterator to the first value.
1999 2002
    ///
2000 2003
    /// Returns an STL compatible iterator to the
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.
2009 2012
    ///
2010 2013
    /// Returns an STL compatible iterator after the
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.
2019 2022
    ///
2020 2023
    /// Sets the value associated with the given key.
2021 2024
    void set(const Key& key, const Value& val) {
... ...
@@ -3020,13 +3023,13 @@
3020 3023
  /// \brief Dynamic iterable map for comparable values.
3021 3024
  ///
3022 3025
  /// This class provides a special graph map type which can store a
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).
3030 3033
  ///
3031 3034
  /// \ref IterableBoolMap and \ref IterableIntMap are similar classes
3032 3035
  /// specialized for \c bool and \c int values, respectively.
... ...
@@ -3108,64 +3111,64 @@
3108 3111

	
3109 3112
    /// \brief Forward iterator for values.
3110 3113
    ///
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
      }
3133 3136

	
3134 3137
      /// \e
3135 3138
      const Value& operator*() const { return it->first; }
3136 3139
      /// \e
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;
3146 3149
    };
3147 3150

	
3148 3151
    /// \brief Returns an iterator to the first value.
3149 3152
    ///
3150 3153
    /// Returns an STL compatible iterator to the
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.
3159 3162
    ///
3160 3163
    /// Returns an STL compatible iterator after the
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.
3169 3172
    ///
3170 3173
    /// Set operation of the map.
3171 3174
    void set(const Key& key, const Value& value) {
... ...
@@ -3277,15 +3280,15 @@
3277 3280
  /// \tparam GR The digraph type.
3278 3281
  /// \see TargetMap
3279 3282
  template <typename GR>
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
3289 3292
    ///
3290 3293
    /// Constructor.
3291 3294
    /// \param digraph The digraph that the map belongs to.
... ...
@@ -3318,15 +3321,15 @@
3318 3321
  /// \tparam GR The digraph type.
3319 3322
  /// \see SourceMap
3320 3323
  template <typename GR>
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
3330 3333
    ///
3331 3334
    /// Constructor.
3332 3335
    /// \param digraph The digraph that the map belongs to.
... ...
@@ -3360,14 +3363,16 @@
3360 3363
  /// \tparam GR The graph type.
3361 3364
  /// \see BackwardMap
3362 3365
  template <typename GR>
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
    ///
3371 3376
    /// Constructor.
3372 3377
    /// \param graph The graph that the map belongs to.
3373 3378
    explicit ForwardMap(const GR& graph) : _graph(graph) {}
... ...
@@ -3400,14 +3405,16 @@
3400 3405
  /// \tparam GR The graph type.
3401 3406
  /// \see ForwardMap
3402 3407
  template <typename GR>
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
    ///
3411 3418
    /// Constructor.
3412 3419
    /// \param graph The graph that the map belongs to.
3413 3420
    explicit BackwardMap(const GR& graph) : _graph(graph) {}
Show white space 12 line context
... ...
@@ -523,13 +523,12 @@
523 523
                 CrossRefMap<Graph, Node, bool> >();
524 524
    checkConcept<ReadWriteMap<Node, double>,
525 525
                 CrossRefMap<Graph, Node, double> >();
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();
533 532
    Node n1 = gr.addNode();
534 533
    Node n2 = gr.addNode();
535 534
    
... ...
@@ -543,13 +542,13 @@
543 542
          "Wrong CrossRefMap");
544 543
    check(map[n2] == 'C' && map('C') == n2 && map.inverse()['C'] == n2,
545 544
          "Wrong CrossRefMap");
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
    
553 552
    map.set(n2, 'A');
554 553

	
555 554
    check(map[n0] == 'A' && map[n1] == 'B' && map[n2] == 'A',
... ...
@@ -739,16 +738,16 @@
739 738
      Ivm::ItemIt it(map1, static_cast<double>(i));
740 739
      check(static_cast<Item>(it) == items[i], "Wrong value");
741 740
      ++it;
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) {
752 751
      map1.set(items[i], static_cast<double>(i % 2));
753 752
    }
754 753
    check(distance(map1.beginValue(), map1.endValue()) == 2, "Wrong size");
0 comments (0 inline)