added Space::remove(size_t table_index) for removing a table item
fixed: pretty printing for Space format
This commit is contained in:
parent
8997284b16
commit
34f1fc04cf
|
@ -2001,6 +2001,17 @@ void Space::remove(const std::wstring & field)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Space::remove(size_t table_index)
|
||||||
|
{
|
||||||
|
if( type == type_table && table_index < value.value_table.size() )
|
||||||
|
{
|
||||||
|
delete value.value_table[table_index];
|
||||||
|
value.value_table[table_index] = nullptr;
|
||||||
|
value.value_table.erase(value.value_table.begin() + table_index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Space::is_equal(const wchar_t * field, const char * val) const
|
bool Space::is_equal(const wchar_t * field, const char * val) const
|
||||||
{
|
{
|
||||||
const Space * space = get_space(field);
|
const Space * space = get_space(field);
|
||||||
|
|
|
@ -515,6 +515,8 @@ public:
|
||||||
void remove(const wchar_t * field);
|
void remove(const wchar_t * field);
|
||||||
void remove(const std::wstring & field);
|
void remove(const std::wstring & field);
|
||||||
|
|
||||||
|
// remove a table item
|
||||||
|
void remove(size_t table_index);
|
||||||
|
|
||||||
template<typename StreamType>
|
template<typename StreamType>
|
||||||
void serialize_to_string(StreamType & stream) const
|
void serialize_to_string(StreamType & stream) const
|
||||||
|
@ -547,7 +549,7 @@ public:
|
||||||
{
|
{
|
||||||
if( is_object() )
|
if( is_object() )
|
||||||
{
|
{
|
||||||
serialize_to_space_stream(str, pretty_print, 0, true);
|
serialize_to_space_stream(str, pretty_print, -1, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1029,19 +1031,26 @@ protected:
|
||||||
if( !is_main_object )
|
if( !is_main_object )
|
||||||
{
|
{
|
||||||
str << '{';
|
str << '{';
|
||||||
print_if(pretty_print && !value.value_object.empty(), str, '\n');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_first = true;
|
bool is_first = true;
|
||||||
|
|
||||||
for(auto & map_item : value.value_object)
|
for(auto & map_item : value.value_object)
|
||||||
{
|
{
|
||||||
if( !is_first )
|
if( is_first )
|
||||||
print_if(pretty_print, str, '\n', ',');
|
{
|
||||||
|
print_if(pretty_print, str, '\n');
|
||||||
|
print_level(pretty_print, level, str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str << ',';
|
||||||
|
print_if(pretty_print, str, '\n');
|
||||||
|
print_level(pretty_print, level, str);
|
||||||
|
}
|
||||||
|
|
||||||
bool quote_field = should_field_be_quoted(map_item.first);
|
bool quote_field = should_field_be_quoted(map_item.first);
|
||||||
|
|
||||||
print_level(pretty_print, level, str);
|
|
||||||
print_if(quote_field, str, '"');
|
print_if(quote_field, str, '"');
|
||||||
serialize_string_buffer(map_item.first.c_str(), str, Escape::escape_space);
|
serialize_string_buffer(map_item.first.c_str(), str, Escape::escape_space);
|
||||||
print_if(quote_field, str, '"');
|
print_if(quote_field, str, '"');
|
||||||
|
@ -1050,17 +1059,15 @@ protected:
|
||||||
str << '=';
|
str << '=';
|
||||||
print_if(pretty_print, str, ' ');
|
print_if(pretty_print, str, ' ');
|
||||||
|
|
||||||
map_item.second->serialize_to_space_stream(str, pretty_print, level + 1, false);
|
map_item.second->serialize_to_space_stream(str, pretty_print, level, false);
|
||||||
is_first = false;
|
is_first = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
print_if(!is_first && pretty_print, str, '\n');
|
|
||||||
|
|
||||||
if( !is_main_object )
|
if( !is_main_object )
|
||||||
{
|
{
|
||||||
print_level(pretty_print, level - 1, str);
|
print_if(pretty_print && !is_first, str, '\n');
|
||||||
|
print_level(pretty_print && !is_first, level - 1, str);
|
||||||
str << '}';
|
str << '}';
|
||||||
print_if(pretty_print, str, '\n');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1069,29 +1076,29 @@ protected:
|
||||||
template<typename StreamType>
|
template<typename StreamType>
|
||||||
void serialize_space_table(StreamType & str, bool pretty_print, int level) const
|
void serialize_space_table(StreamType & str, bool pretty_print, int level) const
|
||||||
{
|
{
|
||||||
bool multivalue_table = false;
|
|
||||||
bool is_first = true;
|
bool is_first = true;
|
||||||
|
|
||||||
if( value.value_table.size() > 1 )
|
|
||||||
{
|
|
||||||
multivalue_table = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
str << '(';
|
str << '(';
|
||||||
print_if(pretty_print && multivalue_table, str, '\n');
|
|
||||||
|
|
||||||
for(Space * space : value.value_table)
|
for(Space * space : value.value_table)
|
||||||
{
|
{
|
||||||
if( !is_first )
|
if( is_first )
|
||||||
print_if(pretty_print, str, '\n', ',');
|
{
|
||||||
|
print_if(pretty_print, str, '\n');
|
||||||
|
print_level(pretty_print, level, str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str << ',';
|
||||||
|
print_if(pretty_print, str, '\n');
|
||||||
|
print_level(pretty_print, level, str);
|
||||||
|
}
|
||||||
|
|
||||||
print_level(pretty_print && multivalue_table, level, str);
|
space->serialize_to_space_stream(str, pretty_print, level, false);
|
||||||
space->serialize_to_space_stream(str, pretty_print, level + 1, false);
|
|
||||||
is_first = false;
|
is_first = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
print_if(pretty_print && multivalue_table, str, '\n');
|
print_if(pretty_print && !is_first, str, '\n');
|
||||||
print_level(pretty_print && multivalue_table, level - 1, str);
|
print_level(pretty_print && !is_first, level - 1, str);
|
||||||
str << ')';
|
str << ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1212,6 +1219,7 @@ protected:
|
||||||
serialize_string_buffer(map_item.first.c_str(), str, Escape::escape_json);
|
serialize_string_buffer(map_item.first.c_str(), str, Escape::escape_json);
|
||||||
str << '"';
|
str << '"';
|
||||||
str << ':';
|
str << ':';
|
||||||
|
print_if(pretty_print, str, ' ');
|
||||||
map_item.second->serialize_to_json_stream(str, pretty_print, level);
|
map_item.second->serialize_to_json_stream(str, pretty_print, level);
|
||||||
is_first = false;
|
is_first = false;
|
||||||
}
|
}
|
||||||
|
@ -1291,11 +1299,11 @@ protected:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case type_object:
|
case type_object:
|
||||||
serialize_space_object(str, pretty_print, level, is_main_object);
|
serialize_space_object(str, pretty_print, level + 1, is_main_object);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case type_table:
|
case type_table:
|
||||||
serialize_space_table(str, pretty_print, level);
|
serialize_space_table(str, pretty_print, level + 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1341,15 +1349,6 @@ protected:
|
||||||
str << c;
|
str << c;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename StreamType>
|
|
||||||
void print_if(bool condition, StreamType & str, wchar_t c1, wchar_t c2) const
|
|
||||||
{
|
|
||||||
if( condition )
|
|
||||||
str << c1;
|
|
||||||
else
|
|
||||||
str << c2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void copy_from(const Space & space);
|
void copy_from(const Space & space);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue