From 9de2c2d84d3655c76db876cd38c1faf23126422d Mon Sep 17 00:00:00 2001 From: Christopher Dunn Date: Tue, 20 Jan 2015 16:15:40 -0600 Subject: [PATCH] partial --- include/json/value.h | 9 +++++++++ src/lib_json/json_value.cpp | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/include/json/value.h b/include/json/value.h index 78e7546..18355d0 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -395,6 +395,15 @@ Json::Value obj_value(Json::objectValue); // {} Value removeMember(const char* key); /// Same as removeMember(const char*) 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. bool isMember(const char* key) const; diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index 0a7fb85..aa9bfb4 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -1018,6 +1018,14 @@ Value Value::removeMember(const std::string& key) { 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 Value Value::get(const CppTL::ConstString& key, const Value& defaultValue) const {