TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
GenericMemberIterator< Const, Encoding, Allocator > Class Template Reference

(Constant) member iterator for a JSON object value More...

#include <document.h>

Public Types

typedef GenericMemberIterator Iterator
 Iterator type itself. More...
 
typedef GenericMemberIterator
< true, Encoding, Allocator > 
ConstIterator
 Constant iterator type. More...
 
typedef GenericMemberIterator
< false, Encoding, Allocator > 
NonConstIterator
 Non-constant iterator type. More...
 
typedef BaseType::pointer Pointer
 Pointer to (const) GenericMember. More...
 
typedef BaseType::reference Reference
 Reference to (const) GenericMember. More...
 
typedef BaseType::difference_type DifferenceType
 Signed integer type (e.g. ptrdiff_t) More...
 

Public Member Functions

 GenericMemberIterator ()
 Default constructor (singular value) More...
 
 GenericMemberIterator (const NonConstIterator &it)
 Iterator conversions to more const. More...
 
DifferenceType operator- (ConstIterator that) const
 Distance. More...
 
stepping
Iteratoroperator++ ()
 
Iteratoroperator-- ()
 
Iterator operator++ (int)
 
Iterator operator-- (int)
 
increment/decrement
Iterator operator+ (DifferenceType n) const
 
Iterator operator- (DifferenceType n) const
 
Iteratoroperator+= (DifferenceType n)
 
Iteratoroperator-= (DifferenceType n)
 
relations
bool operator== (ConstIterator that) const
 
bool operator!= (ConstIterator that) const
 
bool operator<= (ConstIterator that) const
 
bool operator>= (ConstIterator that) const
 
bool operator< (ConstIterator that) const
 
bool operator> (ConstIterator that) const
 
dereference
Reference operator* () const
 
Pointer operator-> () const
 
Reference operator[] (DifferenceType n) const
 

Private Types

typedef GenericMember
< Encoding, Allocator > 
PlainType
 
typedef
internal::MaybeAddConst< Const,
PlainType >::Type 
ValueType
 
typedef std::iterator
< std::random_access_iterator_tag,
ValueType
BaseType
 

Private Member Functions

 GenericMemberIterator (Pointer p)
 Internal constructor from plain pointer. More...
 

Private Attributes

Pointer ptr_
 raw pointer More...
 

Friends

class GenericValue< Encoding, Allocator >
 
template<bool , typename , typename >
class GenericMemberIterator
 

Detailed Description

template<bool Const, typename Encoding, typename Allocator>
class GenericMemberIterator< Const, Encoding, Allocator >

(Constant) member iterator for a JSON object value

Template Parameters
ConstIs this a constant iterator?
EncodingEncoding of the value. (Even non-string values need to have the same encoding in a document)
AllocatorAllocator type for allocating memory of object, array and string.

This class implements a Random Access Iterator for GenericMember elements of a GenericValue, see ISO/IEC 14882:2003(E) C++ standard, 24.1 [lib.iterator.requirements].

Note
This iterator implementation is mainly intended to avoid implicit conversions from iterator values to NULL, e.g. from GenericValue::FindMember.
Define RAPIDJSON_NOMEMBERITERATORCLASS to fall back to a pointer-based implementation, if your platform doesn't provide the C++ <iterator> header.
See also
GenericMember, GenericValue::MemberIterator, GenericValue::ConstMemberIterator

Member Typedef Documentation

template<bool Const, typename Encoding , typename Allocator >
typedef std::iterator<std::random_access_iterator_tag,ValueType> GenericMemberIterator< Const, Encoding, Allocator >::BaseType
private
template<bool Const, typename Encoding , typename Allocator >
typedef GenericMemberIterator<true,Encoding,Allocator> GenericMemberIterator< Const, Encoding, Allocator >::ConstIterator

Constant iterator type.

template<bool Const, typename Encoding , typename Allocator >
typedef BaseType::difference_type GenericMemberIterator< Const, Encoding, Allocator >::DifferenceType

Signed integer type (e.g. ptrdiff_t)

template<bool Const, typename Encoding , typename Allocator >
typedef GenericMemberIterator GenericMemberIterator< Const, Encoding, Allocator >::Iterator

Iterator type itself.

template<bool Const, typename Encoding , typename Allocator >
typedef GenericMemberIterator<false,Encoding,Allocator> GenericMemberIterator< Const, Encoding, Allocator >::NonConstIterator

Non-constant iterator type.

template<bool Const, typename Encoding , typename Allocator >
typedef GenericMember<Encoding,Allocator> GenericMemberIterator< Const, Encoding, Allocator >::PlainType
private
template<bool Const, typename Encoding , typename Allocator >
typedef BaseType::pointer GenericMemberIterator< Const, Encoding, Allocator >::Pointer

Pointer to (const) GenericMember.

template<bool Const, typename Encoding , typename Allocator >
typedef BaseType::reference GenericMemberIterator< Const, Encoding, Allocator >::Reference

Reference to (const) GenericMember.

template<bool Const, typename Encoding , typename Allocator >
typedef internal::MaybeAddConst<Const,PlainType>::Type GenericMemberIterator< Const, Encoding, Allocator >::ValueType
private

Constructor & Destructor Documentation

template<bool Const, typename Encoding , typename Allocator >
GenericMemberIterator< Const, Encoding, Allocator >::GenericMemberIterator ( )
inline

Default constructor (singular value)

Creates an iterator pointing to no element.

Note
All operations, except for comparisons, are undefined on such values.
139 : ptr_() {}
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
GenericMemberIterator< Const, Encoding, Allocator >::GenericMemberIterator ( const NonConstIterator it)
inline

Iterator conversions to more const.

Parameters
it(Non-const) iterator to copy from

Allows the creation of an iterator from another GenericMemberIterator that is "less const". Especially, creating a non-constant iterator from a constant iterator are disabled:

  • const -> non-const (not ok)
  • const -> const (ok)
  • non-const -> const (ok)
  • non-const -> non-const (ok)
Note
If the Const template parameter is already false, this constructor effectively defines a regular copy-constructor. Otherwise, the copy constructor is implicitly defined.
157 : ptr_(it.ptr_) {}
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
GenericMemberIterator< Const, Encoding, Allocator >::GenericMemberIterator ( Pointer  p)
inlineexplicitprivate

Internal constructor from plain pointer.

198 : ptr_(p) {}
Pointer ptr_
raw pointer
Definition: document.h:200

Member Function Documentation

template<bool Const, typename Encoding , typename Allocator >
bool GenericMemberIterator< Const, Encoding, Allocator >::operator!= ( ConstIterator  that) const
inline
179 { return ptr_ != that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Reference GenericMemberIterator< Const, Encoding, Allocator >::operator* ( ) const
inline
188 { return *ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Iterator GenericMemberIterator< Const, Encoding, Allocator >::operator+ ( DifferenceType  n) const
inline
169 { return Iterator(ptr_+n); }
Pointer ptr_
raw pointer
Definition: document.h:200
GenericMemberIterator Iterator
Iterator type itself.
Definition: document.h:122
template<bool Const, typename Encoding , typename Allocator >
Iterator& GenericMemberIterator< Const, Encoding, Allocator >::operator++ ( )
inline
161 { ++ptr_; return *this; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Iterator GenericMemberIterator< Const, Encoding, Allocator >::operator++ ( int  )
inline
163 { Iterator old(*this); ++ptr_; return old; }
Pointer ptr_
raw pointer
Definition: document.h:200
GenericMemberIterator Iterator
Iterator type itself.
Definition: document.h:122
template<bool Const, typename Encoding , typename Allocator >
Iterator& GenericMemberIterator< Const, Encoding, Allocator >::operator+= ( DifferenceType  n)
inline
172 { ptr_+=n; return *this; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Iterator GenericMemberIterator< Const, Encoding, Allocator >::operator- ( DifferenceType  n) const
inline
170 { return Iterator(ptr_-n); }
Pointer ptr_
raw pointer
Definition: document.h:200
GenericMemberIterator Iterator
Iterator type itself.
Definition: document.h:122
template<bool Const, typename Encoding , typename Allocator >
DifferenceType GenericMemberIterator< Const, Encoding, Allocator >::operator- ( ConstIterator  that) const
inline

Distance.

194 { return ptr_-that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Iterator& GenericMemberIterator< Const, Encoding, Allocator >::operator-- ( )
inline
162 { --ptr_; return *this; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Iterator GenericMemberIterator< Const, Encoding, Allocator >::operator-- ( int  )
inline
164 { Iterator old(*this); --ptr_; return old; }
Pointer ptr_
raw pointer
Definition: document.h:200
GenericMemberIterator Iterator
Iterator type itself.
Definition: document.h:122
template<bool Const, typename Encoding , typename Allocator >
Iterator& GenericMemberIterator< Const, Encoding, Allocator >::operator-= ( DifferenceType  n)
inline
173 { ptr_-=n; return *this; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Pointer GenericMemberIterator< Const, Encoding, Allocator >::operator-> ( ) const
inline
189 { return ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
bool GenericMemberIterator< Const, Encoding, Allocator >::operator< ( ConstIterator  that) const
inline
182 { return ptr_ < that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
bool GenericMemberIterator< Const, Encoding, Allocator >::operator<= ( ConstIterator  that) const
inline
180 { return ptr_ <= that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
bool GenericMemberIterator< Const, Encoding, Allocator >::operator== ( ConstIterator  that) const
inline
178 { return ptr_ == that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
bool GenericMemberIterator< Const, Encoding, Allocator >::operator> ( ConstIterator  that) const
inline
183 { return ptr_ > that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
bool GenericMemberIterator< Const, Encoding, Allocator >::operator>= ( ConstIterator  that) const
inline
181 { return ptr_ >= that.ptr_; }
Pointer ptr_
raw pointer
Definition: document.h:200
template<bool Const, typename Encoding , typename Allocator >
Reference GenericMemberIterator< Const, Encoding, Allocator >::operator[] ( DifferenceType  n) const
inline
190 { return ptr_[n]; }
Pointer ptr_
raw pointer
Definition: document.h:200

Friends And Related Function Documentation

template<bool Const, typename Encoding , typename Allocator >
template<bool , typename , typename >
friend class GenericMemberIterator
friend
template<bool Const, typename Encoding , typename Allocator >
friend class GenericValue< Encoding, Allocator >
friend

Member Data Documentation

template<bool Const, typename Encoding , typename Allocator >
Pointer GenericMemberIterator< Const, Encoding, Allocator >::ptr_
private

raw pointer


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