JSON Voorhees
Killer JSON for C++
Loading...
Searching...
No Matches
jsonv::value::basic_object_iterator< TValue, TMember > Struct Template Reference

The base iterator type for iterating over object types. More...

#include <jsonv/value.hpp>

Classes

struct  pointer
 What operator-> returns: it holds the reference, so iter->first and iter->second work. More...
 

Public Types

using iterator_concept = std::random_access_iterator_tag
 What this models in C++20 terms: a random-access iterator, whose reference may be a proxy.
 
using iterator_category = std::random_access_iterator_tag
 What this gives the functions which dispatch on the category.
 
using value_type = object_value_type
 
using difference_type = std::ptrdiff_t
 
using reference = basic_object_reference< TValue >
 

Public Member Functions

template<typename UValue , typename UMember , typename = std::enable_if_t< !std::is_same_v<UMember, TMember> && std::is_convertible_v<UMember*, TMember*> >>
 basic_object_iterator (const basic_object_iterator< UValue, UMember > &source) noexcept
 This allows conversion from an object_iterator to a const_object_iterator.
 
basic_object_iterator & operator++ () noexcept
 
basic_object_iterator operator++ (int) noexcept
 
basic_object_iterator & operator-- () noexcept
 
basic_object_iterator operator-- (int) noexcept
 
basic_object_iterator & operator+= (difference_type n) noexcept
 
basic_object_iterator & operator-= (difference_type n) noexcept
 
basic_object_iterator operator+ (difference_type n) const noexcept
 
basic_object_iterator operator- (difference_type n) const noexcept
 
template<typename UValue , typename UMember >
difference_type operator- (const basic_object_iterator< UValue, UMember > &other) const noexcept
 
template<typename UValue , typename UMember >
bool operator== (const basic_object_iterator< UValue, UMember > &other) const noexcept
 
template<typename UValue , typename UMember >
auto operator<=> (const basic_object_iterator< UValue, UMember > &other) const noexcept
 
reference operator* () const noexcept
 
pointer operator-> () const noexcept
 
reference operator[] (difference_type n) const noexcept
 

Friends

class value
 
basic_object_iterator operator+ (difference_type n, const basic_object_iterator &iter) noexcept
 

Detailed Description

template<typename TValue, typename TMember>
struct jsonv::value::basic_object_iterator< TValue, TMember >

The base iterator type for iterating over object types.

It is a random-access iterator over the members of an object, which are kept sorted by key, and dereferences to a basic_object_reference. Like std::vector<bool>::iterator, it gives std::random_access_iterator_tag as its iterator_category although its reference is a proxy: the functions which dispatch on the category, like std::prev and std::advance, need it to step backward or jump.

Like the iterators of a std::vector, these are invalidated by inserting into or erasing from the object.

Definition at line 415 of file value.hpp.

Member Typedef Documentation

◆ difference_type

template<typename TValue , typename TMember >
using jsonv::value::basic_object_iterator< TValue, TMember >::difference_type = std::ptrdiff_t

Definition at line 424 of file value.hpp.

◆ iterator_category

template<typename TValue , typename TMember >
using jsonv::value::basic_object_iterator< TValue, TMember >::iterator_category = std::random_access_iterator_tag

What this gives the functions which dispatch on the category.

See also
basic_object_iterator

Definition at line 422 of file value.hpp.

◆ iterator_concept

template<typename TValue , typename TMember >
using jsonv::value::basic_object_iterator< TValue, TMember >::iterator_concept = std::random_access_iterator_tag

What this models in C++20 terms: a random-access iterator, whose reference may be a proxy.

Definition at line 419 of file value.hpp.

◆ reference

template<typename TValue , typename TMember >
using jsonv::value::basic_object_iterator< TValue, TMember >::reference = basic_object_reference<TValue>

Definition at line 425 of file value.hpp.

◆ value_type

template<typename TValue , typename TMember >
using jsonv::value::basic_object_iterator< TValue, TMember >::value_type = object_value_type

Definition at line 423 of file value.hpp.

Constructor & Destructor Documentation

◆ basic_object_iterator() [1/2]

template<typename TValue , typename TMember >
jsonv::value::basic_object_iterator< TValue, TMember >::basic_object_iterator ( )
inlinenoexcept

Definition at line 441 of file value.hpp.

◆ basic_object_iterator() [2/2]

template<typename TValue , typename TMember >
template<typename UValue , typename UMember , typename = std::enable_if_t< !std::is_same_v<UMember, TMember> && std::is_convertible_v<UMember*, TMember*> >>
jsonv::value::basic_object_iterator< TValue, TMember >::basic_object_iterator ( const basic_object_iterator< UValue, UMember > &  source)
inlinenoexcept

This allows conversion from an object_iterator to a const_object_iterator.

Definition at line 452 of file value.hpp.

Member Function Documentation

◆ operator*()

template<typename TValue , typename TMember >
reference jsonv::value::basic_object_iterator< TValue, TMember >::operator* ( ) const
inlinenoexcept

Definition at line 534 of file value.hpp.

◆ operator+()

template<typename TValue , typename TMember >
basic_object_iterator jsonv::value::basic_object_iterator< TValue, TMember >::operator+ ( difference_type  n) const
inlinenoexcept

Definition at line 495 of file value.hpp.

◆ operator++() [1/2]

template<typename TValue , typename TMember >
basic_object_iterator & jsonv::value::basic_object_iterator< TValue, TMember >::operator++ ( )
inlinenoexcept

Definition at line 456 of file value.hpp.

◆ operator++() [2/2]

template<typename TValue , typename TMember >
basic_object_iterator jsonv::value::basic_object_iterator< TValue, TMember >::operator++ ( int  )
inlinenoexcept

Definition at line 462 of file value.hpp.

◆ operator+=()

template<typename TValue , typename TMember >
basic_object_iterator & jsonv::value::basic_object_iterator< TValue, TMember >::operator+= ( difference_type  n)
inlinenoexcept

Definition at line 482 of file value.hpp.

◆ operator-() [1/2]

template<typename TValue , typename TMember >
template<typename UValue , typename UMember >
difference_type jsonv::value::basic_object_iterator< TValue, TMember >::operator- ( const basic_object_iterator< UValue, UMember > &  other) const
inlinenoexcept

Definition at line 514 of file value.hpp.

◆ operator-() [2/2]

template<typename TValue , typename TMember >
basic_object_iterator jsonv::value::basic_object_iterator< TValue, TMember >::operator- ( difference_type  n) const
inlinenoexcept

Definition at line 507 of file value.hpp.

◆ operator--() [1/2]

template<typename TValue , typename TMember >
basic_object_iterator & jsonv::value::basic_object_iterator< TValue, TMember >::operator-- ( )
inlinenoexcept

Definition at line 469 of file value.hpp.

◆ operator--() [2/2]

template<typename TValue , typename TMember >
basic_object_iterator jsonv::value::basic_object_iterator< TValue, TMember >::operator-- ( int  )
inlinenoexcept

Definition at line 475 of file value.hpp.

◆ operator-=()

template<typename TValue , typename TMember >
basic_object_iterator & jsonv::value::basic_object_iterator< TValue, TMember >::operator-= ( difference_type  n)
inlinenoexcept

Definition at line 488 of file value.hpp.

◆ operator->()

template<typename TValue , typename TMember >
pointer jsonv::value::basic_object_iterator< TValue, TMember >::operator-> ( ) const
inlinenoexcept

Definition at line 540 of file value.hpp.

◆ operator<=>()

template<typename TValue , typename TMember >
template<typename UValue , typename UMember >
auto jsonv::value::basic_object_iterator< TValue, TMember >::operator<=> ( const basic_object_iterator< UValue, UMember > &  other) const
inlinenoexcept

Definition at line 528 of file value.hpp.

◆ operator==()

template<typename TValue , typename TMember >
template<typename UValue , typename UMember >
bool jsonv::value::basic_object_iterator< TValue, TMember >::operator== ( const basic_object_iterator< UValue, UMember > &  other) const
inlinenoexcept

Definition at line 521 of file value.hpp.

◆ operator[]()

template<typename TValue , typename TMember >
reference jsonv::value::basic_object_iterator< TValue, TMember >::operator[] ( difference_type  n) const
inlinenoexcept

Definition at line 546 of file value.hpp.

Friends And Related Symbol Documentation

◆ basic_object_iterator

template<typename TValue , typename TMember >
template<typename UValue , typename UMember >
friend struct basic_object_iterator
friend

Definition at line 553 of file value.hpp.

◆ operator+

template<typename TValue , typename TMember >
basic_object_iterator operator+ ( difference_type  n,
const basic_object_iterator< TValue, TMember > &  iter 
)
friend

Definition at line 501 of file value.hpp.

◆ value

template<typename TValue , typename TMember >
friend class value
friend

Definition at line 555 of file value.hpp.


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