TerraForge3D  2.3.1
3D Terrain And Landscape Generator

◆ parse_msgpack_internal()

template<typename BasicJsonType , typename InputAdapterType , typename SAX = json_sax_dom_parser<BasicJsonType>>
bool nlohmann::detail::binary_reader< BasicJsonType, InputAdapterType, SAX >::parse_msgpack_internal ( )
inlineprivate
Returns
whether a valid MessagePack value was passed to the SAX parser

Definition at line 9593 of file json.hpp.

9594 {
9595 switch (get())
9596 {
9597 // EOF
9598 case std::char_traits<char_type>::eof():
9599 return unexpect_eof(input_format_t::msgpack, "value");
9600
9601 // positive fixint
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 // fixmap
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:
9749 return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
9750
9751 // fixarray
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:
9768 return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
9769
9770 // fixstr
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: // str 8
9804 case 0xDA: // str 16
9805 case 0xDB: // str 32
9806 {
9807 string_t s;
9808 return get_msgpack_string(s) && sax->string(s);
9809 }
9810
9811 case 0xC0: // nil
9812 return sax->null();
9813
9814 case 0xC2: // false
9815 return sax->boolean(false);
9816
9817 case 0xC3: // true
9818 return sax->boolean(true);
9819
9820 case 0xC4: // bin 8
9821 case 0xC5: // bin 16
9822 case 0xC6: // bin 32
9823 case 0xC7: // ext 8
9824 case 0xC8: // ext 16
9825 case 0xC9: // ext 32
9826 case 0xD4: // fixext 1
9827 case 0xD5: // fixext 2
9828 case 0xD6: // fixext 4
9829 case 0xD7: // fixext 8
9830 case 0xD8: // fixext 16
9831 {
9832 binary_t b;
9833 return get_msgpack_binary(b) && sax->binary(b);
9834 }
9835
9836 case 0xCA: // float 32
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: // float 64
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: // uint 8
9849 {
9850 std::uint8_t number{};
9851 return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
9852 }
9853
9854 case 0xCD: // uint 16
9855 {
9856 std::uint16_t number{};
9857 return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
9858 }
9859
9860 case 0xCE: // uint 32
9861 {
9862 std::uint32_t number{};
9863 return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
9864 }
9865
9866 case 0xCF: // uint 64
9867 {
9868 std::uint64_t number{};
9869 return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
9870 }
9871
9872 case 0xD0: // int 8
9873 {
9874 std::int8_t number{};
9875 return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
9876 }
9877
9878 case 0xD1: // int 16
9879 {
9880 std::int16_t number{};
9881 return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
9882 }
9883
9884 case 0xD2: // int 32
9885 {
9886 std::int32_t number{};
9887 return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
9888 }
9889
9890 case 0xD3: // int 64
9891 {
9892 std::int64_t number{};
9893 return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
9894 }
9895
9896 case 0xDC: // array 16
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: // array 32
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: // map 16
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: // map 32
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 // negative fixint
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: // anything else
9956 {
9957 auto last_token = get_token_string();
9958 return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value"), BasicJsonType()));
9959 }
9960 }
9961 }
bool get_msgpack_array(const std::size_t len)
Definition: json.hpp:10166
bool get_msgpack_binary(binary_t &result)
reads a MessagePack byte array
Definition: json.hpp:10055
bool unexpect_eof(const input_format_t format, const char *context) const
Definition: json.hpp:10914
std::string get_token_string() const
Definition: json.hpp:10928
bool get_msgpack_object(const std::size_t len)
Definition: json.hpp:10188
std::string exception_message(const input_format_t format, const std::string &detail, const std::string &context) const
Definition: json.hpp:10941
std::size_t chars_read
the number of characters read
Definition: json.hpp:10981
char_int_type current
the current character
Definition: json.hpp:10978
json_sax_t * sax
the SAX parser
Definition: json.hpp:10987
char_int_type get()
get next character from the input
Definition: json.hpp:10769
bool get_msgpack_string(string_t &result)
reads a MessagePack string
Definition: json.hpp:9973
static parse_error create(int id_, const position_t &pos, const std::string &what_arg, const BasicJsonType &context)
create a parse error exception
Definition: json.hpp:2800
input_format_t
the supported input formats
Definition: json.hpp:5382