| 571 | } |
| 572 | |
| 573 | json etf_parser::inner_parse() { |
| 574 | /* Decode one value into json from ETF */ |
| 575 | if (offset >= size) { |
| 576 | throw dpp::parse_exception(err_etf, "Read past end of ETF buffer"); |
| 577 | } |
| 578 | |
| 579 | const uint8_t type = read_8_bits(); |
| 580 | |
| 581 | switch(type) { |
| 582 | case ett_distribution: |
| 583 | throw dpp::parse_exception(err_etf, "Distribution headers are not supported"); |
| 584 | case ett_smallint: |
| 585 | return decode_small_integer(); |
| 586 | case ett_integer: |
| 587 | return decode_integer(); |
| 588 | case ett_float: |
| 589 | return decode_float(); |
| 590 | case ett_new_float: |
| 591 | return decode_new_float(); |
| 592 | case ett_atom: |
| 593 | return decode_atom(); |
| 594 | case ett_atom_small: |
| 595 | return decode_small_atom(); |
| 596 | case ett_small_tuple: |
| 597 | return decode_tuple_small(); |
| 598 | case ett_large_tuple: |
| 599 | return decode_tuple_large(); |
| 600 | case ett_nil: |
| 601 | return decode_nil(); |
| 602 | case ett_string: |
| 603 | return decode_string_as_list(); |
| 604 | case ett_list: |
| 605 | return decode_list(); |
| 606 | case ett_map: |
| 607 | return decode_map(); |
| 608 | case ett_binary: |
| 609 | return decode_binary(); |
| 610 | case ett_bigint_small: |
| 611 | return decode_bigint_small(); |
| 612 | case ett_bigint_large: |
| 613 | return decode_bigint_large(); |
| 614 | case ett_reference: |
| 615 | return decode_reference(); |
| 616 | case ett_new_reference: |
| 617 | return decode_new_reference(); |
| 618 | case ett_port: |
| 619 | return decode_port(); |
| 620 | case ett_pid: |
| 621 | return decode_pid(); |
| 622 | case ett_export: |
| 623 | return decode_export(); |
| 624 | case ett_compressed: |
| 625 | return decode_compressed(); |
| 626 | default: |
| 627 | throw dpp::parse_exception(err_etf, "Unknown data type in ETF"); |
| 628 | } |
| 629 | } |
| 630 |
nothing calls this directly
no test coverage detected