20 #include <ripple/json/json_writer.h>
32 return ch > 0 && ch <= 0x1F;
53 *--current = (value % 10) +
'0';
62 char* current = buffer +
sizeof(buffer);
63 bool isNegative = value < 0;
73 assert(current >= buffer);
81 char* current = buffer +
sizeof(buffer);
83 assert(current >= buffer);
96 #if defined(_MSC_VER) && \
97 defined(__STDC_SECURE_LIB__) // Use secure version with visual studio 2005
99 sprintf_s(buffer,
sizeof(buffer),
"%.16g", value);
101 snprintf(buffer,
sizeof(buffer),
"%.16g", value);
109 return value ?
"true" :
"false";
116 if (strpbrk(value,
"\"\\\b\f\n\r\t") ==
nullptr &&
123 unsigned maxsize = strlen(value) * 2 + 3;
128 for (
const char* c = value; *c != 0; ++c)
173 <<
static_cast<int>(*c);
203 switch (value.
type())
231 int size = value.
size();
233 for (
int index = 0; index < size; ++index)
249 for (Value::Members::iterator it = members.
begin();
255 if (it != members.
begin())
290 switch (value.
type())
329 Value::Members::iterator it = members.
begin();
334 const Value& childValue = value[name];
339 if (++it == members.
end())
356 unsigned size = value.
size();
364 if (isArrayMultiLine)
373 const Value& childValue = value[index];
397 for (
unsigned index = 0; index < size; ++index)
413 int size = value.
size();
417 for (
int index = 0; index < size && !isMultiLine; ++index)
419 const Value& childValue = value[index];
420 isMultiLine = isMultiLine ||
422 childValue.
size() > 0);
429 int lineLength = 4 + (size - 1) * 2;
431 for (
int index = 0; index < size; ++index)
438 isMultiLine = isMultiLine || lineLength >=
rightMargin_;
494 : document_(nullptr), rightMargin_(74), indentation_(indentation)
512 switch (value.
type())
551 Value::Members::iterator it = members.
begin();
556 const Value& childValue = value[name];
561 if (++it == members.
end())
578 unsigned size = value.
size();
586 if (isArrayMultiLine)
595 const Value& childValue = value[index];
619 for (
unsigned index = 0; index < size; ++index)
635 int size = value.
size();
639 for (
int index = 0; index < size && !isMultiLine; ++index)
641 const Value& childValue = value[index];
642 isMultiLine = isMultiLine ||
644 childValue.
size() > 0);
651 int lineLength = 4 + (size - 1) * 2;
653 for (
int index = 0; index < size; ++index)
660 isMultiLine = isMultiLine || lineLength >=
rightMargin_;
717 writer.
write(sout, root);