👌 apply review comments
This commit is contained in:
parent
47c7e2cfa0
commit
268600e63b
@ -3725,12 +3725,14 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
|
|||||||
// operator[] only works for objects
|
// operator[] only works for objects
|
||||||
if (JSON_HEDLEY_LIKELY(is_object()))
|
if (JSON_HEDLEY_LIKELY(is_object()))
|
||||||
{
|
{
|
||||||
if (auto it = m_value.object->find(key); it != m_value.object->end())
|
auto it = m_value.object->find(key);
|
||||||
|
if (it != m_value.object->end())
|
||||||
{
|
{
|
||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
return set_parent(m_value.object->operator[](json::object_t::key_type(key)));
|
auto result = m_value.object->emplace(key, nullptr);
|
||||||
|
return set_parent(result.first->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this));
|
JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this));
|
||||||
@ -4421,9 +4423,22 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(JSON_HAS_CPP_17)
|
#if defined(JSON_HAS_CPP_17)
|
||||||
size_type erase(std::string_view key)
|
size_type erase(const std::string_view& key)
|
||||||
{
|
{
|
||||||
return erase(typename object_t::key_type(key.data(), key.size()));
|
// this erase only works for objects
|
||||||
|
if (JSON_HEDLEY_UNLIKELY(!is_object()))
|
||||||
|
{
|
||||||
|
JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this));
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto it = m_value.object->find(key);
|
||||||
|
if (it != m_value.object->end())
|
||||||
|
{
|
||||||
|
m_value.object->erase(it);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -20614,12 +20614,14 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
|
|||||||
// operator[] only works for objects
|
// operator[] only works for objects
|
||||||
if (JSON_HEDLEY_LIKELY(is_object()))
|
if (JSON_HEDLEY_LIKELY(is_object()))
|
||||||
{
|
{
|
||||||
if (auto it = m_value.object->find(key); it != m_value.object->end())
|
auto it = m_value.object->find(key);
|
||||||
|
if (it != m_value.object->end())
|
||||||
{
|
{
|
||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
return set_parent(m_value.object->operator[](json::object_t::key_type(key)));
|
auto result = m_value.object->emplace(key, nullptr);
|
||||||
|
return set_parent(result.first->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this));
|
JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this));
|
||||||
@ -21310,9 +21312,22 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(JSON_HAS_CPP_17)
|
#if defined(JSON_HAS_CPP_17)
|
||||||
size_type erase(std::string_view key)
|
size_type erase(const std::string_view& key)
|
||||||
{
|
{
|
||||||
return erase(typename object_t::key_type(key.data(), key.size()));
|
// this erase only works for objects
|
||||||
|
if (JSON_HEDLEY_UNLIKELY(!is_object()))
|
||||||
|
{
|
||||||
|
JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this));
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto it = m_value.object->find(key);
|
||||||
|
if (it != m_value.object->end())
|
||||||
|
{
|
||||||
|
m_value.object->erase(it);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user