MCPcopy Create free account
hub / github.com/brainboxdotcc/DPP / inner_parse

Method inner_parse

src/dpp/etf.cpp:573–629  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

571}
572
573json 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

Callers

nothing calls this directly

Calls 1

parse_exceptionClass · 0.85

Tested by

no test coverage detected