diff --git a/JSON/include/Poco/JSON/Array.h b/JSON/include/Poco/JSON/Array.h index 84c5f6f86..2e038f58b 100644 --- a/JSON/include/Poco/JSON/Array.h +++ b/JSON/include/Poco/JSON/Array.h @@ -34,10 +34,10 @@ class Object; class JSON_API Array /// Represents a JSON array. Array provides a representation - /// based on shared pointers and optimized for performance. It is possible to + /// based on shared pointers and optimized for performance. It is possible to /// convert Array to Poco::Dynamic::Array. Conversion requires copying and therefore /// has performance penalty; the benefit is in improved syntax, eg: - /// + /// /// // use pointers to avoid copying /// using namespace Poco::JSON; /// std::string json = "[ {\"test\" : 0}, { \"test1\" : [1, 2, 3], \"test2\" : 4 } ]"; @@ -49,7 +49,7 @@ class JSON_API Array /// Object::Ptr subObject = *arr->getObject(1); // subObject == {\"test\" : 0} /// Array subArr::Ptr = subObject->getArray("test1"); // subArr == [1, 2, 3] /// i = result = subArr->get(0); // i == 1; - /// + /// /// // copy/convert to Poco::Dynamic::Array /// Poco::Dynamic::Array da = *arr; /// i = da[0]["test"]; // i == 0 @@ -102,7 +102,7 @@ public: /// Returns the end iterator for values. Dynamic::Var get(unsigned int index) const; - /// Retrieves the element at the given index. + /// Retrieves the element at the given index. /// Will return an empty value when the element doesn't exist. Array::Ptr getArray(unsigned int index) const; @@ -172,10 +172,10 @@ public: return value; } - void add(const Dynamic::Var& value); + Array& add(const Dynamic::Var& value); /// Add the given value to the array - void set(unsigned int index, const Dynamic::Var& value); + Array& set(unsigned int index, const Dynamic::Var& value); /// Update the element on the given index to specified value void stringify(std::ostream& out, unsigned int indent = 0, int step = -1) const; @@ -264,18 +264,20 @@ inline bool Array::isArray(ConstIterator& it) const } -inline void Array::add(const Dynamic::Var& value) +inline Array& Array::add(const Dynamic::Var& value) { _values.push_back(value); _modified = true; + return *this; } -inline void Array::set(unsigned int index, const Dynamic::Var& value) +inline Array& Array::set(unsigned int index, const Dynamic::Var& value) { if (index >= _values.size()) _values.resize(index + 1); _values[index] = value; _modified = true; + return *this; } diff --git a/JSON/include/Poco/JSON/Object.h b/JSON/include/Poco/JSON/Object.h index 99dd8a331..cddeccfb5 100644 --- a/JSON/include/Poco/JSON/Object.h +++ b/JSON/include/Poco/JSON/Object.h @@ -42,18 +42,18 @@ class JSON_API Object /// shared pointers and optimized for performance. It is possible to /// convert Object to DynamicStruct. Conversion requires copying and therefore /// has performance penalty; the benefit is in improved syntax, eg: - /// + /// /// std::string json = "{ \"test\" : { \"property\" : \"value\" } }"; /// Parser parser; /// Var result = parser.parse(json); - /// + /// /// // use pointers to avoid copying /// Object::Ptr object = result.extract(); /// Var test = object->get("test"); // holds { "property" : "value" } /// Object::Ptr subObject = test.extract(); /// test = subObject->get("property"); /// std::string val = test.toString(); // val holds "value" - /// + /// /// // copy/convert to Poco::DynamicStruct /// Poco::DynamicStruct ds = *object; /// val = ds["test"]["property"]; // val holds "value" @@ -148,7 +148,7 @@ public: Poco::Nullable getNullableValue(const std::string& key) const /// Retrieves the property with the given name and will /// try to convert the value to the given template type. - /// + /// /// The convert method of Var is called /// which can also throw exceptions for invalid values. /// Note: This will not work for an array or an object. @@ -209,13 +209,13 @@ public: std::size_t size() const; /// Returns the number of properties. - void set(const std::string& key, const Dynamic::Var& value); + Object& set(const std::string& key, const Dynamic::Var& value); /// Sets a new value. void stringify(std::ostream& out, unsigned int indent = 0, int step = -1) const; - /// Prints the object to out stream. + /// Prints the object to out stream. /// - /// When indent is 0, the object will be printed on a single + /// When indent is 0, the object will be printed on a single /// line without indentation. void remove(const std::string& key); diff --git a/JSON/src/Object.cpp b/JSON/src/Object.cpp index 7fca65c5b..a2eeef90e 100644 --- a/JSON/src/Object.cpp +++ b/JSON/src/Object.cpp @@ -199,7 +199,7 @@ const std::string& Object::getKey(KeyList::const_iterator& iter) const } -void Object::set(const std::string& key, const Dynamic::Var& value) +Object& Object::set(const std::string& key, const Dynamic::Var& value) { std::pair ret = _values.insert(ValueMap::value_type(key, value)); if (!ret.second) ret.first->second = value; @@ -209,11 +209,12 @@ void Object::set(const std::string& key, const Dynamic::Var& value) KeyList::iterator end = _keys.end(); for (; it != end; ++it) { - if (key == (*it)->first) return; + if (key == (*it)->first) return *this; } _keys.push_back(ret.first); } _modified = true; + return *this; }