This commit is contained in:
Christopher Dunn 2015-01-20 16:15:40 -06:00
parent 7956ccd61e
commit 9de2c2d84d
2 changed files with 17 additions and 0 deletions

View File

@ -395,6 +395,15 @@ Json::Value obj_value(Json::objectValue); // {}
Value removeMember(const char* key); Value removeMember(const char* key);
/// Same as removeMember(const char*) /// Same as removeMember(const char*)
Value removeMember(const std::string& key); Value removeMember(const std::string& key);
/** \brief Remove the indexed array element.
O(n) expensive operations.
Update 'removed' iff removed.
(This is a better pattern than removeMember().)
JSON_FAIL if !isValidIndex(i) or if not arrayObject
\return true iff removed
*/
bool removeIndex(ArrayIndex i, Value* removed);
/// Return true if the object has a member named key. /// Return true if the object has a member named key.
bool isMember(const char* key) const; bool isMember(const char* key) const;

View File

@ -1018,6 +1018,14 @@ Value Value::removeMember(const std::string& key) {
return removeMember(key.c_str()); return removeMember(key.c_str());
} }
bool Value::removeIndex(ArrayIndex i, Value* removed) {
JSON_ASSERT_MESSAGE(this->type_ == arrayValue,
"in Json::Value::removeIndex(): requires arrayValue");
JSON_ASSERT_MESSAGE(this->isValidIndex(i),
"invalid index i=" << i << " for array of size " << this->size());
return true;
}
#ifdef JSON_USE_CPPTL #ifdef JSON_USE_CPPTL
Value Value::get(const CppTL::ConstString& key, Value Value::get(const CppTL::ConstString& key,
const Value& defaultValue) const { const Value& defaultValue) const {