Electroneum
Loading...
Searching...
No Matches
pointer.h File Reference
#include "document.h"
#include "internal/itoa.h"
Include dependency graph for pointer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  GenericPointer< ValueType, Allocator >
 Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. More...
struct  GenericPointer< ValueType, Allocator >::Token
 A token is the basic units of internal representation. More...

Typedefs

typedef GenericPointer< ValuePointer
 GenericPointer for Value (UTF-8, default allocator).

Enumerations

enum  PointerParseErrorCode {
  kPointerParseErrorNone = 0 , kPointerParseErrorTokenMustBeginWithSolidus , kPointerParseErrorInvalidEscape , kPointerParseErrorInvalidPercentEncoding ,
  kPointerParseErrorCharacterMustPercentEncode
}
 Error code of parsing. More...

Helper functions for GenericPointer

const GenericPointer< typename T::ValueType > & pointer
const GenericPointer< typename T::ValueType > T2 defaultValue
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
const CharType(& source )[N]
const GenericPointer< typename T::ValueType > T2 value
template<typename T>
T::ValueType & CreateValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N>
T::ValueType & CreateValueByPointer (T &root, const CharType(&source)[N], typename T::AllocatorType &a)
template<typename DocumentType>
DocumentType::ValueType & CreateValueByPointer (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer)
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & CreateValueByPointer (DocumentType &document, const CharType(&source)[N])
template<typename T>
T::ValueType * GetValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer, size_t *unresolvedTokenIndex=0)
template<typename T>
const T::ValueType * GetValueByPointer (const T &root, const GenericPointer< typename T::ValueType > &pointer, size_t *unresolvedTokenIndex=0)
template<typename T, typename CharType, size_t N>
T::ValueType * GetValueByPointer (T &root, const CharType(&source)[N], size_t *unresolvedTokenIndex=0)
template<typename T, typename CharType, size_t N>
const T::ValueType * GetValueByPointer (const T &root, const CharType(&source)[N], size_t *unresolvedTokenIndex=0)
template<typename T>
T::ValueType & GetValueByPointerWithDefault (T &root, const GenericPointer< typename T::ValueType > &pointer, const typename T::ValueType &defaultValue, typename T::AllocatorType &a)
template<typename T>
T::ValueType & GetValueByPointerWithDefault (T &root, const GenericPointer< typename T::ValueType > &pointer, const typename T::Ch *defaultValue, typename T::AllocatorType &a)
template<typename T, typename T2>
 RAPIDJSON_DISABLEIF_RETURN ((internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >),(typename T::ValueType &)) GetValueByPointerWithDefault(T &root
template<typename T, typename CharType, size_t N>
T::ValueType & GetValueByPointerWithDefault (T &root, const CharType(&source)[N], const typename T::ValueType &defaultValue, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N>
T::ValueType & GetValueByPointerWithDefault (T &root, const CharType(&source)[N], const typename T::Ch *defaultValue, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N, typename T2>
 RAPIDJSON_DISABLEIF_RETURN ((internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >),(typename T::ValueType &)) GetValueByPointerWithDefault(T &root
template<typename DocumentType>
DocumentType::ValueType & GetValueByPointerWithDefault (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer, const typename DocumentType::ValueType &defaultValue)
template<typename DocumentType>
DocumentType::ValueType & GetValueByPointerWithDefault (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer, const typename DocumentType::Ch *defaultValue)
template<typename DocumentType, typename T2>
 RAPIDJSON_DISABLEIF_RETURN ((internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >),(typename DocumentType::ValueType &)) GetValueByPointerWithDefault(DocumentType &document
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & GetValueByPointerWithDefault (DocumentType &document, const CharType(&source)[N], const typename DocumentType::ValueType &defaultValue)
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & GetValueByPointerWithDefault (DocumentType &document, const CharType(&source)[N], const typename DocumentType::Ch *defaultValue)
template<typename DocumentType, typename CharType, size_t N, typename T2>
 RAPIDJSON_DISABLEIF_RETURN ((internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >),(typename DocumentType::ValueType &)) GetValueByPointerWithDefault(DocumentType &document
template<typename T>
T::ValueType & SetValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer, typename T::ValueType &value, typename T::AllocatorType &a)
template<typename T>
T::ValueType & SetValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer, const typename T::ValueType &value, typename T::AllocatorType &a)
template<typename T>
T::ValueType & SetValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer, const typename T::Ch *value, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N>
T::ValueType & SetValueByPointer (T &root, const CharType(&source)[N], typename T::ValueType &value, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N>
T::ValueType & SetValueByPointer (T &root, const CharType(&source)[N], const typename T::ValueType &value, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N>
T::ValueType & SetValueByPointer (T &root, const CharType(&source)[N], const typename T::Ch *value, typename T::AllocatorType &a)
template<typename DocumentType>
DocumentType::ValueType & SetValueByPointer (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer, typename DocumentType::ValueType &value)
template<typename DocumentType>
DocumentType::ValueType & SetValueByPointer (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer, const typename DocumentType::ValueType &value)
template<typename DocumentType>
DocumentType::ValueType & SetValueByPointer (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer, const typename DocumentType::Ch *value)
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SetValueByPointer (DocumentType &document, const CharType(&source)[N], typename DocumentType::ValueType &value)
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SetValueByPointer (DocumentType &document, const CharType(&source)[N], const typename DocumentType::ValueType &value)
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SetValueByPointer (DocumentType &document, const CharType(&source)[N], const typename DocumentType::Ch *value)
template<typename T>
T::ValueType & SwapValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer, typename T::ValueType &value, typename T::AllocatorType &a)
template<typename T, typename CharType, size_t N>
T::ValueType & SwapValueByPointer (T &root, const CharType(&source)[N], typename T::ValueType &value, typename T::AllocatorType &a)
template<typename DocumentType>
DocumentType::ValueType & SwapValueByPointer (DocumentType &document, const GenericPointer< typename DocumentType::ValueType > &pointer, typename DocumentType::ValueType &value)
template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SwapValueByPointer (DocumentType &document, const CharType(&source)[N], typename DocumentType::ValueType &value)
template<typename T>
bool EraseValueByPointer (T &root, const GenericPointer< typename T::ValueType > &pointer)
template<typename T, typename CharType, size_t N>
bool EraseValueByPointer (T &root, const CharType(&source)[N])

Typedef Documentation

◆ Pointer

GenericPointer for Value (UTF-8, default allocator).

Definition at line 1052 of file pointer.h.

Function Documentation

◆ CreateValueByPointer() [1/4]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & CreateValueByPointer ( DocumentType & document,
const CharType(&) source[N] )

Definition at line 1077 of file pointer.h.

1077 {
1078 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Create(document);
1079}
Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator.
Definition pointer.h:79
const CharType(& source)[N]
Definition pointer.h:1147

◆ CreateValueByPointer() [2/4]

template<typename DocumentType>
DocumentType::ValueType & CreateValueByPointer ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer )

Definition at line 1072 of file pointer.h.

1072 {
1073 return pointer.Create(document);
1074}
const GenericPointer< typename T::ValueType > & pointer
Definition pointer.h:1124

◆ CreateValueByPointer() [3/4]

template<typename T, typename CharType, size_t N>
T::ValueType & CreateValueByPointer ( T & root,
const CharType(&) source[N],
typename T::AllocatorType & a )

Definition at line 1065 of file pointer.h.

1065 {
1066 return GenericPointer<typename T::ValueType>(source, N - 1).Create(root, a);
1067}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1124

◆ CreateValueByPointer() [4/4]

template<typename T>
T::ValueType & CreateValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
typename T::AllocatorType & a )

Definition at line 1060 of file pointer.h.

1060 {
1061 return pointer.Create(root, a);
1062}
Here is the caller graph for this function:

◆ EraseValueByPointer() [1/2]

template<typename T, typename CharType, size_t N>
bool EraseValueByPointer ( T & root,
const CharType(&) source[N] )

Definition at line 1345 of file pointer.h.

1345 {
1347}
bool Erase(ValueType &root) const
Erase a value in a subtree.
Definition pointer.h:714
Here is the call graph for this function:

◆ EraseValueByPointer() [2/2]

template<typename T>
bool EraseValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer )

Definition at line 1340 of file pointer.h.

1340 {
1341 return pointer.Erase(root);
1342}
Here is the caller graph for this function:

◆ GetValueByPointer() [1/4]

template<typename T, typename CharType, size_t N>
const T::ValueType * GetValueByPointer ( const T & root,
const CharType(&) source[N],
size_t * unresolvedTokenIndex = 0 )

Definition at line 1099 of file pointer.h.

1099 {
1100 return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex);
1101}

◆ GetValueByPointer() [2/4]

template<typename T>
const T::ValueType * GetValueByPointer ( const T & root,
const GenericPointer< typename T::ValueType > & pointer,
size_t * unresolvedTokenIndex = 0 )

Definition at line 1089 of file pointer.h.

1089 {
1090 return pointer.Get(root, unresolvedTokenIndex);
1091}

◆ GetValueByPointer() [3/4]

template<typename T, typename CharType, size_t N>
T::ValueType * GetValueByPointer ( T & root,
const CharType(&) source[N],
size_t * unresolvedTokenIndex = 0 )

Definition at line 1094 of file pointer.h.

1094 {
1095 return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex);
1096}

◆ GetValueByPointer() [4/4]

template<typename T>
T::ValueType * GetValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
size_t * unresolvedTokenIndex = 0 )

Definition at line 1084 of file pointer.h.

1084 {
1085 return pointer.Get(root, unresolvedTokenIndex);
1086}
Here is the caller graph for this function:

◆ GetValueByPointerWithDefault() [1/8]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & GetValueByPointerWithDefault ( DocumentType & document,
const CharType(&) source[N],
const typename DocumentType::Ch * defaultValue )

Definition at line 1182 of file pointer.h.

1182 {
1183 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue);
1184}
const GenericPointer< typename T::ValueType > T2 defaultValue
Definition pointer.h:1124

◆ GetValueByPointerWithDefault() [2/8]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & GetValueByPointerWithDefault ( DocumentType & document,
const CharType(&) source[N],
const typename DocumentType::ValueType & defaultValue )

Definition at line 1177 of file pointer.h.

1177 {
1178 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue);
1179}

◆ GetValueByPointerWithDefault() [3/8]

template<typename DocumentType>
DocumentType::ValueType & GetValueByPointerWithDefault ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer,
const typename DocumentType::Ch * defaultValue )

Definition at line 1159 of file pointer.h.

1159 {
1160 return pointer.GetWithDefault(document, defaultValue);
1161}

◆ GetValueByPointerWithDefault() [4/8]

template<typename DocumentType>
DocumentType::ValueType & GetValueByPointerWithDefault ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer,
const typename DocumentType::ValueType & defaultValue )

Definition at line 1154 of file pointer.h.

1154 {
1155 return pointer.GetWithDefault(document, defaultValue);
1156}

◆ GetValueByPointerWithDefault() [5/8]

template<typename T, typename CharType, size_t N>
T::ValueType & GetValueByPointerWithDefault ( T & root,
const CharType(&) source[N],
const typename T::Ch * defaultValue,
typename T::AllocatorType & a )

Definition at line 1134 of file pointer.h.

1134 {
1135 return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a);
1136}

◆ GetValueByPointerWithDefault() [6/8]

template<typename T, typename CharType, size_t N>
T::ValueType & GetValueByPointerWithDefault ( T & root,
const CharType(&) source[N],
const typename T::ValueType & defaultValue,
typename T::AllocatorType & a )

Definition at line 1129 of file pointer.h.

1129 {
1130 return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a);
1131}

◆ GetValueByPointerWithDefault() [7/8]

template<typename T>
T::ValueType & GetValueByPointerWithDefault ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
const typename T::Ch * defaultValue,
typename T::AllocatorType & a )

Definition at line 1111 of file pointer.h.

1111 {
1112 return pointer.GetWithDefault(root, defaultValue, a);
1113}

◆ GetValueByPointerWithDefault() [8/8]

template<typename T>
T::ValueType & GetValueByPointerWithDefault ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
const typename T::ValueType & defaultValue,
typename T::AllocatorType & a )

Definition at line 1106 of file pointer.h.

1106 {
1107 return pointer.GetWithDefault(root, defaultValue, a);
1108}
Here is the caller graph for this function:

◆ RAPIDJSON_DISABLEIF_RETURN() [1/4]

template<typename DocumentType, typename CharType, size_t N, typename T2>
RAPIDJSON_DISABLEIF_RETURN ( (internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >) ,
(typename DocumentType::ValueType &)  ) &

◆ RAPIDJSON_DISABLEIF_RETURN() [2/4]

template<typename DocumentType, typename T2>
RAPIDJSON_DISABLEIF_RETURN ( (internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >) ,
(typename DocumentType::ValueType &)  ) &

◆ RAPIDJSON_DISABLEIF_RETURN() [3/4]

template<typename T, typename CharType, size_t N, typename T2>
RAPIDJSON_DISABLEIF_RETURN ( (internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >) ,
(typename T::ValueType &)  ) &

◆ RAPIDJSON_DISABLEIF_RETURN() [4/4]

template<typename T, typename T2>
RAPIDJSON_DISABLEIF_RETURN ( (internal::OrExpr< internal::IsPointer< T2 >, internal::IsGenericValue< T2 > >) ,
(typename T::ValueType &)  ) &

◆ SetValueByPointer() [1/12]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SetValueByPointer ( DocumentType & document,
const CharType(&) source[N],
const typename DocumentType::Ch * value )

Definition at line 1298 of file pointer.h.

1298 {
1300}
ValueType & Set(ValueType &root, ValueType &value, typename ValueType::AllocatorType &allocator) const
Set a value in a subtree, with move semantics.
Definition pointer.h:613
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225
Here is the call graph for this function:

◆ SetValueByPointer() [2/12]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SetValueByPointer ( DocumentType & document,
const CharType(&) source[N],
const typename DocumentType::ValueType & value )

Definition at line 1293 of file pointer.h.

1293 {
1295}
Here is the call graph for this function:

◆ SetValueByPointer() [3/12]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SetValueByPointer ( DocumentType & document,
const CharType(&) source[N],
typename DocumentType::ValueType & value )

Definition at line 1288 of file pointer.h.

1288 {
1290}
Here is the call graph for this function:

◆ SetValueByPointer() [4/12]

template<typename DocumentType>
DocumentType::ValueType & SetValueByPointer ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer,
const typename DocumentType::Ch * value )

Definition at line 1270 of file pointer.h.

1270 {
1271 return pointer.Set(document, value);
1272}

◆ SetValueByPointer() [5/12]

template<typename DocumentType>
DocumentType::ValueType & SetValueByPointer ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer,
const typename DocumentType::ValueType & value )

Definition at line 1265 of file pointer.h.

1265 {
1266 return pointer.Set(document, value);
1267}

◆ SetValueByPointer() [6/12]

template<typename DocumentType>
DocumentType::ValueType & SetValueByPointer ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer,
typename DocumentType::ValueType & value )

Definition at line 1260 of file pointer.h.

1260 {
1261 return pointer.Set(document, value);
1262}

◆ SetValueByPointer() [7/12]

template<typename T, typename CharType, size_t N>
T::ValueType & SetValueByPointer ( T & root,
const CharType(&) source[N],
const typename T::Ch * value,
typename T::AllocatorType & a )

Definition at line 1240 of file pointer.h.

1240 {
1242}
Here is the call graph for this function:

◆ SetValueByPointer() [8/12]

template<typename T, typename CharType, size_t N>
T::ValueType & SetValueByPointer ( T & root,
const CharType(&) source[N],
const typename T::ValueType & value,
typename T::AllocatorType & a )

Definition at line 1235 of file pointer.h.

1235 {
1237}
Here is the call graph for this function:

◆ SetValueByPointer() [9/12]

template<typename T, typename CharType, size_t N>
T::ValueType & SetValueByPointer ( T & root,
const CharType(&) source[N],
typename T::ValueType & value,
typename T::AllocatorType & a )

Definition at line 1230 of file pointer.h.

1230 {
1232}
Here is the call graph for this function:

◆ SetValueByPointer() [10/12]

template<typename T>
T::ValueType & SetValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
const typename T::Ch * value,
typename T::AllocatorType & a )

Definition at line 1212 of file pointer.h.

1212 {
1213 return pointer.Set(root, value, a);
1214}

◆ SetValueByPointer() [11/12]

template<typename T>
T::ValueType & SetValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
const typename T::ValueType & value,
typename T::AllocatorType & a )

Definition at line 1207 of file pointer.h.

1207 {
1208 return pointer.Set(root, value, a);
1209}

◆ SetValueByPointer() [12/12]

template<typename T>
T::ValueType & SetValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
typename T::ValueType & value,
typename T::AllocatorType & a )

Definition at line 1202 of file pointer.h.

1202 {
1203 return pointer.Set(root, value, a);
1204}
Here is the caller graph for this function:

◆ SwapValueByPointer() [1/4]

template<typename DocumentType, typename CharType, size_t N>
DocumentType::ValueType & SwapValueByPointer ( DocumentType & document,
const CharType(&) source[N],
typename DocumentType::ValueType & value )

Definition at line 1333 of file pointer.h.

1333 {
1335}
ValueType & Swap(ValueType &root, ValueType &value, typename ValueType::AllocatorType &allocator) const
Swap a value with a value in a subtree.
Definition pointer.h:695
Here is the call graph for this function:

◆ SwapValueByPointer() [2/4]

template<typename DocumentType>
DocumentType::ValueType & SwapValueByPointer ( DocumentType & document,
const GenericPointer< typename DocumentType::ValueType > & pointer,
typename DocumentType::ValueType & value )

Definition at line 1328 of file pointer.h.

1328 {
1329 return pointer.Swap(document, value);
1330}

◆ SwapValueByPointer() [3/4]

template<typename T, typename CharType, size_t N>
T::ValueType & SwapValueByPointer ( T & root,
const CharType(&) source[N],
typename T::ValueType & value,
typename T::AllocatorType & a )

Definition at line 1323 of file pointer.h.

1323 {
1325}
Here is the call graph for this function:

◆ SwapValueByPointer() [4/4]

template<typename T>
T::ValueType & SwapValueByPointer ( T & root,
const GenericPointer< typename T::ValueType > & pointer,
typename T::ValueType & value,
typename T::AllocatorType & a )

Definition at line 1318 of file pointer.h.

1318 {
1319 return pointer.Swap(root, value, a);
1320}
Here is the caller graph for this function:

Variable Documentation

◆ a

const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Initial value:
{
return pointer.GetWithDefault(root, defaultValue, a)

Definition at line 1124 of file pointer.h.

◆ defaultValue

const GenericPointer< typename DocumentType::ValueType > T2 defaultValue
Initial value:
{
return pointer.GetWithDefault(document, defaultValue)

Definition at line 1124 of file pointer.h.

◆ pointer

const GenericPointer< typename DocumentType::ValueType > & pointer

Definition at line 1124 of file pointer.h.

◆ source

const CharType(& source

Definition at line 1147 of file pointer.h.

◆ value

const GenericPointer< typename DocumentType::ValueType > T2 value
Initial value:
{
return pointer.Set(document, value)

Definition at line 1225 of file pointer.h.