| 128 | } |
| 129 | |
| 130 | void working_with_ubjson_3() |
| 131 | { |
| 132 | ubjson::ubjson_bytes_cursor cursor(data); |
| 133 | for (; !cursor.done(); cursor.next()) |
| 134 | { |
| 135 | const auto& event = cursor.current(); |
| 136 | switch (event.event_type()) |
| 137 | { |
| 138 | case staj_event_type::begin_array: |
| 139 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 140 | break; |
| 141 | case staj_event_type::end_array: |
| 142 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 143 | break; |
| 144 | case staj_event_type::begin_object: |
| 145 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 146 | break; |
| 147 | case staj_event_type::end_object: |
| 148 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 149 | break; |
| 150 | case staj_event_type::key: |
| 151 | // Or std::string_view, if supported |
| 152 | std::cout << event.event_type() << ": " << event.get<jsoncons::string_view>() << " " << "(" << event.tag() << ")\n"; |
| 153 | break; |
| 154 | case staj_event_type::string_value: |
| 155 | // Or std::string_view, if supported |
| 156 | std::cout << event.event_type() << ": " << event.get<jsoncons::string_view>() << " " << "(" << event.tag() << ")\n"; |
| 157 | break; |
| 158 | case staj_event_type::null_value: |
| 159 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 160 | break; |
| 161 | case staj_event_type::bool_value: |
| 162 | std::cout << event.event_type() << ": " << std::boolalpha << event.get<bool>() << " " << "(" << event.tag() << ")\n"; |
| 163 | break; |
| 164 | case staj_event_type::int64_value: |
| 165 | std::cout << event.event_type() << ": " << event.get<int64_t>() << " " << "(" << event.tag() << ")\n"; |
| 166 | break; |
| 167 | case staj_event_type::uint64_value: |
| 168 | std::cout << event.event_type() << ": " << event.get<uint64_t>() << " " << "(" << event.tag() << ")\n"; |
| 169 | break; |
| 170 | case staj_event_type::double_value: |
| 171 | std::cout << event.event_type() << ": " << event.get<double>() << " " << "(" << event.tag() << ")\n"; |
| 172 | break; |
| 173 | default: |
| 174 | std::cout << "Unhandled event type " << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 175 | break; |
| 176 | } |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | void working_with_ubjson_4() |
| 181 | { |