| 428 | } |
| 429 | |
| 430 | void working_with_cbor3() |
| 431 | { |
| 432 | cbor::cbor_bytes_cursor cursor(data); |
| 433 | for (; !cursor.done(); cursor.next()) |
| 434 | { |
| 435 | const auto& event = cursor.current(); |
| 436 | switch (event.event_type()) |
| 437 | { |
| 438 | case staj_event_type::begin_array: |
| 439 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 440 | break; |
| 441 | case staj_event_type::end_array: |
| 442 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 443 | break; |
| 444 | case staj_event_type::begin_object: |
| 445 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 446 | break; |
| 447 | case staj_event_type::end_object: |
| 448 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 449 | break; |
| 450 | case staj_event_type::key: |
| 451 | // Or std::string_view, if supported |
| 452 | std::cout << event.event_type() << ": " << event.get<jsoncons::string_view>() << " " << "(" << event.tag() << ")\n"; |
| 453 | break; |
| 454 | case staj_event_type::string_value: |
| 455 | // Or std::string_view, if supported |
| 456 | std::cout << event.event_type() << ": " << event.get<jsoncons::string_view>() << " " << "(" << event.tag() << ")\n"; |
| 457 | break; |
| 458 | case staj_event_type::byte_string_value: |
| 459 | std::cout << event.event_type() << ": " << event.get<jsoncons::byte_string_view>() << " " << "(" << event.tag() << ")\n"; |
| 460 | break; |
| 461 | case staj_event_type::null_value: |
| 462 | std::cout << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 463 | break; |
| 464 | case staj_event_type::bool_value: |
| 465 | std::cout << event.event_type() << ": " << std::boolalpha << event.get<bool>() << " " << "(" << event.tag() << ")\n"; |
| 466 | break; |
| 467 | case staj_event_type::int64_value: |
| 468 | std::cout << event.event_type() << ": " << event.get<int64_t>() << " " << "(" << event.tag() << ")\n"; |
| 469 | break; |
| 470 | case staj_event_type::uint64_value: |
| 471 | std::cout << event.event_type() << ": " << event.get<uint64_t>() << " " << "(" << event.tag() << ")\n"; |
| 472 | break; |
| 473 | case staj_event_type::half_value: |
| 474 | case staj_event_type::double_value: |
| 475 | std::cout << event.event_type() << ": " << event.get<double>() << " " << "(" << event.tag() << ")\n"; |
| 476 | break; |
| 477 | default: |
| 478 | std::cout << "Unhandled event type " << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 479 | break; |
| 480 | } |
| 481 | } |
| 482 | } |
| 483 | |
| 484 | void working_with_cbor4() |
| 485 | { |