28 #ifndef BSL_CONTIGUOUS_ITERATOR_HPP 29 #define BSL_CONTIGUOUS_ITERATOR_HPP 83 : m_ptr{}, m_count{}, m_i{}
117 : m_ptr{ptr}, m_count{count}, m_i{i}
119 if ((
nullptr == m_ptr) || (0U == m_count)) {
120 *
this = contiguous_iterator{};
188 [[nodiscard]] constexpr
bool 191 return nullptr == this->
data();
201 [[nodiscard]] constexpr
bool 227 if (
nullptr == m_ptr) {
231 if (m_i == m_count) {
248 if (
nullptr == m_ptr) {
252 if (m_count == m_i) {
270 if (
nullptr == m_ptr) {
305 [[nodiscard]] constexpr
bool 308 return (lhs.data() == rhs.data()) && (lhs.index() == rhs.index());
325 [[nodiscard]] constexpr
bool 328 return !(lhs == rhs);
343 [[nodiscard]] constexpr
bool 346 return lhs.index() < rhs.index();
361 [[nodiscard]] constexpr
bool 364 return lhs.index() <= rhs.index();
379 [[nodiscard]] constexpr
bool 382 return lhs.index() > rhs.index();
397 [[nodiscard]] constexpr
bool 400 return lhs.index() >= rhs.index();
constexpr contiguous_iterator(pointer_type const ptr, size_type const count, size_type const i=0U) noexcept
Creates a contiguous iterator given a ptr to an array and the total number of elements in the array....
Definition: contiguous_iterator.hpp:113
constexpr size_type index() const noexcept
Returns the iterator's current index. If the iterator is at the end, this function returns size().
Definition: contiguous_iterator.hpp:176
constexpr bool empty() const noexcept
Returns nullptr == data()
Definition: contiguous_iterator.hpp:189
T const * const_pointer_type
alias for: T const *
Definition: contiguous_iterator.hpp:100
constexpr contiguous_iterator & operator++() noexcept
Increments the iterator.
Definition: contiguous_iterator.hpp:246
constexpr size_type size() const noexcept
Returns the number of elements in the array being iterated.
Definition: contiguous_iterator.hpp:162
constexpr bool operator>(contiguous_iterator< T > const &lhs, contiguous_iterator< T > const &rhs) noexcept
Returns lhs.index() > rhs.index()
Definition: contiguous_iterator.hpp:380
constexpr bool is_end() const noexcept
Returns index() == size()
Definition: contiguous_iterator.hpp:202
T & reference_type
alias for: T &
Definition: contiguous_iterator.hpp:94
constexpr bool operator>=(contiguous_iterator< T > const &lhs, contiguous_iterator< T > const &rhs) noexcept
Returns lhs.index() >= rhs.index()
Definition: contiguous_iterator.hpp:398
constexpr contiguous_iterator & operator--() noexcept
Decrements the iterator.
Definition: contiguous_iterator.hpp:268
constexpr pointer_type get_if() noexcept
Returns a pointer to the instance of T stored at the iterator's current index. If the index is out of...
Definition: contiguous_iterator.hpp:225
bsl::uintmax size_type
alias for: bsl::uintmax
Definition: contiguous_iterator.hpp:90
constexpr pointer_type data() noexcept
Returns a pointer to the array being iterated.
Definition: contiguous_iterator.hpp:136
constexpr const_pointer_type data() const noexcept
Returns a pointer to the array being iterated.
Definition: contiguous_iterator.hpp:149
bsl::uintmax difference_type
alias for: bsl::uintmax
Definition: contiguous_iterator.hpp:92
T const & const_reference_type
alias for: T const &
Definition: contiguous_iterator.hpp:96
::uintmax_t uintmax
defines a unsigned integer with the maximum possible size
Definition: cstdint.hpp:97
constexpr bool operator!=(contiguous_iterator< T > const &lhs, contiguous_iterator< T > const &rhs) noexcept
Returns true if the provided contiguous iterators do not point to the same array or the same index.
Definition: contiguous_iterator.hpp:326
constexpr bool operator==(contiguous_iterator< T > const &lhs, contiguous_iterator< T > const &rhs) noexcept
Returns true if the provided contiguous iterators point to the same array and the same index.
Definition: contiguous_iterator.hpp:306
T * pointer_type
alias for: T *
Definition: contiguous_iterator.hpp:98
Provides a contiguous iterator as defined by the C++ specification, with the follwing differences:
Definition: contiguous_iterator.hpp:76
T value_type
alias for: T
Definition: contiguous_iterator.hpp:88