bes  Updated for version 3.20.5
PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags > Class Template Reference

Writer with indentation and spacing. More...

#include <prettywriter.h>

Collaboration diagram for PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >:
Collaboration graph

Public Types

typedef Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator > Base
 
typedef Base::Ch Ch
 

Public Member Functions

int GetMaxDecimalPlaces () const
 
bool IsComplete () const
 Checks whether the output is a complete JSON. More...
 
 PrettyWriter (OutputStream &os, StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)
 Constructor. More...
 
 PrettyWriter (StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)
 
bool RawValue (const Ch *json, size_t length, Type type)
 Write a raw JSON value. More...
 
void Reset (OutputStream &os)
 Reset the writer with a new stream. More...
 
PrettyWriterSetFormatOptions (PrettyFormatOptions options)
 Set pretty writer formatting options. More...
 
PrettyWriterSetIndent (Ch indentChar, unsigned indentCharCount)
 Set custom indentation. More...
 
void SetMaxDecimalPlaces (int maxDecimalPlaces)
 Sets the maximum number of decimal places for double output. More...
 
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)
 
bool RawNumber (const Ch *str, SizeType length, bool copy=false)
 
bool String (const Ch *str, SizeType length, bool copy=false)
 
bool StartObject ()
 
bool Key (const Ch *str, SizeType length, bool copy=false)
 
bool EndObject (SizeType memberCount=0)
 
bool StartArray ()
 
bool EndArray (SizeType memberCount=0)
 
Convenience extensions
bool String (const Ch *str)
 Simpler but slower overload. More...
 
bool Key (const Ch *str)
 

Static Public Attributes

static const int kDefaultMaxDecimalPlaces = 324
 

Protected Member Functions

bool EndValue (bool ret)
 
void Prefix (Type type)
 
void PrettyPrefix (Type type)
 
bool ScanWriteUnescapedString (GenericStringStream< SourceEncoding > &is, size_t length)
 
bool WriteBool (bool b)
 
bool WriteDouble (double d)
 
template<>
bool WriteDouble (double d)
 
bool WriteEndArray ()
 
bool WriteEndObject ()
 
void WriteIndent ()
 
bool WriteInt (int i)
 
template<>
bool WriteInt (int i)
 
bool WriteInt64 (int64_t i64)
 
template<>
bool WriteInt64 (int64_t i64)
 
bool WriteNull ()
 
bool WriteRawValue (const Ch *json, size_t length)
 
bool WriteStartArray ()
 
bool WriteStartObject ()
 
bool WriteString (const Ch *str, SizeType length)
 
bool WriteUint (unsigned u)
 
template<>
bool WriteUint (unsigned u)
 
bool WriteUint64 (uint64_t u64)
 
template<>
bool WriteUint64 (uint64_t u)
 

Protected Attributes

PrettyFormatOptions formatOptions_
 
bool hasRoot_
 
Ch indentChar_
 
unsigned indentCharCount_
 
internal::Stack< StackAllocator > level_stack_
 
int maxDecimalPlaces_
 
OutputStream * os_
 

Static Protected Attributes

static const size_t kDefaultLevelDepth = 32
 

Detailed Description

template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
class PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >

Writer with indentation and spacing.

Template Parameters
OutputStreamType of ouptut os.
SourceEncodingEncoding of source string.
TargetEncodingEncoding of output stream.
StackAllocatorType of allocator for allocating memory of stack.

Definition at line 100 of file fwd.h.

Constructor & Destructor Documentation

◆ PrettyWriter()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::PrettyWriter ( OutputStream &  os,
StackAllocator *  allocator = 0,
size_t  levelDepth = Base::kDefaultLevelDepth 
)
inlineexplicit

Constructor.

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

Definition at line 53 of file prettywriter.h.

Member Function Documentation

◆ IsComplete()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
bool Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::IsComplete ( ) const
inlineinherited

Checks whether the output is a complete JSON.

A complete JSON has a complete root object or array.

Definition at line 134 of file writer.h.

◆ RawValue()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
bool PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::RawValue ( const Ch *  json,
size_t  length,
Type  type 
)
inline

Write a raw JSON value.

For user to write a stringified JSON as a value.

Parameters
jsonA well-formed JSON value. It should not contain null character within [0, length - 1] range.
lengthLength of the json.
typeType of the root of json.
Note
When using PrettyWriter::RawValue(), the result json may not be indented correctly.

Definition at line 187 of file prettywriter.h.

◆ Reset()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
void Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::Reset ( OutputStream &  os)
inlineinherited

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.StartObject();
// ...
writer.EndObject();
writer.Reset(os2);
writer.StartObject();
// ...
writer.EndObject();

Definition at line 124 of file writer.h.

◆ SetFormatOptions()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
PrettyWriter& PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::SetFormatOptions ( PrettyFormatOptions  options)
inline

Set pretty writer formatting options.

Parameters
optionsFormatting options.

Definition at line 75 of file prettywriter.h.

◆ SetIndent()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
PrettyWriter& PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::SetIndent ( Ch  indentChar,
unsigned  indentCharCount 
)
inline

Set custom indentation.

Parameters
indentCharCharacter for indentation. Must be whitespace character (' ', '\t', '\n', '\r').
indentCharCountNumber of indent characters for each indentation level.
Note
The default indentation is 4 spaces.

Definition at line 65 of file prettywriter.h.

◆ SetMaxDecimalPlaces()

template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
void Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::SetMaxDecimalPlaces ( int  maxDecimalPlaces)
inlineinherited

Sets the maximum number of decimal places for double output.

This setting truncates the output with specified number of decimal places.

For example,

writer.SetMaxDecimalPlaces(3);
writer.StartArray();
writer.Double(0.12345); // "0.123"
writer.Double(0.0001); // "0.0"
writer.Double(1.234567890123456e30); // "1.234567890123456e30" (do not truncate significand for positive exponent)
writer.Double(1.23e-4); // "0.0" (do truncate significand for negative exponent)
writer.EndArray();

The default setting does not truncate any decimal places. You can restore to this setting by calling

writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);

Definition at line 163 of file writer.h.

◆ String()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
bool PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::String ( const Ch *  str)
inline

Simpler but slower overload.

Definition at line 173 of file prettywriter.h.


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