MCPcopy Create free account
hub / github.com/AllentDan/LibtorchTutorials / primitive_iterator_t

Class primitive_iterator_t

lesson6-Segmentation/json.hpp:10636–10735  ·  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`) models past the end. */

Source from the content-addressed store, hash-verified

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