Template
|
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>
Public Types | |
using | iterator_category = std::bidirectional_iterator_tag |
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 = 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) | |
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) | |
Public Member Functions | |
iter_impl ()=default | |
~iter_impl ()=default | |
iter_impl (iter_impl &&) noexcept=default | |
iter_impl & | operator= (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_impl & | operator= (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_impl & | operator= (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_impl & | operator++ () |
pre-increment (++it) | |
iter_impl | operator-- (int) & |
post-decrement (it–) | |
iter_impl & | operator-- () |
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_impl & | operator+= (difference_type i) |
add to iterator | |
iter_impl & | operator-= (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
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)
Member Typedef Documentation
◆ difference_type
using detail::iter_impl< BasicJsonType >::difference_type = typename BasicJsonType::difference_type |
◆ iterator_category
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.
◆ pointer
using detail::iter_impl< BasicJsonType >::pointer = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer>::type |
◆ reference
using detail::iter_impl< BasicJsonType >::reference = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference>::type |
◆ value_type
using detail::iter_impl< BasicJsonType >::value_type = typename BasicJsonType::value_type |
Constructor & Destructor Documentation
◆ iter_impl() [1/5]
|
default |
◆ ~iter_impl()
|
default |
◆ iter_impl() [2/5]
|
defaultnoexcept |
◆ iter_impl() [3/5]
|
inlineexplicitnoexcept |
◆ iter_impl() [4/5]
|
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] other const 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
◆ iter_impl() [5/5]
|
inlinenoexcept |
Member Function Documentation
◆ key()
|
inline |
◆ operator!=()
|
inline |
◆ operator*()
|
inline |
◆ operator+()
|
inline |
◆ operator++() [1/2]
|
inline |
◆ operator++() [2/2]
|
inline |
◆ operator+=()
|
inline |
◆ operator-() [1/2]
|
inline |
◆ operator-() [2/2]
|
inline |
◆ operator--() [1/2]
|
inline |
◆ operator--() [2/2]
|
inline |
◆ operator-=()
|
inline |
◆ operator->()
|
inline |
◆ operator<()
|
inline |
◆ operator<=()
|
inline |
◆ operator=() [1/3]
|
inlinenoexcept |
◆ operator=() [2/3]
|
inlinenoexcept |
◆ operator=() [3/3]
|
defaultnoexcept |
◆ operator==()
|
inline |
◆ operator>()
|
inline |
◆ operator>=()
|
inline |
◆ operator[]()
|
inline |
◆ set_end()
|
inlinenoexcept |
◆ switch()
|
inline |
◆ value()
|
inline |
Friends And Related Symbol Documentation
◆ operator+
|
friend |
Member Data Documentation
◆ __pad0__
JSON_PRIVATE_UNLESS_TESTED detail::iter_impl< BasicJsonType >::__pad0__ |
◆ __pad1__
JSON_PRIVATE_UNLESS_TESTED detail::iter_impl< BasicJsonType >::__pad1__ |
◆ m_it
internal_iterator<typename std::remove_const<BasicJsonType>::type> detail::iter_impl< BasicJsonType >::m_it {} |
The documentation for this class was generated from the following file:
- include/nlohmann/json.hpp
Generated by 1.9.8