MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / primitive_iterator_t

Class primitive_iterator_t

Source/Utils/json.hpp:10634–10733  ·  view source on GitHub ↗

@brief an iterator for primitive JSON types This class models an iterator for primitive JSON types (boolean, number, string). It's only purpose is to allow the iterator/const_iterator classes to "iterate" over primitive values. Internally, the iterator is modeled by a `difference_type` variable. Value begin_value (`0`) models the begin, end_value (`1`) mode

Source from the content-addressed store, hash-verified

10632 end_value (`1`) models past the end.
10633 */
10634 class primitive_iterator_t
10635 {
10636 private:
10637 using difference_type = std::ptrdiff_t;
10638 static constexpr difference_type begin_value = 0;
10639 static constexpr difference_type end_value = begin_value + 1;
10640
10641 /// iterator as signed integer type
10642 difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
10643
10644 public:
10645 constexpr difference_type get_value() const noexcept
10646 {
10647 return m_it;
10648 }
10649
10650 /// set iterator to a defined beginning
10651 void set_begin() noexcept
10652 {
10653 m_it = begin_value;
10654 }
10655
10656 /// set iterator to a defined past the end
10657 void set_end() noexcept
10658 {
10659 m_it = end_value;
10660 }
10661
10662 /// return whether the iterator can be dereferenced
10663 constexpr bool is_begin() const noexcept
10664 {
10665 return m_it == begin_value;
10666 }
10667
10668 /// return whether the iterator is at end
10669 constexpr bool is_end() const noexcept
10670 {
10671 return m_it == end_value;
10672 }
10673
10674 friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
10675 {
10676 return lhs.m_it == rhs.m_it;
10677 }
10678
10679 friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
10680 {
10681 return lhs.m_it < rhs.m_it;
10682 }
10683
10684 primitive_iterator_t operator+(difference_type n) noexcept
10685 {
10686 auto result = *this;
10687 result += n;
10688 return result;
10689 }
10690
10691 friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept

Callers 1

iter_implMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected