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