9594 {
9596 {
9597
9598 case std::char_traits<char_type>::eof():
9600
9601
9602 case 0x00:
9603 case 0x01:
9604 case 0x02:
9605 case 0x03:
9606 case 0x04:
9607 case 0x05:
9608 case 0x06:
9609 case 0x07:
9610 case 0x08:
9611 case 0x09:
9612 case 0x0A:
9613 case 0x0B:
9614 case 0x0C:
9615 case 0x0D:
9616 case 0x0E:
9617 case 0x0F:
9618 case 0x10:
9619 case 0x11:
9620 case 0x12:
9621 case 0x13:
9622 case 0x14:
9623 case 0x15:
9624 case 0x16:
9625 case 0x17:
9626 case 0x18:
9627 case 0x19:
9628 case 0x1A:
9629 case 0x1B:
9630 case 0x1C:
9631 case 0x1D:
9632 case 0x1E:
9633 case 0x1F:
9634 case 0x20:
9635 case 0x21:
9636 case 0x22:
9637 case 0x23:
9638 case 0x24:
9639 case 0x25:
9640 case 0x26:
9641 case 0x27:
9642 case 0x28:
9643 case 0x29:
9644 case 0x2A:
9645 case 0x2B:
9646 case 0x2C:
9647 case 0x2D:
9648 case 0x2E:
9649 case 0x2F:
9650 case 0x30:
9651 case 0x31:
9652 case 0x32:
9653 case 0x33:
9654 case 0x34:
9655 case 0x35:
9656 case 0x36:
9657 case 0x37:
9658 case 0x38:
9659 case 0x39:
9660 case 0x3A:
9661 case 0x3B:
9662 case 0x3C:
9663 case 0x3D:
9664 case 0x3E:
9665 case 0x3F:
9666 case 0x40:
9667 case 0x41:
9668 case 0x42:
9669 case 0x43:
9670 case 0x44:
9671 case 0x45:
9672 case 0x46:
9673 case 0x47:
9674 case 0x48:
9675 case 0x49:
9676 case 0x4A:
9677 case 0x4B:
9678 case 0x4C:
9679 case 0x4D:
9680 case 0x4E:
9681 case 0x4F:
9682 case 0x50:
9683 case 0x51:
9684 case 0x52:
9685 case 0x53:
9686 case 0x54:
9687 case 0x55:
9688 case 0x56:
9689 case 0x57:
9690 case 0x58:
9691 case 0x59:
9692 case 0x5A:
9693 case 0x5B:
9694 case 0x5C:
9695 case 0x5D:
9696 case 0x5E:
9697 case 0x5F:
9698 case 0x60:
9699 case 0x61:
9700 case 0x62:
9701 case 0x63:
9702 case 0x64:
9703 case 0x65:
9704 case 0x66:
9705 case 0x67:
9706 case 0x68:
9707 case 0x69:
9708 case 0x6A:
9709 case 0x6B:
9710 case 0x6C:
9711 case 0x6D:
9712 case 0x6E:
9713 case 0x6F:
9714 case 0x70:
9715 case 0x71:
9716 case 0x72:
9717 case 0x73:
9718 case 0x74:
9719 case 0x75:
9720 case 0x76:
9721 case 0x77:
9722 case 0x78:
9723 case 0x79:
9724 case 0x7A:
9725 case 0x7B:
9726 case 0x7C:
9727 case 0x7D:
9728 case 0x7E:
9729 case 0x7F:
9730 return sax->number_unsigned(
static_cast<number_unsigned_t
>(
current));
9731
9732
9733 case 0x80:
9734 case 0x81:
9735 case 0x82:
9736 case 0x83:
9737 case 0x84:
9738 case 0x85:
9739 case 0x86:
9740 case 0x87:
9741 case 0x88:
9742 case 0x89:
9743 case 0x8A:
9744 case 0x8B:
9745 case 0x8C:
9746 case 0x8D:
9747 case 0x8E:
9748 case 0x8F:
9750
9751
9752 case 0x90:
9753 case 0x91:
9754 case 0x92:
9755 case 0x93:
9756 case 0x94:
9757 case 0x95:
9758 case 0x96:
9759 case 0x97:
9760 case 0x98:
9761 case 0x99:
9762 case 0x9A:
9763 case 0x9B:
9764 case 0x9C:
9765 case 0x9D:
9766 case 0x9E:
9767 case 0x9F:
9769
9770
9771 case 0xA0:
9772 case 0xA1:
9773 case 0xA2:
9774 case 0xA3:
9775 case 0xA4:
9776 case 0xA5:
9777 case 0xA6:
9778 case 0xA7:
9779 case 0xA8:
9780 case 0xA9:
9781 case 0xAA:
9782 case 0xAB:
9783 case 0xAC:
9784 case 0xAD:
9785 case 0xAE:
9786 case 0xAF:
9787 case 0xB0:
9788 case 0xB1:
9789 case 0xB2:
9790 case 0xB3:
9791 case 0xB4:
9792 case 0xB5:
9793 case 0xB6:
9794 case 0xB7:
9795 case 0xB8:
9796 case 0xB9:
9797 case 0xBA:
9798 case 0xBB:
9799 case 0xBC:
9800 case 0xBD:
9801 case 0xBE:
9802 case 0xBF:
9803 case 0xD9:
9804 case 0xDA:
9805 case 0xDB:
9806 {
9807 string_t s;
9809 }
9810
9811 case 0xC0:
9813
9814 case 0xC2:
9815 return sax->boolean(
false);
9816
9817 case 0xC3:
9818 return sax->boolean(
true);
9819
9820 case 0xC4:
9821 case 0xC5:
9822 case 0xC6:
9823 case 0xC7:
9824 case 0xC8:
9825 case 0xC9:
9826 case 0xD4:
9827 case 0xD5:
9828 case 0xD6:
9829 case 0xD7:
9830 case 0xD8:
9831 {
9832 binary_t b;
9834 }
9835
9836 case 0xCA:
9837 {
9838 float number{};
9839 return get_number(input_format_t::msgpack, number) &&
sax->number_float(
static_cast<number_float_t
>(number),
"");
9840 }
9841
9842 case 0xCB:
9843 {
9844 double number{};
9845 return get_number(input_format_t::msgpack, number) &&
sax->number_float(
static_cast<number_float_t
>(number),
"");
9846 }
9847
9848 case 0xCC:
9849 {
9850 std::uint8_t number{};
9851 return get_number(input_format_t::msgpack, number) &&
sax->number_unsigned(number);
9852 }
9853
9854 case 0xCD:
9855 {
9856 std::uint16_t number{};
9857 return get_number(input_format_t::msgpack, number) &&
sax->number_unsigned(number);
9858 }
9859
9860 case 0xCE:
9861 {
9862 std::uint32_t number{};
9863 return get_number(input_format_t::msgpack, number) &&
sax->number_unsigned(number);
9864 }
9865
9866 case 0xCF:
9867 {
9868 std::uint64_t number{};
9869 return get_number(input_format_t::msgpack, number) &&
sax->number_unsigned(number);
9870 }
9871
9872 case 0xD0:
9873 {
9874 std::int8_t number{};
9875 return get_number(input_format_t::msgpack, number) &&
sax->number_integer(number);
9876 }
9877
9878 case 0xD1:
9879 {
9880 std::int16_t number{};
9881 return get_number(input_format_t::msgpack, number) &&
sax->number_integer(number);
9882 }
9883
9884 case 0xD2:
9885 {
9886 std::int32_t number{};
9887 return get_number(input_format_t::msgpack, number) &&
sax->number_integer(number);
9888 }
9889
9890 case 0xD3:
9891 {
9892 std::int64_t number{};
9893 return get_number(input_format_t::msgpack, number) &&
sax->number_integer(number);
9894 }
9895
9896 case 0xDC:
9897 {
9898 std::uint16_t len{};
9899 return get_number(input_format_t::msgpack, len) &&
get_msgpack_array(
static_cast<std::size_t
>(len));
9900 }
9901
9902 case 0xDD:
9903 {
9904 std::uint32_t len{};
9905 return get_number(input_format_t::msgpack, len) &&
get_msgpack_array(
static_cast<std::size_t
>(len));
9906 }
9907
9908 case 0xDE:
9909 {
9910 std::uint16_t len{};
9911 return get_number(input_format_t::msgpack, len) &&
get_msgpack_object(
static_cast<std::size_t
>(len));
9912 }
9913
9914 case 0xDF:
9915 {
9916 std::uint32_t len{};
9917 return get_number(input_format_t::msgpack, len) &&
get_msgpack_object(
static_cast<std::size_t
>(len));
9918 }
9919
9920
9921 case 0xE0:
9922 case 0xE1:
9923 case 0xE2:
9924 case 0xE3:
9925 case 0xE4:
9926 case 0xE5:
9927 case 0xE6:
9928 case 0xE7:
9929 case 0xE8:
9930 case 0xE9:
9931 case 0xEA:
9932 case 0xEB:
9933 case 0xEC:
9934 case 0xED:
9935 case 0xEE:
9936 case 0xEF:
9937 case 0xF0:
9938 case 0xF1:
9939 case 0xF2:
9940 case 0xF3:
9941 case 0xF4:
9942 case 0xF5:
9943 case 0xF6:
9944 case 0xF7:
9945 case 0xF8:
9946 case 0xF9:
9947 case 0xFA:
9948 case 0xFB:
9949 case 0xFC:
9950 case 0xFD:
9951 case 0xFE:
9952 case 0xFF:
9953 return sax->number_integer(
static_cast<std::int8_t
>(
current));
9954
9955 default:
9956 {
9959 }
9960 }
9961 }
bool get_msgpack_array(const std::size_t len)
bool get_msgpack_binary(binary_t &result)
reads a MessagePack byte array
bool unexpect_eof(const input_format_t format, const char *context) const
std::string get_token_string() const
bool get_msgpack_object(const std::size_t len)
std::string exception_message(const input_format_t format, const std::string &detail, const std::string &context) const
std::size_t chars_read
the number of characters read
char_int_type current
the current character
json_sax_t * sax
the SAX parser
char_int_type get()
get next character from the input
bool get_msgpack_string(string_t &result)
reads a MessagePack string
static parse_error create(int id_, const position_t &pos, const std::string &what_arg, const BasicJsonType &context)
create a parse error exception
input_format_t
the supported input formats