Skip to content

Commit

Permalink
Merge pull request verilog-to-routing#2561 from AlexandreSinger/featu…
Browse files Browse the repository at this point in the history
…re-remove-std-iterator

Removed Less-Simple Uses of STD Iterator
  • Loading branch information
vaughnbetz committed May 27, 2024
2 parents 6cbf119 + 63d57e7 commit f523a0f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 37 deletions.
17 changes: 9 additions & 8 deletions libs/EXTERNAL/libtatum/libtatum/tatum/tags/TimingTags.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#pragma once
#include <cstddef>
#include <iterator>
#include <memory>

Expand Down Expand Up @@ -104,15 +105,15 @@ class TimingTags {

//Iterator definition
template<class T>
class Iterator : public std::iterator<std::random_access_iterator_tag, T> {
class Iterator {
friend TimingTags;
public:
using value_type = typename std::iterator<std::random_access_iterator_tag, T>::value_type;
using difference_type = typename std::iterator<std::random_access_iterator_tag, T>::difference_type;
using pointer = typename std::iterator<std::random_access_iterator_tag, T>::pointer;
using reference = typename std::iterator<std::random_access_iterator_tag, T>::reference;
using iterator_category = typename std::iterator<std::random_access_iterator_tag, T>::iterator_category;
public:
using iterator_category = std::random_access_iterator_tag;
using difference_type = std::ptrdiff_t;
using value_type = T;
using pointer = T*;
using reference = T&;

Iterator(): p_(nullptr) {}
Iterator(pointer p): p_(p) {}
Iterator(const Iterator& other): p_(other.p_) {}
Expand Down Expand Up @@ -143,7 +144,7 @@ class TimingTags {
friend bool operator>=(Iterator lhs, Iterator rhs) { return lhs.p_ >= rhs.p_; }
friend void swap(Iterator lhs, Iterator rhs) { std::swap(lhs.p_, rhs.p_); }
private:
T* p_ = nullptr;
pointer p_ = nullptr;
};

private:
Expand Down
28 changes: 11 additions & 17 deletions libs/libvtrutil/src/vtr_array_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,21 +207,15 @@ class array_view_id : private array_view<V> {
* to iterate through the keys with a range-based for loop
*
*/
class key_iterator : public std::iterator<std::bidirectional_iterator_tag, key_type> {
class key_iterator {
public:
/**
* @brief Intermediate type my_iter
*
* We use the intermediate type my_iter to avoid a potential ambiguity for which
* clang generates errors and warnings
*/
using my_iter = typename std::iterator<std::bidirectional_iterator_tag, K>;
using typename my_iter::iterator;
using typename my_iter::pointer;
using typename my_iter::reference;
using typename my_iter::value_type;
using iterator_category = std::bidirectional_iterator_tag;
using difference_type = std::ptrdiff_t;
using value_type = key_type;
using pointer = key_type*;
using reference = key_type&;

key_iterator(key_iterator::value_type init)
key_iterator(value_type init)
: value_(init) {}

/**
Expand All @@ -233,13 +227,13 @@ class array_view_id : private array_view<V> {
*/

///@brief increment the iterator
key_iterator operator++() {
key_iterator& operator++() {
value_ = value_type(size_t(value_) + 1);
return *this;
}

///@brief decrement the iterator
key_iterator operator--() {
key_iterator& operator--() {
value_ = value_type(size_t(value_) - 1);
return *this;
}
Expand All @@ -250,8 +244,8 @@ class array_view_id : private array_view<V> {
///@brief -> operator
pointer operator->() { return &value_; }

friend bool operator==(const key_iterator lhs, const key_iterator rhs) { return lhs.value_ == rhs.value_; }
friend bool operator!=(const key_iterator lhs, const key_iterator rhs) { return !(lhs == rhs); }
friend bool operator==(const key_iterator& lhs, const key_iterator& rhs) { return lhs.value_ == rhs.value_; }
friend bool operator!=(const key_iterator& lhs, const key_iterator& rhs) { return !(lhs == rhs); }

private:
value_type value_;
Expand Down
23 changes: 11 additions & 12 deletions libs/libvtrutil/src/vtr_vector.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,17 +160,16 @@ class vector : private std::vector<V, Allocator> {
* This allows end-users to call the parent class's keys() member
* to iterate through the keys with a range-based for loop
*/
class key_iterator : public std::iterator<std::bidirectional_iterator_tag, key_type> {
class key_iterator {
public:
///@brief We use the intermediate type my_iter to avoid a potential ambiguity for which clang generates errors and warnings
using my_iter = typename std::iterator<std::bidirectional_iterator_tag, K>;
using typename my_iter::iterator;
using typename my_iter::pointer;
using typename my_iter::reference;
using typename my_iter::value_type;
using iterator_category = std::bidirectional_iterator_tag;
using difference_type = std::ptrdiff_t;
using value_type = key_type;
using pointer = key_type*;
using reference = key_type&;

///@brief constructor
key_iterator(key_iterator::value_type init)
key_iterator(value_type init)
: value_(init) {}

/*
Expand All @@ -180,12 +179,12 @@ class vector : private std::vector<V, Allocator> {
* we can just increment the underlying Id to build the next key.
*/
///@brief ++ operator
key_iterator operator++() {
key_iterator& operator++() {
value_ = value_type(size_t(value_) + 1);
return *this;
}
///@brief decrement operator
key_iterator operator--() {
key_iterator& operator--() {
value_ = value_type(size_t(value_) - 1);
return *this;
}
Expand All @@ -195,9 +194,9 @@ class vector : private std::vector<V, Allocator> {
pointer operator->() { return &value_; }

///@brief == operator
friend bool operator==(const key_iterator lhs, const key_iterator rhs) { return lhs.value_ == rhs.value_; }
friend bool operator==(const key_iterator& lhs, const key_iterator& rhs) { return lhs.value_ == rhs.value_; }
///@brief != operator
friend bool operator!=(const key_iterator lhs, const key_iterator rhs) { return !(lhs == rhs); }
friend bool operator!=(const key_iterator& lhs, const key_iterator& rhs) { return !(lhs == rhs); }

private:
value_type value_;
Expand Down

0 comments on commit f523a0f

Please sign in to comment.