Myra Canyon  v0.0.1-768
network control
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Json::StyledStreamWriter Class Reference

Writes a Value in JSON format in a human friendly way, to a stream rather than to a string. More...

#include "json.h"

Collaboration diagram for Json::StyledStreamWriter:

Public Member Functions

 StyledStreamWriter (std::string indentation="\t")
 
 ~StyledStreamWriter ()
 
void write (std::ostream &out, const Value &root)
 Serialize a Value in JSON format. More...
 

Private Types

typedef std::vector< std::string > ChildValues
 

Private Member Functions

void writeValue (const Value &value)
 
void writeArrayValue (const Value &value)
 
bool isMultineArray (const Value &value)
 
void pushValue (const std::string &value)
 
void writeIndent ()
 
void writeWithIndent (const std::string &value)
 
void indent ()
 
void unindent ()
 
void writeCommentBeforeValue (const Value &root)
 
void writeCommentAfterValueOnSameLine (const Value &root)
 
bool hasCommentForValue (const Value &value)
 

Static Private Member Functions

static std::string normalizeEOL (const std::string &text)
 

Private Attributes

ChildValues childValues_
 
std::ostream * document_
 
std::string indentString_
 
int rightMargin_
 
std::string indentation_
 
bool addChildValues_
 

Detailed Description

Writes a Value in JSON format in a human friendly way, to a stream rather than to a string.

The rules for line break and indent are as follow:

  • Object value:
    • if empty then print {} without indent and line break
    • if not empty the print '{', line break & indent, print one value per line and then unindent and line break and print '}'.
  • Array value:
    • if empty then print [] without indent and line break
    • if the array contains no object value, empty array or some other value types, and all the values fit on one lines, then print the array on a single line.
    • otherwise, it the values do not fit on one line, or the array contains object or non empty array, then print one value per line.

If the Value have comments then they are outputed according to their CommentPlacement.

Parameters
indentationEach level will be indented by this amount extra.
See also
Reader, Value, Value::setComment()

Member Typedef Documentation

typedef std::vector<std::string> Json::StyledStreamWriter::ChildValues
private

Constructor & Destructor Documentation

Json::StyledStreamWriter::StyledStreamWriter ( std::string  indentation = "\t")
Json::StyledStreamWriter::~StyledStreamWriter ( )
inline

Member Function Documentation

bool Json::StyledStreamWriter::hasCommentForValue ( const Value value)
private

Here is the call graph for this function:

void Json::StyledStreamWriter::indent ( )
private

Here is the caller graph for this function:

bool Json::StyledStreamWriter::isMultineArray ( const Value value)
private

Here is the call graph for this function:

Here is the caller graph for this function:

std::string Json::StyledStreamWriter::normalizeEOL ( const std::string &  text)
staticprivate

Here is the caller graph for this function:

void Json::StyledStreamWriter::pushValue ( const std::string &  value)
private

Here is the caller graph for this function:

void Json::StyledStreamWriter::unindent ( )
private

Here is the caller graph for this function:

void Json::StyledStreamWriter::write ( std::ostream &  out,
const Value root 
)

Serialize a Value in JSON format.

Parameters
outStream to write to. (Can be ostringstream, e.g.)
rootValue to serialize.
Note
There is no point in deriving from Writer, since write() should not return a value.

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::StyledStreamWriter::writeArrayValue ( const Value value)
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::StyledStreamWriter::writeCommentAfterValueOnSameLine ( const Value root)
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::StyledStreamWriter::writeCommentBeforeValue ( const Value root)
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::StyledStreamWriter::writeIndent ( )
private

Here is the caller graph for this function:

void Json::StyledStreamWriter::writeValue ( const Value value)
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::StyledStreamWriter::writeWithIndent ( const std::string &  value)
private

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

bool Json::StyledStreamWriter::addChildValues_
private
ChildValues Json::StyledStreamWriter::childValues_
private
std::ostream* Json::StyledStreamWriter::document_
private
std::string Json::StyledStreamWriter::indentation_
private
std::string Json::StyledStreamWriter::indentString_
private
int Json::StyledStreamWriter::rightMargin_
private

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