20 #include <ripple/json/json_writer.h>
32 return ch > 0 && ch <= 0x1F;
52 *--current = (value % 10) +
'0';
61 char* current = buffer +
sizeof (buffer);
62 bool isNegative = value < 0;
72 assert ( current >= buffer );
80 char* current = buffer +
sizeof (buffer);
82 assert ( current >= buffer );
94 #if defined(_MSC_VER) && defined(__STDC_SECURE_LIB__) // Use secure version with visual studio 2005 to avoid warning.
95 sprintf_s(buffer,
sizeof(buffer),
"%.16g", value);
97 snprintf(buffer,
sizeof(buffer),
"%.16g", value);
104 return value ?
"true" :
"false";
116 unsigned maxsize = strlen (value) * 2 + 3;
121 for (
const char* c = value; *c != 0; ++c)
165 oss <<
"\\u" << std::hex << std::uppercase << std::setfill ('0') << std::setw (4) << static_cast<int> (*c);
166 result += oss.
str ();
197 switch ( value.
type () )
226 int size = value.
size ();
228 for (
int index = 0; index < size; ++index )
245 for ( Value::Members::iterator it = members.
begin ();
246 it != members.
end ();
251 if ( it != members.
begin () )
270 : rightMargin_ ( 74 )
291 switch ( value.
type () )
325 if ( members.
empty () )
331 Value::Members::iterator it = members.
begin ();
336 const Value& childValue = value[name];
341 if ( ++it == members.
end () )
359 unsigned size = value.
size ();
367 if ( isArrayMultiLine )
376 const Value& childValue = value[index];
386 if ( ++index == size )
400 for (
unsigned index = 0; index < size; ++index )
417 int size = value.
size ();
421 for (
int index = 0; index < size && !isMultiLine; ++index )
423 const Value& childValue = value[index];
424 isMultiLine = isMultiLine ||
426 childValue.
size () > 0 );
433 int lineLength = 4 + (size - 1) * 2;
435 for (
int index = 0; index < size; ++index )
442 isMultiLine = isMultiLine || lineLength >=
rightMargin_;
503 : document_ (nullptr)
504 , rightMargin_ ( 74 )
505 , indentation_ ( indentation )
525 switch ( value.
type () )
559 if ( members.
empty () )
565 Value::Members::iterator it = members.
begin ();
570 const Value& childValue = value[name];
575 if ( ++it == members.
end () )
593 unsigned size = value.
size ();
601 if ( isArrayMultiLine )
610 const Value& childValue = value[index];
620 if ( ++index == size )
634 for (
unsigned index = 0; index < size; ++index )
651 int size = value.
size ();
655 for (
int index = 0; index < size && !isMultiLine; ++index )
657 const Value& childValue = value[index];
658 isMultiLine = isMultiLine ||
660 childValue.
size () > 0 );
667 int lineLength = 4 + (size - 1) * 2;
669 for (
int index = 0; index < size; ++index )
676 isMultiLine = isMultiLine || lineLength >=
rightMargin_;
738 writer.
write (sout, root);