Skip to content

Commit f523a0f

Browse files
authored
Merge pull request #2561 from AlexandreSinger/feature-remove-std-iterator
Removed Less-Simple Uses of STD Iterator
2 parents 6cbf119 + 63d57e7 commit f523a0f

File tree

3 files changed

+31
-37
lines changed

3 files changed

+31
-37
lines changed

libs/EXTERNAL/libtatum/libtatum/tatum/tags/TimingTags.hpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include <cstddef>
23
#include <iterator>
34
#include <memory>
45

@@ -104,15 +105,15 @@ class TimingTags {
104105

105106
//Iterator definition
106107
template<class T>
107-
class Iterator : public std::iterator<std::random_access_iterator_tag, T> {
108+
class Iterator {
108109
friend TimingTags;
109110
public:
110-
using value_type = typename std::iterator<std::random_access_iterator_tag, T>::value_type;
111-
using difference_type = typename std::iterator<std::random_access_iterator_tag, T>::difference_type;
112-
using pointer = typename std::iterator<std::random_access_iterator_tag, T>::pointer;
113-
using reference = typename std::iterator<std::random_access_iterator_tag, T>::reference;
114-
using iterator_category = typename std::iterator<std::random_access_iterator_tag, T>::iterator_category;
115-
public:
111+
using iterator_category = std::random_access_iterator_tag;
112+
using difference_type = std::ptrdiff_t;
113+
using value_type = T;
114+
using pointer = T*;
115+
using reference = T&;
116+
116117
Iterator(): p_(nullptr) {}
117118
Iterator(pointer p): p_(p) {}
118119
Iterator(const Iterator& other): p_(other.p_) {}
@@ -143,7 +144,7 @@ class TimingTags {
143144
friend bool operator>=(Iterator lhs, Iterator rhs) { return lhs.p_ >= rhs.p_; }
144145
friend void swap(Iterator lhs, Iterator rhs) { std::swap(lhs.p_, rhs.p_); }
145146
private:
146-
T* p_ = nullptr;
147+
pointer p_ = nullptr;
147148
};
148149

149150
private:

libs/libvtrutil/src/vtr_array_view.h

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -207,21 +207,15 @@ class array_view_id : private array_view<V> {
207207
* to iterate through the keys with a range-based for loop
208208
*
209209
*/
210-
class key_iterator : public std::iterator<std::bidirectional_iterator_tag, key_type> {
210+
class key_iterator {
211211
public:
212-
/**
213-
* @brief Intermediate type my_iter
214-
*
215-
* We use the intermediate type my_iter to avoid a potential ambiguity for which
216-
* clang generates errors and warnings
217-
*/
218-
using my_iter = typename std::iterator<std::bidirectional_iterator_tag, K>;
219-
using typename my_iter::iterator;
220-
using typename my_iter::pointer;
221-
using typename my_iter::reference;
222-
using typename my_iter::value_type;
212+
using iterator_category = std::bidirectional_iterator_tag;
213+
using difference_type = std::ptrdiff_t;
214+
using value_type = key_type;
215+
using pointer = key_type*;
216+
using reference = key_type&;
223217

224-
key_iterator(key_iterator::value_type init)
218+
key_iterator(value_type init)
225219
: value_(init) {}
226220

227221
/**
@@ -233,13 +227,13 @@ class array_view_id : private array_view<V> {
233227
*/
234228

235229
///@brief increment the iterator
236-
key_iterator operator++() {
230+
key_iterator& operator++() {
237231
value_ = value_type(size_t(value_) + 1);
238232
return *this;
239233
}
240234

241235
///@brief decrement the iterator
242-
key_iterator operator--() {
236+
key_iterator& operator--() {
243237
value_ = value_type(size_t(value_) - 1);
244238
return *this;
245239
}
@@ -250,8 +244,8 @@ class array_view_id : private array_view<V> {
250244
///@brief -> operator
251245
pointer operator->() { return &value_; }
252246

253-
friend bool operator==(const key_iterator lhs, const key_iterator rhs) { return lhs.value_ == rhs.value_; }
254-
friend bool operator!=(const key_iterator lhs, const key_iterator rhs) { return !(lhs == rhs); }
247+
friend bool operator==(const key_iterator& lhs, const key_iterator& rhs) { return lhs.value_ == rhs.value_; }
248+
friend bool operator!=(const key_iterator& lhs, const key_iterator& rhs) { return !(lhs == rhs); }
255249

256250
private:
257251
value_type value_;

libs/libvtrutil/src/vtr_vector.h

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -160,17 +160,16 @@ class vector : private std::vector<V, Allocator> {
160160
* This allows end-users to call the parent class's keys() member
161161
* to iterate through the keys with a range-based for loop
162162
*/
163-
class key_iterator : public std::iterator<std::bidirectional_iterator_tag, key_type> {
163+
class key_iterator {
164164
public:
165-
///@brief We use the intermediate type my_iter to avoid a potential ambiguity for which clang generates errors and warnings
166-
using my_iter = typename std::iterator<std::bidirectional_iterator_tag, K>;
167-
using typename my_iter::iterator;
168-
using typename my_iter::pointer;
169-
using typename my_iter::reference;
170-
using typename my_iter::value_type;
165+
using iterator_category = std::bidirectional_iterator_tag;
166+
using difference_type = std::ptrdiff_t;
167+
using value_type = key_type;
168+
using pointer = key_type*;
169+
using reference = key_type&;
171170

172171
///@brief constructor
173-
key_iterator(key_iterator::value_type init)
172+
key_iterator(value_type init)
174173
: value_(init) {}
175174

176175
/*
@@ -180,12 +179,12 @@ class vector : private std::vector<V, Allocator> {
180179
* we can just increment the underlying Id to build the next key.
181180
*/
182181
///@brief ++ operator
183-
key_iterator operator++() {
182+
key_iterator& operator++() {
184183
value_ = value_type(size_t(value_) + 1);
185184
return *this;
186185
}
187186
///@brief decrement operator
188-
key_iterator operator--() {
187+
key_iterator& operator--() {
189188
value_ = value_type(size_t(value_) - 1);
190189
return *this;
191190
}
@@ -195,9 +194,9 @@ class vector : private std::vector<V, Allocator> {
195194
pointer operator->() { return &value_; }
196195

197196
///@brief == operator
198-
friend bool operator==(const key_iterator lhs, const key_iterator rhs) { return lhs.value_ == rhs.value_; }
197+
friend bool operator==(const key_iterator& lhs, const key_iterator& rhs) { return lhs.value_ == rhs.value_; }
199198
///@brief != operator
200-
friend bool operator!=(const key_iterator lhs, const key_iterator rhs) { return !(lhs == rhs); }
199+
friend bool operator!=(const key_iterator& lhs, const key_iterator& rhs) { return !(lhs == rhs); }
201200

202201
private:
203202
value_type value_;

0 commit comments

Comments
 (0)