WPILibC++ 2023.4.3
wpi::detail::iter_impl< BasicJsonType > Class Template Reference

a template for a bidirectional iterator for the json class More...

#include </home/runner/work/allwpilib/allwpilib/wpiutil/src/main/native/thirdparty/json/include/wpi/json.h>

Public Types

using iterator_category = std::bidirectional_iterator_tag
 The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. More...
 
using value_type = typename BasicJsonType::value_type
 the type of the values when the iterator is dereferenced More...
 
using difference_type = typename BasicJsonType::difference_type
 a type to represent differences between iterators More...
 
using pointer = typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type
 defines a pointer to the type iterated over (value_type) More...
 
using reference = typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type
 defines a reference to the type iterated over (value_type) More...
 

Public Member Functions

 iter_impl ()=default
 default constructor More...
 
 iter_impl (pointer object) noexcept
 constructor for a given JSON instance More...
 
 iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting constructor More...
 
iter_imploperator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting assignment More...
 
reference operator* () const
 return a reference to the value pointed to by the iterator More...
 
pointer operator-> () const
 dereference the iterator More...
 
iter_impl const operator++ (int)
 post-increment (it++) More...
 
iter_imploperator++ ()
 pre-increment (++it) More...
 
iter_impl const operator-- (int)
 post-decrement (it–) More...
 
iter_imploperator-- ()
 pre-decrement (–it) More...
 
bool operator== (const iter_impl &other) const
 comparison: equal More...
 
bool operator!= (const iter_impl &other) const
 comparison: not equal More...
 
bool operator< (const iter_impl &other) const
 comparison: smaller More...
 
bool operator<= (const iter_impl &other) const
 comparison: less than or equal More...
 
bool operator> (const iter_impl &other) const
 comparison: greater than More...
 
bool operator>= (const iter_impl &other) const
 comparison: greater than or equal More...
 
iter_imploperator+= (difference_type i)
 add to iterator More...
 
iter_imploperator-= (difference_type i)
 subtract from iterator More...
 
iter_impl operator+ (difference_type i) const
 add to iterator More...
 
iter_impl operator- (difference_type i) const
 subtract from iterator More...
 
difference_type operator- (const iter_impl &other) const
 return difference More...
 
reference operator[] (difference_type n) const
 access to successor More...
 
std::string_view key () const
 return the key of an object iterator More...
 
reference value () const
 return the value of an iterator More...
 

Friends

class ::wpi::JsonTest
 
iter_impl operator+ (difference_type i, const iter_impl &it)
 addition of distance and iterator More...
 

Detailed Description

template<typename BasicJsonType>
class wpi::detail::iter_impl< BasicJsonType >

a template for a bidirectional iterator for the json class

This class implements a both iterators (iterator and const_iterator) for the json class.

Note
An iterator is called initialized when a pointer to a JSON value has been set (e.g., by a constructor or a copy assignment). If the iterator is default-constructed, it is uninitialized and most methods are undefined. The library uses assertions to detect calls on uninitialized iterators.**

@requirement The class satisfies the following concept requirements:

  • BidirectionalIterator: The iterator that can be moved can be moved in both directions (i.e. incremented and decremented).
Since
version 1.0.0, simplified in version 2.0.9, change to bidirectional iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593)

Member Typedef Documentation

◆ difference_type

template<typename BasicJsonType >
using wpi::detail::iter_impl< BasicJsonType >::difference_type = typename BasicJsonType::difference_type

a type to represent differences between iterators

◆ iterator_category

template<typename BasicJsonType >
using wpi::detail::iter_impl< BasicJsonType >::iterator_category = std::bidirectional_iterator_tag

The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17.

The C++ Standard has never required user-defined iterators to derive from std::iterator. A user-defined iterator should provide publicly accessible typedefs named iterator_category, value_type, difference_type, pointer, and reference. Note that value_type is required to be non-const, even for constant iterators.

◆ pointer

template<typename BasicJsonType >
using wpi::detail::iter_impl< BasicJsonType >::pointer = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer>::type

defines a pointer to the type iterated over (value_type)

◆ reference

template<typename BasicJsonType >
using wpi::detail::iter_impl< BasicJsonType >::reference = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference>::type

defines a reference to the type iterated over (value_type)

◆ value_type

template<typename BasicJsonType >
using wpi::detail::iter_impl< BasicJsonType >::value_type = typename BasicJsonType::value_type

the type of the values when the iterator is dereferenced

Constructor & Destructor Documentation

◆ iter_impl() [1/3]

template<typename BasicJsonType >
iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type > ( )
default

default constructor

allow json to access private members

◆ iter_impl() [2/3]

template<typename BasicJsonType >
wpi::detail::iter_impl< BasicJsonType >::iter_impl ( pointer  object)
inlineexplicitnoexcept

constructor for a given JSON instance

Parameters
[in]objectpointer to a JSON object for this iterator
Precondition
object != nullptr
Postcondition
The iterator is initialized; i.e. m_object != nullptr.

◆ iter_impl() [3/3]

template<typename BasicJsonType >
wpi::detail::iter_impl< BasicJsonType >::iter_impl ( const iter_impl< typename std::remove_const< BasicJsonType >::type > &  other)
inlinenoexcept

converting constructor

Note
The conventional copy constructor and copy assignment are implicitly defined. Combined with the following converting constructor and assignment, they support: (1) copy from iterator to iterator, (2) copy from const iterator to const iterator, and (3) conversion from iterator to const iterator. However conversion from const iterator to iterator is not defined.
Parameters
[in]othernon-const iterator to copy from
Note
It is not checked whether other is initialized.

Member Function Documentation

◆ key()

template<typename BasicJsonType >
std::string_view wpi::detail::iter_impl< BasicJsonType >::key ( ) const
inline

return the key of an object iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator!=()

template<typename BasicJsonType >
bool wpi::detail::iter_impl< BasicJsonType >::operator!= ( const iter_impl< BasicJsonType > &  other) const
inline

comparison: not equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator*()

template<typename BasicJsonType >
reference wpi::detail::iter_impl< BasicJsonType >::operator* ( ) const
inline

return a reference to the value pointed to by the iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator+()

template<typename BasicJsonType >
iter_impl wpi::detail::iter_impl< BasicJsonType >::operator+ ( difference_type  i) const
inline

add to iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator++() [1/2]

template<typename BasicJsonType >
iter_impl & wpi::detail::iter_impl< BasicJsonType >::operator++ ( )
inline

pre-increment (++it)

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator++() [2/2]

template<typename BasicJsonType >
iter_impl const wpi::detail::iter_impl< BasicJsonType >::operator++ ( int  )
inline

post-increment (it++)

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator+=()

template<typename BasicJsonType >
iter_impl & wpi::detail::iter_impl< BasicJsonType >::operator+= ( difference_type  i)
inline

add to iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator-() [1/2]

template<typename BasicJsonType >
difference_type wpi::detail::iter_impl< BasicJsonType >::operator- ( const iter_impl< BasicJsonType > &  other) const
inline

return difference

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator-() [2/2]

template<typename BasicJsonType >
iter_impl wpi::detail::iter_impl< BasicJsonType >::operator- ( difference_type  i) const
inline

subtract from iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator--() [1/2]

template<typename BasicJsonType >
iter_impl & wpi::detail::iter_impl< BasicJsonType >::operator-- ( )
inline

pre-decrement (–it)

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator--() [2/2]

template<typename BasicJsonType >
iter_impl const wpi::detail::iter_impl< BasicJsonType >::operator-- ( int  )
inline

post-decrement (it–)

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator-=()

template<typename BasicJsonType >
iter_impl & wpi::detail::iter_impl< BasicJsonType >::operator-= ( difference_type  i)
inline

subtract from iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator->()

template<typename BasicJsonType >
pointer wpi::detail::iter_impl< BasicJsonType >::operator-> ( ) const
inline

dereference the iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator<()

template<typename BasicJsonType >
bool wpi::detail::iter_impl< BasicJsonType >::operator< ( const iter_impl< BasicJsonType > &  other) const
inline

comparison: smaller

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator<=()

template<typename BasicJsonType >
bool wpi::detail::iter_impl< BasicJsonType >::operator<= ( const iter_impl< BasicJsonType > &  other) const
inline

comparison: less than or equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator=()

template<typename BasicJsonType >
iter_impl & wpi::detail::iter_impl< BasicJsonType >::operator= ( const iter_impl< typename std::remove_const< BasicJsonType >::type > &  other)
inlinenoexcept

converting assignment

Parameters
[in,out]othernon-const iterator to copy from
Returns
const/non-const iterator
Note
It is not checked whether other is initialized.

◆ operator==()

template<typename BasicJsonType >
bool wpi::detail::iter_impl< BasicJsonType >::operator== ( const iter_impl< BasicJsonType > &  other) const
inline

comparison: equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator>()

template<typename BasicJsonType >
bool wpi::detail::iter_impl< BasicJsonType >::operator> ( const iter_impl< BasicJsonType > &  other) const
inline

comparison: greater than

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator>=()

template<typename BasicJsonType >
bool wpi::detail::iter_impl< BasicJsonType >::operator>= ( const iter_impl< BasicJsonType > &  other) const
inline

comparison: greater than or equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ operator[]()

template<typename BasicJsonType >
reference wpi::detail::iter_impl< BasicJsonType >::operator[] ( difference_type  n) const
inline

access to successor

Precondition
The iterator is initialized; i.e. m_object != nullptr.

◆ value()

template<typename BasicJsonType >
reference wpi::detail::iter_impl< BasicJsonType >::value ( ) const
inline

return the value of an iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

Friends And Related Function Documentation

◆ ::wpi::JsonTest

template<typename BasicJsonType >
friend class ::wpi::JsonTest
friend

◆ operator+

template<typename BasicJsonType >
iter_impl operator+ ( difference_type  i,
const iter_impl< BasicJsonType > &  it 
)
friend

addition of distance and iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.

The documentation for this class was generated from the following file: