WPILibC++  unspecified
wpi::json::iter_impl< U > Class Template Reference

a template for a random access iterator for the json class More...

#include <json.h>

Inheritance diagram for wpi::json::iter_impl< U >:
Collaboration diagram for wpi::json::iter_impl< U >:

Public Types

using value_type = typename json::value_type
 the type of the values when the iterator is dereferenced
 
using difference_type = typename json::difference_type
 a type to represent differences between iterators
 
using pointer = typename std::conditional< std::is_const< U >::value, typename json::const_pointer, typename json::pointer >::type
 defines a pointer to the type iterated over (value_type)
 
using reference = typename std::conditional< std::is_const< U >::value, typename json::const_reference, typename json::reference >::type
 defines a reference to the type iterated over (value_type)
 
using iterator_category = std::bidirectional_iterator_tag
 the category of the iterator
 

Public Member Functions

 iter_impl () noexcept
 default constructor
 
 iter_impl (pointer object) noexcept
 constructor for a given JSON instance More...
 
 iter_impl (const iter_impl< json > &other) noexcept
 converting constructor More...
 
iter_imploperator= (const iter_impl< json > &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 operator++ (int)
 post-increment (it++) More...
 
iter_imploperator++ ()
 pre-increment (++it) More...
 
iter_impl 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...
 
llvm::StringRef key () const
 return the key of an object iterator More...
 
reference value () const
 return the value of an iterator More...
 

Friends

class json
 allow json to access private members
 
class JsonTest
 
iter_impl operator+ (difference_type i, const iter_impl &it)
 addition of distance and iterator More...
 

Detailed Description

template<typename U>
class wpi::json::iter_impl< U >

a template for a random access 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.

The class satisfies the following concept requirements:

  • RandomAccessIterator: The iterator that can be moved to point (forward and backward) to any element in constant time.
Since
version 1.0.0, simplified in version 2.0.9

Constructor & Destructor Documentation

template<typename U>
wpi::json::iter_impl< U >::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.
template<typename U>
wpi::json::iter_impl< U >::iter_impl ( const iter_impl< json > &  other)
inlinenoexcept

converting constructor

Note
The conventional copy constructor and copy assignment are implicitly defined. Combined with the following converting constructor and assigment, they support: copy from iterator to iterator, copy from const iterator to const iterator, and 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

template<typename U>
llvm::StringRef wpi::json::iter_impl< U >::key ( ) const
inline

return the key of an object iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
bool wpi::json::iter_impl< U >::operator!= ( const iter_impl< U > &  other) const
inline

comparison: not equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
reference wpi::json::iter_impl< U >::operator* ( ) const
inline

return a reference to the value pointed to by the iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl wpi::json::iter_impl< U >::operator+ ( difference_type  i) const
inline

add to iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl wpi::json::iter_impl< U >::operator++ ( int  )
inline

post-increment (it++)

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl& wpi::json::iter_impl< U >::operator++ ( )
inline

pre-increment (++it)

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl& wpi::json::iter_impl< U >::operator+= ( difference_type  i)
inline

add to iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl wpi::json::iter_impl< U >::operator- ( difference_type  i) const
inline

subtract from iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
difference_type wpi::json::iter_impl< U >::operator- ( const iter_impl< U > &  other) const
inline

return difference

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl wpi::json::iter_impl< U >::operator-- ( int  )
inline

post-decrement (it–)

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl& wpi::json::iter_impl< U >::operator-- ( )
inline

pre-decrement (–it)

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl& wpi::json::iter_impl< U >::operator-= ( difference_type  i)
inline

subtract from iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
pointer wpi::json::iter_impl< U >::operator-> ( ) const
inline

dereference the iterator

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
bool wpi::json::iter_impl< U >::operator< ( const iter_impl< U > &  other) const
inline

comparison: smaller

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
bool wpi::json::iter_impl< U >::operator<= ( const iter_impl< U > &  other) const
inline

comparison: less than or equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
iter_impl& wpi::json::iter_impl< U >::operator= ( const iter_impl< json > &  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.
template<typename U>
bool wpi::json::iter_impl< U >::operator== ( const iter_impl< U > &  other) const
inline

comparison: equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
bool wpi::json::iter_impl< U >::operator> ( const iter_impl< U > &  other) const
inline

comparison: greater than

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
bool wpi::json::iter_impl< U >::operator>= ( const iter_impl< U > &  other) const
inline

comparison: greater than or equal

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
reference wpi::json::iter_impl< U >::operator[] ( difference_type  n) const
inline

access to successor

Precondition
The iterator is initialized; i.e. m_object != nullptr.
template<typename U>
reference wpi::json::iter_impl< U >::value ( ) const
inline

return the value of an iterator

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

Friends And Related Function Documentation

template<typename U>
iter_impl operator+ ( difference_type  i,
const iter_impl< U > &  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: