Warning, file /include/nlohmann/detail/iterators/primitive_iterator.hpp was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include <cstddef> // ptrdiff_t
0012 #include <limits> // numeric_limits
0013
0014 #include <nlohmann/detail/macro_scope.hpp>
0015
0016 NLOHMANN_JSON_NAMESPACE_BEGIN
0017 namespace detail
0018 {
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 class primitive_iterator_t
0030 {
0031 private:
0032 using difference_type = std::ptrdiff_t;
0033 static constexpr difference_type begin_value = 0;
0034 static constexpr difference_type end_value = begin_value + 1;
0035
0036 JSON_PRIVATE_UNLESS_TESTED:
0037
0038 difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
0039
0040 public:
0041 constexpr difference_type get_value() const noexcept
0042 {
0043 return m_it;
0044 }
0045
0046
0047 void set_begin() noexcept
0048 {
0049 m_it = begin_value;
0050 }
0051
0052
0053 void set_end() noexcept
0054 {
0055 m_it = end_value;
0056 }
0057
0058
0059 constexpr bool is_begin() const noexcept
0060 {
0061 return m_it == begin_value;
0062 }
0063
0064
0065 constexpr bool is_end() const noexcept
0066 {
0067 return m_it == end_value;
0068 }
0069
0070 friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
0071 {
0072 return lhs.m_it == rhs.m_it;
0073 }
0074
0075 friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
0076 {
0077 return lhs.m_it < rhs.m_it;
0078 }
0079
0080 primitive_iterator_t operator+(difference_type n) noexcept
0081 {
0082 auto result = *this;
0083 result += n;
0084 return result;
0085 }
0086
0087 friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
0088 {
0089 return lhs.m_it - rhs.m_it;
0090 }
0091
0092 primitive_iterator_t& operator++() noexcept
0093 {
0094 ++m_it;
0095 return *this;
0096 }
0097
0098 primitive_iterator_t operator++(int)& noexcept
0099 {
0100 auto result = *this;
0101 ++m_it;
0102 return result;
0103 }
0104
0105 primitive_iterator_t& operator--() noexcept
0106 {
0107 --m_it;
0108 return *this;
0109 }
0110
0111 primitive_iterator_t operator--(int)& noexcept
0112 {
0113 auto result = *this;
0114 --m_it;
0115 return result;
0116 }
0117
0118 primitive_iterator_t& operator+=(difference_type n) noexcept
0119 {
0120 m_it += n;
0121 return *this;
0122 }
0123
0124 primitive_iterator_t& operator-=(difference_type n) noexcept
0125 {
0126 m_it -= n;
0127 return *this;
0128 }
0129 };
0130
0131 }
0132 NLOHMANN_JSON_NAMESPACE_END