partial
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 @@
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 @@
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 {