Add GenericValue::EraseMember(string types) APIs
This commit is contained in:
parent
1a570c342d
commit
6e1d10ec6b
@ -1213,6 +1213,31 @@ public:
|
|||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Erase a member in object by its name.
|
||||||
|
/*! \param name Name of member to be removed.
|
||||||
|
\return Whether the member existed.
|
||||||
|
\note Linear time complexity.
|
||||||
|
*/
|
||||||
|
bool EraseMember(const Ch* name) {
|
||||||
|
GenericValue n(StringRef(name));
|
||||||
|
return EraseMember(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if RAPIDJSON_HAS_STDSTRING
|
||||||
|
bool EraseMember(const std::basic_string<Ch>& name) { return EraseMember(GenericValue(StringRef(name))); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template <typename SourceAllocator>
|
||||||
|
bool EraseMember(const GenericValue<Encoding, SourceAllocator>& name) {
|
||||||
|
MemberIterator m = FindMember(name);
|
||||||
|
if (m != MemberEnd()) {
|
||||||
|
EraseMember(m);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
//!@name Array
|
//!@name Array
|
||||||
|
@ -1182,6 +1182,24 @@ TEST(Value, Object) {
|
|||||||
EXPECT_TRUE(z.IsObject());
|
EXPECT_TRUE(z.IsObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Value, EraseMember_String) {
|
||||||
|
Value::AllocatorType allocator;
|
||||||
|
Value x(kObjectType);
|
||||||
|
x.AddMember("A", "Apple", allocator);
|
||||||
|
x.AddMember("B", "Banana", allocator);
|
||||||
|
|
||||||
|
EXPECT_TRUE(x.EraseMember("B"));
|
||||||
|
EXPECT_FALSE(x.HasMember("B"));
|
||||||
|
|
||||||
|
EXPECT_FALSE(x.EraseMember("nonexist"));
|
||||||
|
|
||||||
|
GenericValue<UTF8<>, CrtAllocator> othername("A");
|
||||||
|
EXPECT_TRUE(x.EraseMember(othername));
|
||||||
|
EXPECT_FALSE(x.HasMember("A"));
|
||||||
|
|
||||||
|
EXPECT_TRUE(x.MemberBegin() == x.MemberEnd());
|
||||||
|
}
|
||||||
|
|
||||||
TEST(Value, BigNestedArray) {
|
TEST(Value, BigNestedArray) {
|
||||||
MemoryPoolAllocator<> allocator;
|
MemoryPoolAllocator<> allocator;
|
||||||
Value x(kArrayType);
|
Value x(kArrayType);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user