15 #ifndef CEREAL_RAPIDJSON_PRETTYWRITER_H_
16 #define CEREAL_RAPIDJSON_PRETTYWRITER_H_
21 CEREAL_RAPIDJSON_DIAG_PUSH
22 CEREAL_RAPIDJSON_DIAG_OFF(effc++)
25 #if defined(__clang__)
26 CEREAL_RAPIDJSON_DIAG_PUSH
27 CEREAL_RAPIDJSON_DIAG_OFF(c++98-compat)
47 template<
typename OutputStream,
typename SourceEncoding = UTF8<>,
typename TargetEncoding = UTF8<>,
typename StackAllocator = CrtAllocator,
unsigned writeFlags = kWriteDefaultFlags>
48 class PrettyWriter :
public Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> {
65 #if CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS
117 #if CEREAL_RAPIDJSON_HAS_STDSTRING
118 bool String(
const std::basic_string<Ch>& str) {
131 #if CEREAL_RAPIDJSON_HAS_STDSTRING
132 bool Key(
const std::basic_string<Ch>& str) {
143 bool empty =
Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
167 bool empty =
Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
269 #if defined(__clang__)
270 CEREAL_RAPIDJSON_DIAG_POP
274 CEREAL_RAPIDJSON_DIAG_POP
#define CEREAL_RAPIDJSON_ASSERT(x)
Definition: json.hpp:50
Writer with indentation and spacing.
Definition: prettywriter.h:48
void PrettyPrefix(Type type)
Definition: prettywriter.h:208
PrettyFormatOptions formatOptions_
Definition: prettywriter.h:259
bool EndArray(SizeType memberCount=0)
Definition: prettywriter.h:163
PrettyWriter & SetFormatOptions(PrettyFormatOptions options)
Set pretty writer formatting options.
Definition: prettywriter.h:85
bool Key(const Ch *str, SizeType length, bool copy=false)
Definition: prettywriter.h:129
bool StartObject()
Definition: prettywriter.h:123
bool RawNumber(const Ch *str, SizeType length, bool copy=false)
Definition: prettywriter.h:103
bool RawValue(const Ch *json, size_t length, Type type)
Write a raw JSON value.
Definition: prettywriter.h:201
PrettyWriter(StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)
Definition: prettywriter.h:62
bool Key(const Ch *str)
Definition: prettywriter.h:188
bool EndObject(SizeType memberCount=0)
Definition: prettywriter.h:137
bool Bool(bool b)
Definition: prettywriter.h:96
Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags > Base
Definition: prettywriter.h:50
void WriteIndent()
Definition: prettywriter.h:252
unsigned indentCharCount_
Definition: prettywriter.h:258
bool String(const Ch *str)
Simpler but slower overload.
Definition: prettywriter.h:187
bool Uint(unsigned u)
Definition: prettywriter.h:98
PrettyWriter(OutputStream &os, StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)
Constructor.
Definition: prettywriter.h:58
bool Null()
Definition: prettywriter.h:95
bool Int(int i)
Definition: prettywriter.h:97
Ch indentChar_
Definition: prettywriter.h:257
bool Uint64(uint64_t u64)
Definition: prettywriter.h:100
PrettyWriter & operator=(const PrettyWriter &)
PrettyWriter & SetIndent(Ch indentChar, unsigned indentCharCount)
Set custom indentation.
Definition: prettywriter.h:75
bool Int64(int64_t i64)
Definition: prettywriter.h:99
bool Double(double d)
Definition: prettywriter.h:101
Base::Ch Ch
Definition: prettywriter.h:51
bool String(const Ch *str, SizeType length, bool copy=false)
Definition: prettywriter.h:110
bool StartArray()
Definition: prettywriter.h:157
PrettyWriter(const PrettyWriter &)
JSON writer.
Definition: writer.h:89
bool WriteUint(unsigned u)
Definition: writer.h:321
bool WriteInt(int i)
Definition: writer.h:312
OutputStream * os_
Definition: writer.h:499
bool WriteStartArray()
Definition: writer.h:456
bool WriteBool(bool b)
Definition: writer.h:300
bool WriteNull()
Definition: writer.h:295
bool WriteEndObject()
Definition: writer.h:455
bool WriteStartObject()
Definition: writer.h:454
void Flush()
Flush the output stream.
Definition: writer.h:281
bool WriteRawValue(const Ch *json, size_t length)
Definition: writer.h:459
static const size_t kDefaultLevelDepth
Definition: writer.h:293
internal::Stack< StackAllocator > level_stack_
Definition: writer.h:500
bool WriteInt64(int64_t i64)
Definition: writer.h:330
bool WriteEndArray()
Definition: writer.h:457
SourceEncoding::Ch Ch
Definition: writer.h:91
bool WriteString(const Ch *str, SizeType length)
Definition: writer.h:376
bool WriteUint64(uint64_t u64)
Definition: writer.h:339
bool EndValue(bool ret)
Definition: writer.h:493
bool WriteDouble(double d)
Definition: writer.h:348
bool hasRoot_
Definition: writer.h:502
namespace for Niels Lohmann
Definition: json.hpp:20203
size_t GetSize() const
Definition: stack.h:178
void PutN(FileWriteStream &stream, char c, size_t n)
Implement specialized version of PutN() with memset() for better performance.
Definition: filewritestream.h:94
#define CEREAL_RAPIDJSON_NAMESPACE_BEGIN
provide custom rapidjson namespace (opening expression)
Definition: rapidjson.h:121
#define CEREAL_RAPIDJSON_NAMESPACE_END
provide custom rapidjson namespace (closing expression)
Definition: rapidjson.h:124
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
SizeType StrLen(const Ch *s)
Custom strlen() which works on different character types.
Definition: strfunc.h:31
Definition: json.hpp:5678
PrettyFormatOptions
Combination of PrettyWriter format flags.
Definition: prettywriter.h:35
@ kFormatDefault
Default pretty formatting.
Definition: prettywriter.h:36
@ kFormatSingleLineArray
Format arrays on a single line.
Definition: prettywriter.h:37
Type
Type of JSON value.
Definition: rapidjson.h:644
@ kFalseType
false
Definition: rapidjson.h:646
@ kObjectType
object
Definition: rapidjson.h:648
@ kTrueType
true
Definition: rapidjson.h:647
@ kStringType
string
Definition: rapidjson.h:650
@ kNullType
null
Definition: rapidjson.h:645
@ kArrayType
array
Definition: rapidjson.h:649
@ kNumberType
number
Definition: rapidjson.h:651
CEREAL_RAPIDJSON_NAMESPACE_BEGIN typedef unsigned SizeType
Size type (for string lengths, array sizes, etc.)
Definition: rapidjson.h:384
signed __int64 int64_t
Definition: stdint.h:135
unsigned __int64 uint64_t
Definition: stdint.h:136
Information for each nested level.
Definition: writer.h:287
size_t valueCount
number of values in this level
Definition: writer.h:289
bool inArray
true if in array, otherwise in object
Definition: writer.h:290