clarified documentation

This commit is contained in:
Niels 2016-02-07 10:45:52 +01:00
parent 8b1a777d36
commit 3b776c08c7
2 changed files with 16 additions and 14 deletions

View file

@ -3144,7 +3144,7 @@ class basic_json
@return reference to the element at index @a idx @return reference to the element at index @a idx
@throw std::domain_error if JSON is not an array or null; example: `"cannot @throw std::domain_error if JSON is not an array or null; example: `"cannot
use operator[] with null"` use operator[] with string"`
@complexity Constant if @a idx is in the range of the array. Otherwise @complexity Constant if @a idx is in the range of the array. Otherwise
linear in `idx - size()`. linear in `idx - size()`.
@ -3157,16 +3157,17 @@ class basic_json
*/ */
reference operator[](size_type idx) reference operator[](size_type idx)
{ {
// implicitly convert null to object // implicitly convert null value to an empty array
if (is_null()) if (is_null())
{ {
m_type = value_t::array; m_type = value_t::array;
m_value.array = create<array_t>(); m_value.array = create<array_t>();
} }
// [] only works for arrays // operator[] only works for arrays
if (is_array()) if (is_array())
{ {
// fill up array with null values until given idx is reached
assert(m_value.array != nullptr); assert(m_value.array != nullptr);
for (size_t i = m_value.array->size(); i <= idx; ++i) for (size_t i = m_value.array->size(); i <= idx; ++i)
{ {
@ -3202,7 +3203,7 @@ class basic_json
*/ */
const_reference operator[](size_type idx) const const_reference operator[](size_type idx) const
{ {
// at only works for arrays // const operator[] only works for arrays
if (is_array()) if (is_array())
{ {
assert(m_value.array != nullptr); assert(m_value.array != nullptr);
@ -3243,14 +3244,14 @@ class basic_json
*/ */
reference operator[](const typename object_t::key_type& key) reference operator[](const typename object_t::key_type& key)
{ {
// implicitly convert null to object // implicitly convert null value to an empty object
if (is_null()) if (is_null())
{ {
m_type = value_t::object; m_type = value_t::object;
m_value.object = create<object_t>(); m_value.object = create<object_t>();
} }
// [] only works for objects // operator[] only works for objects
if (is_object()) if (is_object())
{ {
assert(m_value.object != nullptr); assert(m_value.object != nullptr);
@ -3291,7 +3292,7 @@ class basic_json
*/ */
const_reference operator[](const typename object_t::key_type& key) const const_reference operator[](const typename object_t::key_type& key) const
{ {
// [] only works for objects // const operator[] only works for objects
if (is_object()) if (is_object())
{ {
assert(m_value.object != nullptr); assert(m_value.object != nullptr);

View file

@ -3144,7 +3144,7 @@ class basic_json
@return reference to the element at index @a idx @return reference to the element at index @a idx
@throw std::domain_error if JSON is not an array or null; example: `"cannot @throw std::domain_error if JSON is not an array or null; example: `"cannot
use operator[] with null"` use operator[] with string"`
@complexity Constant if @a idx is in the range of the array. Otherwise @complexity Constant if @a idx is in the range of the array. Otherwise
linear in `idx - size()`. linear in `idx - size()`.
@ -3157,16 +3157,17 @@ class basic_json
*/ */
reference operator[](size_type idx) reference operator[](size_type idx)
{ {
// implicitly convert null to object // implicitly convert null value to an empty array
if (is_null()) if (is_null())
{ {
m_type = value_t::array; m_type = value_t::array;
m_value.array = create<array_t>(); m_value.array = create<array_t>();
} }
// [] only works for arrays // operator[] only works for arrays
if (is_array()) if (is_array())
{ {
// fill up array with null values until given idx is reached
assert(m_value.array != nullptr); assert(m_value.array != nullptr);
for (size_t i = m_value.array->size(); i <= idx; ++i) for (size_t i = m_value.array->size(); i <= idx; ++i)
{ {
@ -3202,7 +3203,7 @@ class basic_json
*/ */
const_reference operator[](size_type idx) const const_reference operator[](size_type idx) const
{ {
// at only works for arrays // const operator[] only works for arrays
if (is_array()) if (is_array())
{ {
assert(m_value.array != nullptr); assert(m_value.array != nullptr);
@ -3243,14 +3244,14 @@ class basic_json
*/ */
reference operator[](const typename object_t::key_type& key) reference operator[](const typename object_t::key_type& key)
{ {
// implicitly convert null to object // implicitly convert null value to an empty object
if (is_null()) if (is_null())
{ {
m_type = value_t::object; m_type = value_t::object;
m_value.object = create<object_t>(); m_value.object = create<object_t>();
} }
// [] only works for objects // operator[] only works for objects
if (is_object()) if (is_object())
{ {
assert(m_value.object != nullptr); assert(m_value.object != nullptr);
@ -3291,7 +3292,7 @@ class basic_json
*/ */
const_reference operator[](const typename object_t::key_type& key) const const_reference operator[](const typename object_t::key_type& key) const
{ {
// [] only works for objects // const operator[] only works for objects
if (is_object()) if (is_object())
{ {
assert(m_value.object != nullptr); assert(m_value.object != nullptr);