slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
Public 类型 | Public 成员函数 | Public 属性 | Private 类型 | Private 属性 | 友元 | 所有成员列表
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. 更多...

#include <json.hpp>

detail::iter_impl< BasicJsonType > 的协作图:
Collaboration graph
[图例]

Public 类型

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
 defines a pointer to the type iterated over (value_type)
 
using reference
 defines a reference to the type iterated over (value_type)
 

Public 成员函数

 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 属性

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
 

Private 类型

using other_iter_impl = iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>
 the iterator with BasicJsonType of different const-ness
 
using object_t = typename BasicJsonType::object_t
 
using array_t = typename BasicJsonType::array_t
 

Private 属性

friend other_iter_impl
 allow basic_json to access private members
 
friend BasicJsonType
 
friend iteration_proxy< iter_impl >
 
friend iteration_proxy_value< iter_impl >
 

友元

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

详细描述

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.

注解
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).
自从
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)

成员类型定义说明

◆ array_t

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

◆ difference_type

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

a type to represent differences between iterators

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

◆ object_t

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

◆ other_iter_impl

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

the iterator with BasicJsonType of different const-ness

◆ 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

初始值:
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 detail::iter_impl< BasicJsonType >::value_type = typename BasicJsonType::value_type

the type of the values when the iterator is dereferenced

构造及析构函数说明

◆ iter_impl() [1/5]

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

◆ ~iter_impl()

◆ 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)
inlineexplicitnoexcept

constructor for a given JSON instance

参数
[in]objectpointer to a JSON object for this iterator
前置条件
object != nullptr
后置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ iter_impl() [4/5]

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

const copy constructor

注解
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.
参数
[in]otherconst iterator to copy from
注解
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]

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

converting constructor

参数
[in]othernon-const iterator to copy from
注解
It is not checked whether other is initialized.

成员函数说明

◆ key()

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

return the key of an object iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

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

comparison: not equal

前置条件
The iterator is initialized; i.e. m_object != nullptr.
函数调用图:

◆ operator*()

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

return a reference to the value pointed to by the iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator+()

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

add to iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator++() [1/2]

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

pre-increment (++it)

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator++() [2/2]

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

post-increment (it++)

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator+=()

add to iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator-() [1/2]

return difference

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator-() [2/2]

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

subtract from iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator--() [1/2]

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

pre-decrement (–it)

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator--() [2/2]

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

post-decrement (it–)

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator-=()

subtract from iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator->()

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

dereference the iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator<()

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

comparison: smaller

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator<=()

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

comparison: less than or equal

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator=() [1/3]

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

converting assignment

参数
[in]otherconst iterator to copy from
返回
const/non-const iterator
注解
It is not checked whether other is initialized.

◆ operator=() [2/3]

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

converting assignment

参数
[in]othernon-const iterator to copy from
返回
const/non-const iterator
注解
It is not checked whether other is initialized.

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

comparison: equal

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator>()

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

comparison: greater than

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ operator>=()

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

comparison: greater than or equal

前置条件
The iterator is initialized; i.e. m_object != nullptr.
函数调用图:

◆ operator[]()

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

access to successor

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ set_end()

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

set the iterator past the last value

前置条件
The iterator is initialized; i.e. m_object != nullptr.

◆ switch()

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

◆ value()

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

return the value of an iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.
函数调用图:

友元及相关函数文档

◆ operator+

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

addition of distance and iterator

前置条件
The iterator is initialized; i.e. m_object != nullptr.

类成员变量说明

◆ __pad0__

◆ __pad1__

◆ BasicJsonType

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

◆ iteration_proxy< iter_impl >

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

◆ iteration_proxy_value< iter_impl >

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

◆ m_it

the actual iterator of the associated instance

◆ other_iter_impl

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

allow basic_json to access private members


该类的文档由以下文件生成: