forked from romixlab/qmsgpack
unpacking of all types except ext and map is done (untested!)
This commit is contained in:
+57
-45
@@ -2,55 +2,67 @@
|
||||
#define MSGPACK_P_H
|
||||
#include <QVariant>
|
||||
|
||||
/* parser functions:
|
||||
* QVariant _type_(quint8 *p, int &i);
|
||||
* parses some type, which data is stored at p
|
||||
* fill sz with type size
|
||||
*/
|
||||
|
||||
|
||||
namespace MsgPackPrivate
|
||||
{
|
||||
typedef QVariant (* type_parser_f)(quint8 *p, quint8 *end, int &sz);
|
||||
extern type_parser_f parsers[32];
|
||||
/* unpack functions:
|
||||
* QVariant _type_(quint8 *p, int &sz);
|
||||
* parses some type, which data is stored at p
|
||||
* fill sz with type size (sz is there at the moment of calling
|
||||
* parser function)
|
||||
*/
|
||||
typedef QVariant (* type_parser_f)(quint8 *p, int &sz);
|
||||
extern type_parser_f unpackers[32];
|
||||
|
||||
// goes from p to end unpacking types with unpack_type function below
|
||||
QVariant unpack(quint8 *p, quint8 *end);
|
||||
QVariant unpack_type(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_positive_fixint(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_negative_fixint(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixmap(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixarray(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixstr(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_nil(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_never_used(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_false(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_true(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_bin8(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_bin16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_bin32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_ext8(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_ext16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_ext32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_float32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_float64(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_uint8(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_uint16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_uint32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_uint64(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_int8(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_int16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_int32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_int64(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixext1(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixext2(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixext4(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixext8(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_fixext16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_str8(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_str16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_str32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_array16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_array32(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_map16(quint8 *p, quint8 *end, int &sz);
|
||||
QVariant unpack_map32(quint8 *p, quint8 *end, int &sz);
|
||||
// unpack some type, can be called recursively from other unpack functions
|
||||
QVariant unpack_type(quint8 *p, int &sz);
|
||||
|
||||
QVariant unpack_array_len(quint8 *p, int &sz, int len);
|
||||
quint32 unpack_uint8(quint8 *p);
|
||||
quint32 unpack_uint16(quint8 *p);
|
||||
quint32 unpack_uint32(quint8 *p);
|
||||
|
||||
|
||||
QVariant unpack_positive_fixint(quint8 *p, int &sz);
|
||||
QVariant unpack_negative_fixint(quint8 *p, int &sz);
|
||||
QVariant unpack_fixmap(quint8 *p, int &sz);
|
||||
QVariant unpack_fixarray(quint8 *p, int &sz);
|
||||
QVariant unpack_fixstr(quint8 *p, int &sz);
|
||||
QVariant unpack_nil(quint8 *p, int &sz);
|
||||
QVariant unpack_never_used(quint8 *p, int &sz);
|
||||
QVariant unpack_false(quint8 *p, int &sz);
|
||||
QVariant unpack_true(quint8 *p, int &sz);
|
||||
QVariant unpack_bin8(quint8 *p, int &sz);
|
||||
QVariant unpack_bin16(quint8 *p, int &sz);
|
||||
QVariant unpack_bin32(quint8 *p, int &sz);
|
||||
QVariant unpack_ext8(quint8 *p, int &sz);
|
||||
QVariant unpack_ext16(quint8 *p, int &sz);
|
||||
QVariant unpack_ext32(quint8 *p, int &sz);
|
||||
QVariant unpack_float32(quint8 *p, int &sz);
|
||||
QVariant unpack_float64(quint8 *p, int &sz);
|
||||
QVariant unpack_uint8(quint8 *p, int &sz);
|
||||
QVariant unpack_uint16(quint8 *p, int &sz);
|
||||
QVariant unpack_uint32(quint8 *p, int &sz);
|
||||
QVariant unpack_uint64(quint8 *p, int &sz);
|
||||
QVariant unpack_int8(quint8 *p, int &sz);
|
||||
QVariant unpack_int16(quint8 *p, int &sz);
|
||||
QVariant unpack_int32(quint8 *p, int &sz);
|
||||
QVariant unpack_int64(quint8 *p, int &sz);
|
||||
QVariant unpack_fixext1(quint8 *p, int &sz);
|
||||
QVariant unpack_fixext2(quint8 *p, int &sz);
|
||||
QVariant unpack_fixext4(quint8 *p, int &sz);
|
||||
QVariant unpack_fixext8(quint8 *p, int &sz);
|
||||
QVariant unpack_fixext16(quint8 *p, int &sz);
|
||||
QVariant unpack_str8(quint8 *p, int &sz);
|
||||
QVariant unpack_str16(quint8 *p, int &sz);
|
||||
QVariant unpack_str32(quint8 *p, int &sz);
|
||||
QVariant unpack_array16(quint8 *p, int &sz);
|
||||
QVariant unpack_array32(quint8 *p, int &sz);
|
||||
QVariant unpack_map16(quint8 *p, int &sz);
|
||||
QVariant unpack_map32(quint8 *p, int &sz);
|
||||
}
|
||||
|
||||
#endif // MSGPACK_P_H
|
||||
|
||||
Reference in New Issue
Block a user