Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
nlohmann::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 nlohmann::detail::iter_impl< BasicJsonType >:
[legend]

Public Types

using difference_type = typename BasicJsonType::difference_type
using value_type = typename BasicJsonType::value_type

Public Member Functions

 iter_impl ()=default
 iter_impl (const iter_impl< const BasicJsonType > &other) noexcept
 const copy constructor
 iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting constructor
 iter_impl (iter_impl &&) noexcept=default
 iter_impl (pointer object) noexcept
 constructor for a given JSON instance
const object_t::key_type & key () const
 return the key of an object iterator
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
reference operator* () const
 return a reference to the value pointed to by the iterator
iter_impl operator+ (difference_type i) const
 add to iterator
iter_imploperator++ ()
 pre-increment (++it)
iter_impl const operator++ (int)
 post-increment (it++)
iter_imploperator+= (difference_type i)
 add to iterator
difference_type operator- (const iter_impl &other) const
 return difference
iter_impl operator- (difference_type i) const
 subtract from iterator
iter_imploperator-- ()
 pre-decrement (–it)
iter_impl const operator-- (int)
 post-decrement (it–)
iter_imploperator-= (difference_type i)
 subtract from iterator
pointer operator-> () const
 dereference the iterator
bool operator< (const iter_impl &other) const
 comparison: smaller
bool operator<= (const iter_impl &other) const
 comparison: less than or equal
iter_imploperator= (const iter_impl< const BasicJsonType > &other) noexcept
 converting assignment
iter_imploperator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting assignment
iter_imploperator= (iter_impl &&) noexcept=default
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
bool operator> (const iter_impl &other) const
 comparison: greater than
bool operator>= (const iter_impl &other) const
 comparison: greater than or equal
reference operator[] (difference_type n) const
 access to successor
*defines a pointer to the type iterated over (value_type) using pointer
*defines a reference to the type iterated over (value_type) using reference
void set_end () noexcept
 set the iterator past the last value
 switch (m_object->m_type)
reference value () const
 return the value of an iterator
 ~iter_impl ()=default

Data Fields

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

Private Types

using array_t = typename BasicJsonType::array_t
using object_t = typename BasicJsonType::object_t
using other_iter_impl = iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>

Private Attributes

friend BasicJsonType
friend iteration_proxy< iter_impl >
friend iteration_proxy_value< iter_impl >
members friend other_iter_impl

Friends

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

Detailed Description

template<typename BasicJsonType>
class nlohmann::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 11406 of file json.hpp.

Member Typedef Documentation

◆ array_t

template<typename BasicJsonType>
using nlohmann::detail::iter_impl< BasicJsonType >::array_t = typename BasicJsonType::array_t
private

Definition at line 11417 of file json.hpp.

◆ difference_type

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

Definition at line 11434 of file json.hpp.

◆ object_t

template<typename BasicJsonType>
using nlohmann::detail::iter_impl< BasicJsonType >::object_t = typename BasicJsonType::object_t
private

Definition at line 11416 of file json.hpp.

◆ other_iter_impl

template<typename BasicJsonType>
using nlohmann::detail::iter_impl< BasicJsonType >::other_iter_impl = iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>
private

Definition at line 11409 of file json.hpp.

◆ value_type

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

Definition at line 11432 of file json.hpp.

Constructor & Destructor Documentation

◆ iter_impl() [1/5]

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

◆ ~iter_impl()

◆ iter_impl() [2/5]

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

◆ iter_impl() [3/5]

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

Definition at line 11456 of file json.hpp.

◆ iter_impl() [4/5]

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

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 11506 of file json.hpp.

◆ iter_impl() [5/5]

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

converting constructor

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

Definition at line 11531 of file json.hpp.

Member Function Documentation

◆ key()

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

return the key of an object iterator

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

Definition at line 12078 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 nlohmann::detail::iter_impl< BasicJsonType >::operator!= ( const IterImpl & other) const
inline

comparison: not equal

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

Definition at line 11861 of file json.hpp.

◆ operator*()

template<typename BasicJsonType>
reference nlohmann::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.

Definition at line 11636 of file json.hpp.

Referenced by nlohmann::detail::iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type >::value().

Here is the caller graph for this function:

◆ operator+()

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

add to iterator

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

Definition at line 11978 of file json.hpp.

◆ operator++() [1/2]

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

pre-increment (++it)

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

Definition at line 11733 of file json.hpp.

◆ operator++() [2/2]

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

post-increment (it++)

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

Definition at line 11722 of file json.hpp.

◆ operator+=()

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

add to iterator

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

Definition at line 11932 of file json.hpp.

Referenced by nlohmann::detail::iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type >::operator-=().

Here is the caller graph for this function:

◆ operator-() [1/2]

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

return difference

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

Definition at line 12011 of file json.hpp.

◆ operator-() [2/2]

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

subtract from iterator

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

Definition at line 12000 of file json.hpp.

◆ operator--() [1/2]

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

pre-decrement (–it)

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

Definition at line 11784 of file json.hpp.

◆ operator--() [2/2]

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

post-decrement (it–)

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

Definition at line 11773 of file json.hpp.

◆ operator-=()

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

subtract from iterator

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

Definition at line 11969 of file json.hpp.

◆ operator->()

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

dereference the iterator

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

Definition at line 11680 of file json.hpp.

◆ operator<()

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

comparison: smaller

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

Definition at line 11870 of file json.hpp.

Referenced by nlohmann::detail::iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type >::operator>=().

Here is the caller graph for this function:

◆ operator<=()

template<typename BasicJsonType>
bool nlohmann::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.

Definition at line 11905 of file json.hpp.

Referenced by nlohmann::detail::iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type >::operator>().

Here is the caller graph for this function:

◆ operator=() [1/3]

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

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 11516 of file json.hpp.

◆ operator=() [2/3]

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

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 11541 of file json.hpp.

◆ operator=() [3/3]

template<typename BasicJsonType>
iter_impl & nlohmann::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 nlohmann::detail::iter_impl< BasicJsonType >::operator== ( const IterImpl & other) const
inline

comparison: equal

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

Definition at line 11825 of file json.hpp.

Referenced by nlohmann::detail::iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type >::operator!=().

Here is the caller graph for this function:

◆ operator>()

template<typename BasicJsonType>
bool nlohmann::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.

Definition at line 11914 of file json.hpp.

◆ operator>=()

template<typename BasicJsonType>
bool nlohmann::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.

Definition at line 11923 of file json.hpp.

◆ operator[]()

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

access to successor

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

Definition at line 12040 of file json.hpp.

◆ over() [1/2]

template<typename BasicJsonType>
*defines a pointer to the type iterated nlohmann::detail::iter_impl< BasicJsonType >::over ( value_type )

◆ over() [2/2]

template<typename BasicJsonType>
*defines a reference to the type iterated nlohmann::detail::iter_impl< BasicJsonType >::over ( value_type )

◆ set_end()

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

set the iterator past the last value

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

Definition at line 11597 of file json.hpp.

◆ switch()

template<typename BasicJsonType>
nlohmann::detail::iter_impl< BasicJsonType >::switch ( m_object-> m_type)
inline

Definition at line 11557 of file json.hpp.

◆ value()

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

return the value of an iterator

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

Definition at line 12094 of file json.hpp.

◆ 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 11989 of file json.hpp.

Field Documentation

◆ __pad0__

Definition at line 11548 of file json.hpp.

◆ __pad1__

Definition at line 12099 of file json.hpp.

◆ BasicJsonType

template<typename BasicJsonType>
friend nlohmann::detail::iter_impl< BasicJsonType >::BasicJsonType
private

Definition at line 11412 of file json.hpp.

◆ iteration_proxy< iter_impl >

Definition at line 11413 of file json.hpp.

◆ iteration_proxy_value< iter_impl >

Definition at line 11414 of file json.hpp.

◆ m_it

◆ other_iter_impl

template<typename BasicJsonType>
members friend nlohmann::detail::iter_impl< BasicJsonType >::other_iter_impl
private

Definition at line 11411 of file json.hpp.


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