rapidjson A fast JSON parser/generator for C++ with both SAX/DOM style API

- Main Page
- Related Pages
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Functions Variables Typedefs Pages
Classes | Public Types | Public Member Functions | Friends | List of all members
rapidjson::GenericValue< Encoding, Allocator > Class Template Reference

Represents a JSON value. Use Value for UTF8 encoding and default allocator. More...

`#include <document.h>`

Inheritance diagram for rapidjson::GenericValue< Encoding, Allocator >:

## Classes
struct | Array
union | Data
struct | Member
| Name-value pair in an object. More...
union | Number
struct | Object
struct | String

## Public Types
typedef Encoding | EncodingType
| Encoding type from template parameter.
typedef Allocator | AllocatorType
| Allocator type from template parameter.
typedef Encoding::Ch | Ch
| Character type derived from Encoding.
typedef Member * | MemberIterator
| Member iterator for iterating in object.
typedef const Member * | ConstMemberIterator
| Constant member iterator for iterating in object.
typedef GenericValue * | ValueIterator
| Value iterator for iterating in array.
typedef const GenericValue * | ConstValueIterator
| Constant value iterator for iterating in array.

## Public Member Functions
template<typename Handler >
const GenericValue & | Accept (Handler &handler) const
| Generate events of this value to a Handler.
Assignment operators
GenericValue & | operator= (GenericValue &rhs)
| Assignment with move semantics.
template<typename T >
GenericValue & | operator= (T value)
| Assignment with primitive types.
Type
Type | GetType () const
bool | IsNull () const
bool | IsFalse () const
bool | IsTrue () const
bool | IsBool () const
bool | IsObject () const
bool | IsArray () const
bool | IsNumber () const
bool | IsInt () const
bool | IsUint () const
bool | IsInt64 () const
bool | IsUint64 () const
bool | IsDouble () const
bool | IsString () const
Null
GenericValue & | SetNull ()
Bool
bool | GetBool () const
GenericValue & | SetBool (bool b)
Object
GenericValue & | SetObject ()
| Set this value as an empty object.
GenericValue & | operator[] (const Ch *name)
| Get the value associated with the object's name.
const GenericValue & | operator[] (const Ch *name) const
ConstMemberIterator | MemberBegin () const
| Member iterators.
ConstMemberIterator | MemberEnd () const
MemberIterator | MemberBegin ()
MemberIterator | MemberEnd ()
bool | HasMember (const Ch *name) const
| Check whether a member exists in the object.
GenericValue & | AddMember (GenericValue &name, GenericValue &value, Allocator &allocator)
| Add a member (name-value pair) to the object.
GenericValue & | AddMember (const Ch *name, Allocator &nameAllocator, GenericValue &value, Allocator &allocator)
GenericValue & | AddMember (const Ch *name, GenericValue &value, Allocator &allocator)
template<typename T >
GenericValue & | AddMember (const Ch *name, T value, Allocator &allocator)
bool | RemoveMember (const Ch *name)
| Remove a member in object by its name.
Array
GenericValue & | SetArray ()
| Set this value as an empty array.
SizeType | Size () const
| Get the number of elements in array.
SizeType | Capacity () const
| Get the capacity of array.
bool | Empty () const
| Check whether the array is empty.
void | Clear ()
| Remove all elements in the array.
GenericValue & | operator[] (SizeType index)
| Get an element from array by index.
const GenericValue & | operator[] (SizeType index) const
ValueIterator | Begin ()
| Element iterator.
ValueIterator | End ()
ConstValueIterator | Begin () const
ConstValueIterator | End () const
GenericValue & | Reserve (SizeType newCapacity, Allocator &allocator)
| Request the array to have enough capacity to store elements.
GenericValue & | PushBack (GenericValue &value, Allocator &allocator)
| Append a value at the end of the array.
template<typename T >
GenericValue & | PushBack (T value, Allocator &allocator)
GenericValue & | PopBack ()
| Remove the last element in the array.
Number
int | GetInt () const
unsigned | GetUint () const
int64_t | GetInt64 () const
uint64_t | GetUint64 () const
double | GetDouble () const
GenericValue & | SetInt (int i)
GenericValue & | SetUint (unsigned u)
GenericValue & | SetInt64 (int64_t i64)
GenericValue & | SetUint64 (uint64_t u64)
GenericValue & | SetDouble (double d)
String
const Ch * | GetString () const
SizeType | GetStringLength () const
| Get the length of string.
GenericValue & | SetString (const Ch *s, SizeType length)
| Set this value as a string without copying source string.
GenericValue & | SetString (const Ch *s)
| Set this value as a string without copying source string.
GenericValue & | SetString (const Ch *s, SizeType length, Allocator &allocator)
| Set this value as a string by copying from source string.
GenericValue & | SetString (const Ch *s, Allocator &allocator)
| Set this value as a string by copying from source string.

## Friends
class | GenericDocument

## Constructors and destructor.
| GenericValue ()
| Default constructor creates a null value.
| GenericValue (Type type)
| Constructor with JSON value type.
| GenericValue (bool b)
| Constructor for boolean value.
| GenericValue (int i)
| Constructor for int value.
| GenericValue (unsigned u)
| Constructor for unsigned value.
| GenericValue (int64_t i64)
| Constructor for int64_t value.
| GenericValue (uint64_t u64)
| Constructor for uint64_t value.
| GenericValue (double d)
| Constructor for double value.
| GenericValue (const Ch *s, SizeType length)
| Constructor for constant string (i.e. do not make a copy of string)
| GenericValue (const Ch *s)
| Constructor for constant string (i.e. do not make a copy of string)
| GenericValue (const Ch *s, SizeType length, Allocator &allocator)
| Constructor for copy-string (i.e. do make a copy of string)
| GenericValue (const Ch *s, Allocator &allocator)
| Constructor for copy-string (i.e. do make a copy of string)
| ~GenericValue ()
| Destructor.

## Detailed Description

### template<typename Encoding, typename Allocator = MemoryPoolAllocator<>>
class rapidjson::GenericValue< Encoding, Allocator >

Represents a JSON value. Use Value for UTF8 encoding and default allocator.

A JSON value can be one of 7 types. This class is a variant type supporting these types.

Use the Value if UTF8 and default allocator

Template Parameters

  Encoding | Encoding of the value. (Even non-string values need to have the same encoding in a document)
  Allocator | Allocator type for allocating memory of object, array and string.

## Constructor & Destructor Documentation

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | Type | type | ) |
| inline

Constructor with JSON value type.

This creates a Value of specified type with default content.

Parameters

  type | Type of the value.

Note
  Default content for number is zero.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

rapidjson::GenericValue< Encoding, Allocator >::~GenericValue | ( |  | ) |
| inline

Destructor.

Need to destruct elements of array, members of object, or copy-string.

## Member Function Documentation

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>
template<typename Handler >

const GenericValue& rapidjson::GenericValue< Encoding, Allocator >::Accept | ( | Handler & | handler | ) | const
| inline

Generate events of this value to a Handler.

This function adopts the GoF visitor pattern. Typical usage is to output this JSON value as JSON text via Writer, which is a Handler. It can also be used to deep clone this value via GenericDocument, which is also a Handler.

Template Parameters

  Handler | type of handler.

Parameters

  handler | An object implementing concept Handler.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | GenericValue< Encoding, Allocator > & | name,
|  | GenericValue< Encoding, Allocator > & | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add a member (name-value pair) to the object.

Parameters

  name | A string value as name of member.
  value | Value of any type.
  allocator | Allocator for reallocating memory.

Returns
  The value itself for fluent API.

Note
  The ownership of name and value will be transfered to this object if success.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

void rapidjson::GenericValue< Encoding, Allocator >::Clear | ( |  | ) |
| inline

Remove all elements in the array.

This function do not deallocate memory in the array, i.e. the capacity is unchanged.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

SizeType rapidjson::GenericValue< Encoding, Allocator >::GetStringLength | ( |  | ) | const
| inline

Get the length of string.

Since rapidjson permits "\u0000" in the json string, strlen(v.GetString()) may not equal to v.GetStringLength().

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator= | ( | GenericValue< Encoding, Allocator > & | rhs | ) |
| inline

Assignment with move semantics.

Parameters

  rhs | Source of the assignment. It will become a null value after assignment.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>
template<typename T >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator= | ( | T | value | ) |
| inline

Assignment with primitive types.

Template Parameters

  T | Either Type, int, unsigned, int64_t, uint64_t, const Ch*

Parameters

  value | The value to be assigned.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator[] | ( | SizeType | index | ) |
| inline

Get an element from array by index.

Parameters

  index | Zero-based index of element.

Note
  Value a(kArrayType);
  a.PushBack(123);
  int x = a[0].GetInt(); // Error: operator[ is ambiguous, as 0 also mean a null pointer of const char* type.
  int y = a[SizeType(0)].GetInt(); // Cast to SizeType will work.
  int z = a[0u].GetInt(); // This works too.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::PushBack | ( | GenericValue< Encoding, Allocator > & | value,
|  | Allocator & | allocator
| ) |  |
| inline

Append a value at the end of the array.

Parameters

  value | The value to be appended.
  allocator | The allocator for allocating memory. It must be the same one use previously.

Returns
  The value itself for fluent API.

Note
  The ownership of the value will be transfered to this object if success.
  If the number of elements to be appended is known, calls Reserve() once first may be more efficient.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

bool rapidjson::GenericValue< Encoding, Allocator >::RemoveMember | ( | const Ch * | name | ) |
| inline

Remove a member in object by its name.

Parameters

  name | Name of member to be removed.

Returns
  Whether the member existed.

Note
  Removing member is implemented by moving the last member. So the ordering of members is changed.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::Reserve | ( | SizeType | newCapacity,
|  | Allocator & | allocator
| ) |  |
| inline

Request the array to have enough capacity to store elements.

Parameters

  newCapacity | The capacity that the array at least need to have.
  allocator | The allocator for allocating memory. It must be the same one use previously.

Returns
  The value itself for fluent API.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s,
|  | SizeType | length
| ) |  |
| inline

Set this value as a string without copying source string.

This version has better performance with supplied length, and also support string containing null character.

Parameters

  s | source string pointer.
  length | The length of source string, excluding the trailing null terminator.

Returns
  The value itself for fluent API.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s | ) |
| inline

Set this value as a string without copying source string.

Parameters

  s | source string pointer.

Returns
  The value itself for fluent API.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s,
|  | SizeType | length,
|  | Allocator & | allocator
| ) |  |
| inline

Set this value as a string by copying from source string.

This version has better performance with supplied length, and also support string containing null character.

Parameters

  s | source string.
  length | The length of source string, excluding the trailing null terminator.
  allocator | Allocator for allocating copied buffer. Commonly use document.GetAllocator().

Returns
  The value itself for fluent API.

template<typename Encoding , typename Allocator = MemoryPoolAllocator<>>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s,
|  | Allocator & | allocator
| ) |  |
| inline

Set this value as a string by copying from source string.

Parameters

  s | source string.
  allocator | Allocator for allocating copied buffer. Commonly use document.GetAllocator().

Returns
  The value itself for fluent API.

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

- D:/rapidjson_version0.1x/include/rapidjson/document.h