Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MaximInterface
GenericPointer< ValueType, Allocator > Class Template Reference
Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. More...
#include <pointer.h>
Data Structures | |
| class | PercentDecodeStream |
| A helper stream for decoding a percent-encoded sequence into code unit. More... | |
| class | PercentEncodeStream |
| A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence. More... | |
| struct | Token |
| A token is the basic units of internal representation. More... | |
Public Types | |
| typedef ValueType::EncodingType | EncodingType |
| Encoding type from Value. | |
| typedef ValueType::Ch | Ch |
| Character type from Value. | |
Public Member Functions | |
Constructors and destructor. | |
| GenericPointer (Allocator *allocator=0) | |
| Default constructor. | |
| GenericPointer (const Ch *source, Allocator *allocator=0) | |
| Constructor that parses a string or URI fragment representation. | |
| GenericPointer (const std::basic_string< Ch > &source, Allocator *allocator=0) | |
| Constructor that parses a string or URI fragment representation. | |
| GenericPointer (const Ch *source, size_t length, Allocator *allocator=0) | |
| Constructor that parses a string or URI fragment representation, with length of the source string. | |
| GenericPointer (const Token *tokens, size_t tokenCount) | |
| Constructor with user-supplied tokens. | |
| GenericPointer (const GenericPointer &rhs, Allocator *allocator=0) | |
| Copy constructor. | |
| ~GenericPointer () | |
| Destructor. | |
| GenericPointer & | operator= (const GenericPointer &rhs) |
| Assignment operator. | |
Append token | |
| GenericPointer | Append (const Token &token, Allocator *allocator=0) const |
| Append a token and return a new Pointer. | |
| GenericPointer | Append (const Ch *name, SizeType length, Allocator *allocator=0) const |
| Append a name token with length, and return a new Pointer. | |
| template<typename T > | |
| RAPIDJSON_DISABLEIF_RETURN ((internal::NotExpr< internal::IsSame< typename internal::RemoveConst< T >::Type, Ch > >),(GenericPointer)) Append(T *name | |
| Append a name token without length, and return a new Pointer. | |
Data Fields | |
| Allocator * | allocator_ |
| The current allocator. It is either user-supplied or equal to ownAllocator_. | |
| Allocator * | ownAllocator_ |
| Allocator owned by this Pointer. | |
| Ch * | nameBuffer_ |
| A buffer containing all names in tokens. | |
| Token * | tokens_ |
| A list of tokens. | |
| size_t | tokenCount_ |
| Number of tokens in tokens_. | |
| size_t | parseErrorOffset_ |
| Offset in code unit when parsing fail. | |
| PointerParseErrorCode | parseErrorCode_ |
| Parsing error code. | |
Detailed Description
template<typename ValueType, typename Allocator = CrtAllocator>
class GenericPointer< ValueType, Allocator >
Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator.
This class implements RFC 6901 "JavaScript Object Notation (JSON) Pointer" (https://tools.ietf.org/html/rfc6901).
A JSON pointer is for identifying a specific value in a JSON document (GenericDocument). It can simplify coding of DOM tree manipulation, because it can access multiple-level depth of DOM tree with single API call.
After it parses a string representation (e.g. "/foo/0" or URI fragment representation (e.g. "#/foo/0") into its internal representation (tokens), it can be used to resolve a specific value in multiple documents, or sub-tree of documents.
Contrary to GenericValue, Pointer can be copy constructed and copy assigned. Apart from assignment, a Pointer cannot be modified after construction.
Although Pointer is very convenient, please aware that constructing Pointer involves parsing and dynamic memory allocation. A special constructor with user- supplied tokens eliminates these.
GenericPointer depends on GenericDocument and GenericValue.
- Template Parameters:
-
ValueType The value type of the DOM tree. E.g. GenericValue<UTF8<> > Allocator The allocator type for allocating memory for internal representation.
- Note:
- GenericPointer uses same encoding of ValueType. However, Allocator of GenericPointer is independent of Allocator of Value.
Definition at line 81 of file pointer.h.
Member Typedef Documentation
| typedef ValueType::EncodingType EncodingType |
Constructor & Destructor Documentation
| GenericPointer | ( | Allocator * | allocator = 0 ) |
| GenericPointer | ( | const Ch * | source, |
| Allocator * | allocator = 0 |
||
| ) | [explicit] |
Constructor that parses a string or URI fragment representation.
- Parameters:
-
source A null-terminated, string or URI fragment representation of JSON pointer. allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
| GenericPointer | ( | const std::basic_string< Ch > & | source, |
| Allocator * | allocator = 0 |
||
| ) | [explicit] |
Constructor that parses a string or URI fragment representation.
- Parameters:
-
source A string or URI fragment representation of JSON pointer. allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
- Note:
- Requires the definition of the preprocessor symbol RAPIDJSON_HAS_STDSTRING.
| GenericPointer | ( | const Ch * | source, |
| size_t | length, | ||
| Allocator * | allocator = 0 |
||
| ) |
Constructor that parses a string or URI fragment representation, with length of the source string.
- Parameters:
-
source A string or URI fragment representation of JSON pointer. length Length of source. allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
- Note:
- Slightly faster than the overload without length.
| GenericPointer | ( | const Token * | tokens, |
| size_t | tokenCount | ||
| ) |
Constructor with user-supplied tokens.
This constructor let user supplies const array of tokens. This prevents the parsing process and eliminates allocation. This is preferred for memory constrained environments.
- Parameters:
-
tokens An constant array of tokens representing the JSON pointer. tokenCount Number of tokens.
Example
#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex } #define INDEX(i) { #i, sizeof(#i) - 1, i } static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(123) }; static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); // Equivalent to static const Pointer p("/foo/123"); #undef NAME #undef INDEX
| GenericPointer | ( | const GenericPointer< ValueType, Allocator > & | rhs, |
| Allocator * | allocator = 0 |
||
| ) |
| ~GenericPointer | ( | ) |
Member Function Documentation
| GenericPointer Append | ( | const Token & | token, |
| Allocator * | allocator = 0 |
||
| ) | const |
| GenericPointer Append | ( | const Ch * | name, |
| SizeType | length, | ||
| Allocator * | allocator = 0 |
||
| ) | const |
| GenericPointer& operator= | ( | const GenericPointer< ValueType, Allocator > & | rhs ) |
| RAPIDJSON_DISABLEIF_RETURN | ( | (internal::NotExpr< internal::IsSame< typename internal::RemoveConst< T >::Type, Ch > >) | , |
| (GenericPointer< ValueType, Allocator >) | |||
| ) |
Append a name token without length, and return a new Pointer.
- Parameters:
-
name Name (const Ch*) to be appended. allocator Allocator for the newly return Pointer.
- Returns:
- A new Pointer with appended token.
Field Documentation
| Allocator* allocator_ |
| Allocator* ownAllocator_ |
| size_t parseErrorOffset_ |
| size_t tokenCount_ |
Generated on Tue Jul 12 2022 12:06:51 by
1.7.2