| 482 | } |
| 483 | |
| 484 | void working_with_cbor4() |
| 485 | { |
| 486 | auto filter = [&](const staj_event& ev, const ser_context&) -> bool |
| 487 | { |
| 488 | return (ev.tag() == semantic_tag::bigdec) || (ev.tag() == semantic_tag::bigfloat); |
| 489 | }; |
| 490 | |
| 491 | cbor::cbor_bytes_cursor cursor(data); |
| 492 | |
| 493 | auto filtered_c = cursor | filter; |
| 494 | for (; !filtered_c.done(); filtered_c.next()) |
| 495 | { |
| 496 | const auto& event = filtered_c.current(); |
| 497 | switch (event.event_type()) |
| 498 | { |
| 499 | case staj_event_type::string_value: |
| 500 | // Or std::string_view, if supported |
| 501 | std::cout << event.event_type() << ": " << event.get<jsoncons::string_view>() << " " << "(" << event.tag() << ")\n"; |
| 502 | break; |
| 503 | default: |
| 504 | std::cout << "Unhandled event type " << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 505 | break; |
| 506 | } |
| 507 | } |
| 508 | } |
| 509 | |
| 510 | void ext_type_example() |
| 511 | { |