Commit c1a57c37 authored by Milo Yip's avatar Milo Yip

Merge pull request #175 from pah/cleanup/index-operator

GenericValue: improve documentation for operator[]
parents 838d5130 6bd5ecb0
...@@ -795,8 +795,9 @@ public: ...@@ -795,8 +795,9 @@ public:
//! Check whether the object is empty. //! Check whether the object is empty.
bool ObjectEmpty() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size == 0; } bool ObjectEmpty() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size == 0; }
//! Get the value associated with the name. //! Get a value from an object associated with the name.
/*! /*! \pre IsObject() == true
\tparam T Either \c Ch or \c const \c Ch (template used for disambiguation with \ref operator[](SizeType))
\note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7. \note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7.
Since 0.2, if the name is not correct, it will assert. Since 0.2, if the name is not correct, it will assert.
If user is unsure whether a member exists, user should use HasMember() first. If user is unsure whether a member exists, user should use HasMember() first.
...@@ -811,10 +812,15 @@ public: ...@@ -811,10 +812,15 @@ public:
template <typename T> template <typename T>
RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >),(const GenericValue&)) operator[](T* name) const { return const_cast<GenericValue&>(*this)[name]; } RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >),(const GenericValue&)) operator[](T* name) const { return const_cast<GenericValue&>(*this)[name]; }
//! Get a value from an object associated with the name.
/*! \pre IsObject() == true
\tparam SourceAllocator Allocator of the \c name value
public: \note Compared to \ref operator[](T*), this version is faster because it does not need a StrLen().
// This version is faster because it does not need a StrLen(). And it can also handle strings with embedded null characters.
// It can also handle string with null character.
\note Linear time complexity.
*/
template <typename SourceAllocator> template <typename SourceAllocator>
GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) { GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) {
MemberIterator member = FindMember(name); MemberIterator member = FindMember(name);
...@@ -1136,7 +1142,9 @@ public: ...@@ -1136,7 +1142,9 @@ public:
} }
//! Get an element from array by index. //! Get an element from array by index.
/*! \param index Zero-based index of element. /*! \pre IsArray() == true
\param index Zero-based index of element.
\see operator[](T*)
*/ */
GenericValue& operator[](SizeType index) { GenericValue& operator[](SizeType index) {
RAPIDJSON_ASSERT(IsArray()); RAPIDJSON_ASSERT(IsArray());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment