All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator > Class Template Reference

JSON writer. More...

#include <writer.h>

Inheritance diagram for rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >:
rapidjson::PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, Allocator >

Classes

struct  Level
 Information for each nested level. More...
 

Public Types

typedef SourceEncoding::Ch Ch
 

Public Member Functions

 Writer (OutputStream &os, Allocator *allocator=0, size_t levelDepth=kDefaultLevelDepth)
 Constructor. More...
 
 Writer (Allocator *allocator=0, size_t levelDepth=kDefaultLevelDepth)
 
void Reset (OutputStream &os)
 Reset the writer with a new stream. More...
 
bool IsComplete () const
 Checks whether the output is a complete JSON. More...
 
WriterSetDoublePrecision (int p=kDefaultDoublePrecision)
 Set the number of significant digits for double values. More...
 
int GetDoublePrecision () const
 
Implementation of Handler
See also
Handler
bool Null ()
 
bool Bool (bool b)
 
bool Int (int i)
 
bool Uint (unsigned u)
 
bool Int64 (int64_t i64)
 
bool Uint64 (uint64_t u64)
 
bool Double (double d)
 Writes the given double value to the stream. More...
 
bool String (const Ch *str, SizeType length, bool copy=false)
 
bool StartObject ()
 
bool EndObject (SizeType memberCount=0)
 
bool StartArray ()
 
bool EndArray (SizeType elementCount=0)
 
Convenience extensions
bool Double (double d, int precision)
 Writes the given double value to the stream (explicit precision) More...
 
bool String (const Ch *str)
 Simpler but slower overload.
 

Protected Member Functions

bool WriteNull ()
 
bool WriteBool (bool b)
 
bool WriteInt (int i)
 
bool WriteUint (unsigned u)
 
bool WriteInt64 (int64_t i64)
 
bool WriteUint64 (uint64_t u64)
 
bool WriteDouble (double d)
 
bool WriteString (const Ch *str, SizeType length)
 
bool WriteStartObject ()
 
bool WriteEndObject ()
 
bool WriteStartArray ()
 
bool WriteEndArray ()
 
void Prefix (Type type)
 
template<>
bool WriteInt (int i)
 
template<>
bool WriteUint (unsigned u)
 
template<>
bool WriteInt64 (int64_t i64)
 
template<>
bool WriteUint64 (uint64_t u)
 

Protected Attributes

OutputStream * os_
 
internal::Stack< Allocatorlevel_stack_
 
int doublePrecision_
 
bool hasRoot_
 

Static Protected Attributes

static const size_t kDefaultLevelDepth = 32
 
static const int kDefaultDoublePrecision = 6
 

Detailed Description

template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
class rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >

JSON writer.

Writer implements the concept Handler. It generates JSON text by events to an output os.

User may programmatically calls the functions of a writer to generate JSON text.

On the other side, a writer can also be passed to objects that generates events,

for example Reader::Parse() and Document::Accept().

Template Parameters
OutputStreamType of output stream.
SourceEncodingEncoding of source string.
TargetEncodingEncoding of output stream.
AllocatorType of allocator for allocating memory of stack.
Note
implements Handler concept

Constructor & Destructor Documentation

template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::Writer ( OutputStream &  os,
Allocator allocator = 0,
size_t  levelDepth = kDefaultLevelDepth 
)
inline

Constructor.

Parameters
osOutput stream.
allocatorUser supplied allocator. If it is null, it will create a private one.
levelDepthInitial capacity of stack.

Member Function Documentation

template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::Double ( double  d)
inline

Writes the given double value to the stream.

The number of significant digits (the precision) to be written can be set by SetDoublePrecision() for the Writer:

Writer<...> writer(...);
writer.SetDoublePrecision(12).Double(M_PI);
Parameters
dThe value to be written.
Returns
Whether it is succeed.
template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::Double ( double  d,
int  precision 
)
inline

Writes the given double value to the stream (explicit precision)

The currently set double precision is ignored in favor of the explicitly given precision for this value.

See also
Double(), SetDoublePrecision(), GetDoublePrecision()
Parameters
dThe value to be written
precisionThe number of significant digits for this value
Returns
Whether it is succeeded.
template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
int rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::GetDoublePrecision ( ) const
inline
template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::IsComplete ( ) const
inline

Checks whether the output is a complete JSON.

A complete JSON has a complete root object or array.

template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
void rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::Reset ( OutputStream &  os)
inline

Reset the writer with a new stream.

This function reset the writer with a new stream and default settings, in order to make a Writer object reusable for output multiple JSONs.

Parameters
osNew output stream.
Writer<OutputStream> writer(os1);
writer.StartObject();
// ...
writer.EndObject();
writer.Reset(os2);
writer.StartObject();
// ...
writer.EndObject();
template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
Writer& rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::SetDoublePrecision ( int  p = kDefaultDoublePrecision)
inline

Set the number of significant digits for double values.

When writing a double value to the OutputStream, the number of significant digits is limited to 6 by default.

Parameters
pmaximum number of significant digits (default: 6)
Returns
The Writer itself for fluent API.
template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename Allocator = MemoryPoolAllocator<>>
bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, Allocator >::WriteDouble ( double  d)
inlineprotected
Todo:
Optimization with custom double-to-string converter.

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