! @brief return a reference to the value pointed to by the iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */
| 11004 | @pre The iterator is initialized; i.e. `m_object != nullptr`. |
| 11005 | */ |
| 11006 | reference operator*() const |
| 11007 | { |
| 11008 | JSON_ASSERT(m_object != nullptr); |
| 11009 | |
| 11010 | switch (m_object->m_type) |
| 11011 | { |
| 11012 | case value_t::object: |
| 11013 | { |
| 11014 | JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); |
| 11015 | return m_it.object_iterator->second; |
| 11016 | } |
| 11017 | |
| 11018 | case value_t::array: |
| 11019 | { |
| 11020 | JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); |
| 11021 | return *m_it.array_iterator; |
| 11022 | } |
| 11023 | |
| 11024 | case value_t::null: |
| 11025 | JSON_THROW(invalid_iterator::create(214, "cannot get value")); |
| 11026 | |
| 11027 | default: |
| 11028 | { |
| 11029 | if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) |
| 11030 | { |
| 11031 | return *m_object; |
| 11032 | } |
| 11033 | |
| 11034 | JSON_THROW(invalid_iterator::create(214, "cannot get value")); |
| 11035 | } |
| 11036 | } |
| 11037 | } |
| 11038 | |
| 11039 | /*! |
| 11040 | @brief dereference the iterator |