MCPcopy Create free account
hub / github.com/danielaparker/jsoncons / write_decimal_value

Function write_decimal_value

include/jsoncons_ext/cbor/cbor_encoder.hpp:596–743  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

594 }
595
596 void write_decimal_value(const string_view_type& sv, const ser_context& context, std::error_code& ec)
597 {
598 decimal_parse_state state = decimal_parse_state::start;
599 std::basic_string<char> s;
600 std::basic_string<char> exponent;
601 int64_t scale = 0;
602 for (auto c : sv)
603 {
604 switch (state)
605 {
606 case decimal_parse_state::start:
607 {
608 switch (c)
609 {
610 case '-':
611 case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':
612 s.push_back(c);
613 state = decimal_parse_state::integer;
614 break;
615 case '+':
616 state = decimal_parse_state::integer;
617 break;
618 case '.':
619 state = decimal_parse_state::fraction1;
620 break;
621 default:
622 {
623 ec = cbor_errc::invalid_decimal_fraction;
624 return;
625 }
626 }
627 break;
628 }
629 case decimal_parse_state::integer:
630 {
631 switch (c)
632 {
633 case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':
634 s.push_back(c);
635 break;
636 case 'e': case 'E':
637 state = decimal_parse_state::exp1;
638 break;
639 case '.':
640 state = decimal_parse_state::fraction1;
641 break;
642 default:
643 {
644 ec = cbor_errc::invalid_decimal_fraction;
645 return;
646 }
647 }
648 break;
649 }
650 case decimal_parse_state::exp1:
651 {
652 switch (c)
653 {

Callers 1

visit_stringFunction · 0.85

Calls 11

write_tagFunction · 0.85
dec_to_integerFunction · 0.85
write_bignumFunction · 0.85
visit_begin_arrayFunction · 0.70
visit_int64Function · 0.70
end_valueFunction · 0.70
visit_end_arrayFunction · 0.70
push_backMethod · 0.45
lengthMethod · 0.45
dataMethod · 0.45
error_codeMethod · 0.45

Tested by

no test coverage detected