8000 implement unpacking of ext 8,16,32 · zhurs/msgpack-python@c9b97f0 · GitHub
[go: up one dir, main page]

Skip to content

Commit c9b97f0

Browse files
committed
implement unpacking of ext 8,16,32
1 parent 56dd165 commit c9b97f0

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

msgpack/unpack_define.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,9 @@ typedef enum {
4444
//CS_ = 0x04,
4545
//CS_ = 0x05,
4646
//CS_ = 0x06,
47-
//CS_ = 0x07,
48-
49-
//CS_ = 0x08,
50-
//CS_ = 0x09,
47+
CS_EXT_8 = 0x07,
48+
CS_EXT_16 = 0x08,
49+
CS_EXT_32 = 0x09,
5150
CS_FLOAT = 0x0a,
5251
CS_DOUBLE = 0x0b,
5352
CS_UINT_8 = 0x0c,
@@ -59,11 +58,11 @@ typedef enum {
5958
CS_INT_32 = 0x12,
6059
CS_INT_64 = 0x13,
6160

62-
CS_FIXEXT1 = 0x14,
63-
CS_FIXEXT2 = 0x15,
64-
CS_FIXEXT4 = 0x16,
65-
CS_FIXEXT8 = 0x17,
66-
CS_FIXEXT16 = 0x18,
61+
//CS_FIXEXT1 = 0x14,
62+
//CS_FIXEXT2 = 0x15,
63+
//CS_FIXEXT4 = 0x16,
64+
//CS_FIXEXT8 = 0x17,
65+
//CS_FIXEXT16 = 0x18,
6766

6867
CS_RAW_16 = 0x1a,
6968
CS_RAW_32 = 0x1b,

msgpack/unpack_template.h

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,12 @@ static inline int unpack_execute(unpack_context* ctx, const char* data, size_t l
188188
//case 0xc4:
189189
//case 0xc5:
190190
//case 0xc6:
191-
//case 0xc7:
192-
//case 0xc8:
193-
//case 0xc9:
191+
case 0xc7: // ext 8
192+
again_fixed_trail(NEXT_CS(p), 1);
193+
case 0xc8: // ext 16
194+
again_fixed_trail(NEXT_CS(p), 2);
195+
case 0xc9: // ext 32
196+
again_fixed_trail(NEXT_CS(p), 4);
194197
case 0xca: // float
195198
case 0xcb: // double
196199
case 0xcc: // unsigned int 8
@@ -242,8 +245,16 @@ static inline int unpack_execute(unpack_context* ctx, const char* data, size_t l
242245
if((size_t)(pe - p) < trail) { goto _out; }
243246
n = p; p += trail - 1;
244247
switch(cs) {
245-
//case CS_
246-
//case CS_
248+
case CS_EXT_8:
249+
again_fixed_trail_if_zero(ACS_EXT_VALUE, *(uint8_t*)n+1, _ext_zero);
250+
case CS_EXT_16:
251+
again_fixed_trail_if_zero(ACS_EXT_VALUE,
252+
_msgpack_load16(uint16_t,n)+1,
253+
_ext_zero);
254+
case CS_EXT_32:
255+
again_fixed_trail_if_zero(ACS_EXT_VALUE,
256+
_msgpack_load32(uint32_t,n)+1,
257+
_ext_zero);
247258
case CS_FLOAT: {
248259
union { uint32_t i; float f; } mem;
249260
mem.i = _msgpack_load32(uint32_t,n);

0 commit comments

Comments
 (0)
0