Arkanjo 0.1
A tool for find code duplicated functions in codebases
Loading...
Searching...
No Matches
detail::iter_impl< BasicJsonType > Class Template Reference

a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. More...

#include <json.hpp>

+ Collaboration diagram for detail::iter_impl< BasicJsonType >:

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.
 
using value_type = typename BasicJsonType::value_type
 the type of the values when the iterator is dereferenced
 
using difference_type = typename BasicJsonType::difference_type
 a type to represent differences between iterators
 
using pointer
 defines a pointer to the type iterated over (value_type)
 
using reference
 defines a reference to the type iterated over (value_type)
 

Public Member Functions

 iter_impl ()=default
 
 ~iter_impl ()=default
 
 iter_impl (iter_impl &&) noexcept=default
 
iter_imploperator= (iter_impl &&) noexcept=default
 
 iter_impl (pointer object) noexcept
 constructor for a given JSON instance
 
 iter_impl (const iter_impl< const BasicJsonType > &other) noexcept
 const copy constructor
 
iter_imploperator= (const iter_impl< const BasicJsonType > &other) noexcept
 converting assignment
 
 iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting constructor
 
iter_imploperator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting assignment
 
 switch (m_object->m_data.m_type)
 
void set_end () noexcept
 set the iterator past the last value
 
reference operator* () const
 return a reference to the value pointed to by the iterator
 
pointer operator-> () const
 dereference the iterator
 
iter_impl operator++ (int) &
 post-increment (it++)
 
iter_imploperator++ ()
 pre-increment (++it)
 
iter_impl operator-- (int) &
 post-decrement (it–)
 
iter_imploperator-- ()
 pre-decrement (–it)
 
template<typename IterImpl , detail::enable_if_t<(std::is_same< IterImpl, iter_impl >::value||std::is_same< IterImpl, other_iter_impl >::value), std::nullptr_t > = nullptr>
bool operator== (const IterImpl &other) const
 comparison: equal
 
template<typename IterImpl , detail::enable_if_t<(std::is_same< IterImpl, iter_impl >::value||std::is_same< IterImpl, other_iter_impl >::value), std::nullptr_t > = nullptr>
bool operator!= (const IterImpl &other) const
 comparison: not equal
 
bool operator< (const iter_impl &other) const
 comparison: smaller
 
bool operator<= (const iter_impl &other) const
 comparison: less than or equal
 
bool operator> (const iter_impl &other) const
 comparison: greater than
 
bool operator>= (const iter_impl &other) const
 comparison: greater than or equal
 
iter_imploperator+= (difference_type i)
 add to iterator
 
iter_imploperator-= (difference_type i)
 subtract from iterator
 
iter_impl operator+ (difference_type i) const
 add to iterator
 
iter_impl operator- (difference_type i) const
 subtract from iterator
 
difference_type operator- (const iter_impl &other) const
 return difference
 
reference operator[] (difference_type n) const
 access to successor
 
const object_t::key_type & key () const
 return the key of an object iterator
 
reference value () const
 return the value of an iterator
 

Public Attributes

JSON_PRIVATE_UNLESS_TESTED : void set_begin() noexcept { JSON_ASSERT(m_object != nullptr)
 
JSON_PRIVATE_UNLESS_TESTED : pointer m_object = nullptr
 
internal_iterator< typename std::remove_const< BasicJsonType >::type > m_it {}
 the actual iterator of the associated instance
 

Friends

iter_impl operator+ (difference_type i, const iter_impl &it)
 addition of distance and iterator
 

Detailed Description

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

a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_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)

Definition at line 13680 of file json.hpp.

Member Typedef Documentation

◆ difference_type

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

a type to represent differences between iterators

Definition at line 13711 of file json.hpp.

◆ iterator_category

template<typename BasicJsonType >
using 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.

Definition at line 13706 of file json.hpp.

◆ pointer

template<typename BasicJsonType >
using detail::iter_impl< BasicJsonType >::pointer
Initial value:
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)

Definition at line 13713 of file json.hpp.

◆ reference

template<typename BasicJsonType >
using detail::iter_impl< BasicJsonType >::reference
Initial value:
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)

Definition at line 13717 of file json.hpp.

◆ value_type

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

the type of the values when the iterator is dereferenced

Definition at line 13709 of file json.hpp.

Constructor & Destructor Documentation

◆ iter_impl() [1/5]

template<typename BasicJsonType >
detail::iter_impl< BasicJsonType >::iter_impl ( )
default

◆ ~iter_impl()

template<typename BasicJsonType >
detail::iter_impl< BasicJsonType >::~iter_impl ( )
default

◆ iter_impl() [2/5]

template<typename BasicJsonType >
detail::iter_impl< BasicJsonType >::iter_impl ( iter_impl< BasicJsonType > && )
defaultnoexcept

◆ iter_impl() [3/5]

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

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.

Definition at line 13733 of file json.hpp.

◆ iter_impl() [4/5]

template<typename BasicJsonType >
detail::iter_impl< BasicJsonType >::iter_impl ( const iter_impl< const BasicJsonType > & other)
noexcept

const copy 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]otherconst iterator to copy from
Note
This copy constructor had to be defined explicitly to circumvent a bug occurring on msvc v19.0 compiler (VS 2015) debug build. For more information refer to: https://github.com/nlohmann/json/issues/1608

Definition at line 13783 of file json.hpp.

◆ iter_impl() [5/5]

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

converting constructor

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

Definition at line 13808 of file json.hpp.

Member Function Documentation

◆ key()

template<typename BasicJsonType >
const object_t::key_type & detail::iter_impl< BasicJsonType >::key ( ) const

return the key of an object iterator

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

Definition at line 14364 of file json.hpp.

◆ operator!=()

template<typename BasicJsonType >
template<typename IterImpl , detail::enable_if_t<(std::is_same< IterImpl, iter_impl >::value||std::is_same< IterImpl, other_iter_impl >::value), std::nullptr_t > = nullptr>
bool detail::iter_impl< BasicJsonType >::operator!= ( const IterImpl & other) const

comparison: not equal

Precondition
(1) Both iterators are initialized to point to the same object, or (2) both iterators are value-initialized.

Definition at line 14142 of file json.hpp.

◆ operator*()

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

return a reference to the value pointed to by the iterator

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

Definition at line 13913 of file json.hpp.

◆ operator+()

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

add to iterator

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

Definition at line 14264 of file json.hpp.

◆ operator++() [1/2]

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

pre-increment (++it)

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

Definition at line 14010 of file json.hpp.

◆ operator++() [2/2]

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

post-increment (it++)

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

Definition at line 13999 of file json.hpp.

◆ operator+=()

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

add to iterator

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

Definition at line 14218 of file json.hpp.

◆ operator-() [1/2]

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

return difference

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

Definition at line 14297 of file json.hpp.

◆ operator-() [2/2]

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

subtract from iterator

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

Definition at line 14286 of file json.hpp.

◆ operator--() [1/2]

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

pre-decrement (–it)

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

Definition at line 14061 of file json.hpp.

◆ operator--() [2/2]

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

post-decrement (it–)

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

Definition at line 14050 of file json.hpp.

◆ operator-=()

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

subtract from iterator

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

Definition at line 14255 of file json.hpp.

◆ operator->()

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

dereference the iterator

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

Definition at line 13957 of file json.hpp.

◆ operator<()

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

comparison: smaller

Precondition
(1) Both iterators are initialized to point to the same object, or (2) both iterators are value-initialized.

Definition at line 14151 of file json.hpp.

◆ operator<=()

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

comparison: less than or equal

Precondition
(1) Both iterators are initialized to point to the same object, or (2) both iterators are value-initialized.

Definition at line 14191 of file json.hpp.

◆ operator=() [1/3]

template<typename BasicJsonType >
iter_impl & detail::iter_impl< BasicJsonType >::operator= ( const iter_impl< const BasicJsonType > & other)
noexcept

converting assignment

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

Definition at line 13793 of file json.hpp.

◆ operator=() [2/3]

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

converting assignment

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

Definition at line 13818 of file json.hpp.

◆ operator=() [3/3]

template<typename BasicJsonType >
iter_impl & detail::iter_impl< BasicJsonType >::operator= ( iter_impl< BasicJsonType > && )
defaultnoexcept

◆ operator==()

template<typename BasicJsonType >
template<typename IterImpl , detail::enable_if_t<(std::is_same< IterImpl, iter_impl >::value||std::is_same< IterImpl, other_iter_impl >::value), std::nullptr_t > = nullptr>
bool detail::iter_impl< BasicJsonType >::operator== ( const IterImpl & other) const

comparison: equal

Precondition
(1) Both iterators are initialized to point to the same object, or (2) both iterators are value-initialized.

Definition at line 14102 of file json.hpp.

◆ operator>()

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

comparison: greater than

Precondition
(1) Both iterators are initialized to point to the same object, or (2) both iterators are value-initialized.

Definition at line 14200 of file json.hpp.

◆ operator>=()

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

comparison: greater than or equal

Precondition
(1) The iterator is initialized; i.e. m_object != nullptr, or (2) both iterators are value-initialized.

Definition at line 14209 of file json.hpp.

◆ operator[]()

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

access to successor

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

Definition at line 14326 of file json.hpp.

◆ set_end()

template<typename BasicJsonType >
void detail::iter_impl< BasicJsonType >::set_end ( )
noexcept

set the iterator past the last value

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

Definition at line 13874 of file json.hpp.

◆ switch()

template<typename BasicJsonType >
detail::iter_impl< BasicJsonType >::switch ( m_object->m_data. m_type)

Definition at line 13834 of file json.hpp.

◆ value()

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

return the value of an iterator

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

Definition at line 14380 of file json.hpp.

Friends And Related Symbol Documentation

◆ 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.

Definition at line 14275 of file json.hpp.

Member Data Documentation

◆ __pad0__

template<typename BasicJsonType >
JSON_PRIVATE_UNLESS_TESTED detail::iter_impl< BasicJsonType >::__pad0__

Definition at line 13825 of file json.hpp.

◆ __pad1__

template<typename BasicJsonType >
JSON_PRIVATE_UNLESS_TESTED detail::iter_impl< BasicJsonType >::__pad1__

Definition at line 14385 of file json.hpp.

◆ m_it

template<typename BasicJsonType >
internal_iterator<typename std::remove_const<BasicJsonType>::type> detail::iter_impl< BasicJsonType >::m_it {}

the actual iterator of the associated instance

Definition at line 14389 of file json.hpp.


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