! @brief return a reference to the value pointed to by the iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */
| 9544 | @pre The iterator is initialized; i.e. `m_object != nullptr`. |
| 9545 | */ |
| 9546 | reference operator*() const |
| 9547 | { |
| 9548 | assert(m_object != nullptr); |
| 9549 | |
| 9550 | switch (m_object->m_type) |
| 9551 | { |
| 9552 | case value_t::object: |
| 9553 | { |
| 9554 | assert(m_it.object_iterator != m_object->m_value.object->end()); |
| 9555 | return m_it.object_iterator->second; |
| 9556 | } |
| 9557 | |
| 9558 | case value_t::array: |
| 9559 | { |
| 9560 | assert(m_it.array_iterator != m_object->m_value.array->end()); |
| 9561 | return *m_it.array_iterator; |
| 9562 | } |
| 9563 | |
| 9564 | case value_t::null: |
| 9565 | JSON_THROW(invalid_iterator::create(214, "cannot get value")); |
| 9566 | |
| 9567 | default: |
| 9568 | { |
| 9569 | if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) |
| 9570 | { |
| 9571 | return *m_object; |
| 9572 | } |
| 9573 | |
| 9574 | JSON_THROW(invalid_iterator::create(214, "cannot get value")); |
| 9575 | } |
| 9576 | } |
| 9577 | } |
| 9578 | |
| 9579 | /*! |
| 9580 | @brief dereference the iterator |