fixed in Space: set_empty_string(), set_empty_wstring(), set_empty_table() and set_empty_object() didn't clear its object

if the same kind of object already existed
This commit is contained in:
Tomasz Sowa 2021-05-17 03:08:32 +02:00
parent 3d6c4e27c0
commit 77d7bb5e64
2 changed files with 43 additions and 6 deletions

View File

@ -187,24 +187,53 @@ void Space::set_null()
initialize_value_null_if_needed(); initialize_value_null_if_needed();
} }
void Space::set_empty_string() void Space::set_empty_string()
{ {
initialize_value_string_if_needed(); if( type == type_string )
{
value.value_string.clear();
}
else
{
initialize_value_string_if_needed();
}
} }
void Space::set_empty_wstring() void Space::set_empty_wstring()
{ {
initialize_value_wstring_if_needed(); if( type == type_wstring )
{
value.value_wstring.clear();
}
else
{
initialize_value_wstring_if_needed();
}
} }
void Space::set_empty_table() void Space::set_empty_table()
{ {
initialize_value_table_if_needed(); if( type == type_table )
{
value.value_table.clear();
}
else
{
initialize_value_table_if_needed();
}
} }
void Space::set_empty_object() void Space::set_empty_object()
{ {
initialize_value_object_if_needed(); if( type == type_object )
{
value.value_object.clear();
}
else
{
initialize_value_object_if_needed();
}
} }
@ -1542,6 +1571,11 @@ const Space * Space::get_object_field(const wchar_t * field) const
} }
Space * Space::get_object_field(const std::wstring & field)
{
return get_object_field(field.c_str());
}
const Space * Space::get_object_field(const std::wstring & field) const const Space * Space::get_object_field(const std::wstring & field) const
{ {
return get_object_field(field.c_str()); return get_object_field(field.c_str());

View File

@ -430,6 +430,11 @@ public:
// getters from object // getters from object
Space * get_object_field(const wchar_t * field); // may a better name? Space * get_object_field(const wchar_t * field); // may a better name?
const Space * get_object_field(const wchar_t * field) const; // may a better name?
Space * get_object_field(const std::wstring & field);
const Space * get_object_field(const std::wstring & field) const; // may a better name?
bool * get_bool(const wchar_t * field); bool * get_bool(const wchar_t * field);
long long * get_llong(const wchar_t * field); long long * get_llong(const wchar_t * field);
long long * get_long_long(const wchar_t * field); long long * get_long_long(const wchar_t * field);
@ -455,8 +460,6 @@ public:
bool has_key(const wchar_t * field) const; // may has_key() would be a better name? bool has_key(const wchar_t * field) const; // may has_key() would be a better name?
bool has_key(const std::wstring & field) const; bool has_key(const std::wstring & field) const;
const Space * get_object_field(const wchar_t * field) const; // may a better name?
const Space * get_object_field(const std::wstring & field) const; // may a better name?
const bool * get_bool(const wchar_t * field) const; const bool * get_bool(const wchar_t * field) const;
const long long * get_llong(const wchar_t * field) const; const long long * get_llong(const wchar_t * field) const;