! @brief dereference the iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */
| 13108 | @pre The iterator is initialized; i.e. `m_object != nullptr`. |
| 13109 | */ |
| 13110 | pointer operator->() const |
| 13111 | { |
| 13112 | JSON_ASSERT(m_object != nullptr); |
| 13113 | |
| 13114 | switch (m_object->m_type) |
| 13115 | { |
| 13116 | case value_t::object: |
| 13117 | { |
| 13118 | JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); |
| 13119 | return &(m_it.object_iterator->second); |
| 13120 | } |
| 13121 | |
| 13122 | case value_t::array: |
| 13123 | { |
| 13124 | JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); |
| 13125 | return &*m_it.array_iterator; |
| 13126 | } |
| 13127 | |
| 13128 | case value_t::null: |
| 13129 | case value_t::string: |
| 13130 | case value_t::boolean: |
| 13131 | case value_t::number_integer: |
| 13132 | case value_t::number_unsigned: |
| 13133 | case value_t::number_float: |
| 13134 | case value_t::binary: |
| 13135 | case value_t::discarded: |
| 13136 | default: |
| 13137 | { |
| 13138 | if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) |
| 13139 | { |
| 13140 | return m_object; |
| 13141 | } |
| 13142 | |
| 13143 | JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); |
| 13144 | } |
| 13145 | } |
| 13146 | } |
| 13147 | |
| 13148 | /*! |
| 13149 | @brief post-increment (it++) |