summaryrefslogtreecommitdiff
path: root/shared-module/msgpack
diff options
context:
space:
mode:
Diffstat (limited to 'shared-module/msgpack')
-rw-r--r--shared-module/msgpack/__init__.c93
1 files changed, 61 insertions, 32 deletions
diff --git a/shared-module/msgpack/__init__.c b/shared-module/msgpack/__init__.c
index 103003174..61547fde3 100644
--- a/shared-module/msgpack/__init__.c
+++ b/shared-module/msgpack/__init__.c
@@ -59,7 +59,9 @@ STATIC msgpack_stream_t get_stream(mp_obj_t stream_obj, int flags) {
// readers
STATIC void read(msgpack_stream_t *s, void *buf, mp_uint_t size) {
- if (size == 0) return;
+ if (size == 0) {
+ return;
+ }
mp_uint_t ret = s->read(s->stream_obj, buf, size, &s->errcode);
if (s->errcode != 0) {
mp_raise_OSError(s->errcode);
@@ -82,7 +84,9 @@ STATIC uint16_t read2(msgpack_stream_t *s) {
uint16_t res = 0;
read(s, &res, 2);
int n = 1;
- if (*(char *)&n == 1) res = __builtin_bswap16(res);
+ if (*(char *)&n == 1) {
+ res = __builtin_bswap16(res);
+ }
return res;
}
@@ -90,16 +94,24 @@ STATIC uint32_t read4(msgpack_stream_t *s) {
uint32_t res = 0;
read(s, &res, 4);
int n = 1;
- if (*(char *)&n == 1) res = __builtin_bswap32(res);
+ if (*(char *)&n == 1) {
+ res = __builtin_bswap32(res);
+ }
return res;
}
STATIC size_t read_size(msgpack_stream_t *s, uint8_t len_index) {
size_t res = 0;
switch (len_index) {
- case 0: res = (size_t)read1(s); break;
- case 1: res = (size_t)read2(s); break;
- case 2: res = (size_t)read4(s); break;
+ case 0:
+ res = (size_t)read1(s);
+ break;
+ case 1:
+ res = (size_t)read2(s);
+ break;
+ case 2:
+ res = (size_t)read4(s);
+ break;
}
return res;
}
@@ -123,13 +135,17 @@ STATIC void write1(msgpack_stream_t *s, uint8_t obj) {
STATIC void write2(msgpack_stream_t *s, uint16_t obj) {
int n = 1;
- if (*(char *)&n == 1) obj = __builtin_bswap16(obj);
+ if (*(char *)&n == 1) {
+ obj = __builtin_bswap16(obj);
+ }
write(s, &obj, 2);
}
STATIC void write4(msgpack_stream_t *s, uint32_t obj) {
int n = 1;
- if (*(char *)&n == 1) obj = __builtin_bswap32(obj);
+ if (*(char *)&n == 1) {
+ obj = __builtin_bswap32(obj);
+ }
write(s, &obj, 4);
}
@@ -139,10 +155,10 @@ STATIC void write_size(msgpack_stream_t *s, uint8_t code, size_t size) {
write1(s, code);
write1(s, size);
} else if ((uint16_t)size == size) {
- write1(s, code+1);
+ write1(s, code + 1);
write2(s, size);
} else {
- write1(s, code+2);
+ write1(s, code + 2);
write4(s, size);
}
}
@@ -182,12 +198,14 @@ STATIC void pack_int(msgpack_stream_t *s, int32_t x) {
}
}
-STATIC void pack_bin(msgpack_stream_t *s, const uint8_t* data, size_t len) {
+STATIC void pack_bin(msgpack_stream_t *s, const uint8_t *data, size_t len) {
write_size(s, 0xc4, len);
- if (len > 0) write(s, data, len);
+ if (len > 0) {
+ write(s, data, len);
+ }
}
-STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t* data, size_t len) {
+STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t *data, size_t len) {
if (len == 1) {
write1(s, 0xd4);
} else if (len == 2) {
@@ -202,16 +220,20 @@ STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t* data, siz
write_size(s, 0xc7, len);
}
write1(s, code); // type byte
- if (len > 0) write(s, data, len);
+ if (len > 0) {
+ write(s, data, len);
+ }
}
-STATIC void pack_str(msgpack_stream_t *s, const char* str, size_t len) {
+STATIC void pack_str(msgpack_stream_t *s, const char *str, size_t len) {
if (len < 32) {
write1(s, 0b10100000 | (uint8_t)len);
} else {
write_size(s, 0xd9, len);
}
- if (len > 0) write(s, str, len);
+ if (len > 0) {
+ write(s, str, len);
+ }
}
STATIC void pack_array(msgpack_stream_t *s, size_t len) {
@@ -259,14 +281,14 @@ STATIC void pack(mp_obj_t obj, msgpack_stream_t *s, mp_obj_t default_handler) {
// tuple
mp_obj_tuple_t *self = MP_OBJ_TO_PTR(obj);
pack_array(s, self->len);
- for (size_t i=0; i<self->len; i++) {
+ for (size_t i = 0; i < self->len; i++) {
pack(self->items[i], s, default_handler);
}
} else if (MP_OBJ_IS_TYPE(obj, &mp_type_list)) {
// list (layout differs from tuple)
mp_obj_list_t *self = MP_OBJ_TO_PTR(obj);
pack_array(s, self->len);
- for (size_t i=0; i<self->len; i++) {
+ for (size_t i = 0; i < self->len; i++) {
pack(self->items[i], s, default_handler);
}
} else if (MP_OBJ_IS_TYPE(obj, &mp_type_dict)) {
@@ -280,7 +302,9 @@ STATIC void pack(mp_obj_t obj, msgpack_stream_t *s, mp_obj_t default_handler) {
pack(next->value, s, default_handler);
}
} else if (mp_obj_is_float(obj)) {
- union Float { mp_float_t f; uint32_t u; };
+ union Float { mp_float_t f;
+ uint32_t u;
+ };
union Float data;
data.f = mp_obj_float_get(obj);
write1(s, 0xca);
@@ -314,13 +338,13 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list);
STATIC mp_obj_t unpack_array_elements(msgpack_stream_t *s, size_t size, mp_obj_t ext_hook, bool use_list) {
if (use_list) {
mp_obj_list_t *t = MP_OBJ_TO_PTR(mp_obj_new_list(size, NULL));
- for (size_t i=0; i<size; i++) {
+ for (size_t i = 0; i < size; i++) {
t->items[i] = unpack(s, ext_hook, use_list);
}
return MP_OBJ_FROM_PTR(t);
} else {
mp_obj_tuple_t *t = MP_OBJ_TO_PTR(mp_obj_new_tuple(size, NULL));
- for (size_t i=0; i<size; i++) {
+ for (size_t i = 0; i < size; i++) {
t->items[i] = unpack(s, ext_hook, use_list);
}
return MP_OBJ_FROM_PTR(t);
@@ -330,7 +354,7 @@ STATIC mp_obj_t unpack_array_elements(msgpack_stream_t *s, size_t size, mp_obj_t
STATIC mp_obj_t unpack_bytes(msgpack_stream_t *s, size_t size) {
vstr_t vstr;
vstr_init_len(&vstr, size);
- byte *p = (byte*)vstr.buf;
+ byte *p = (byte *)vstr.buf;
// read in chunks: (some drivers - e.g. UART) limit the
// maximum number of bytes that can be read at once
// read(s, p, size);
@@ -379,20 +403,23 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
// map (dict)
size_t len = code & 0b1111;
mp_obj_dict_t *d = MP_OBJ_TO_PTR(mp_obj_new_dict(len));
- for (size_t i=0; i<len; i++) {
+ for (size_t i = 0; i < len; i++) {
mp_obj_dict_store(d, unpack(s, ext_hook, use_list), unpack(s, ext_hook, use_list));
}
return MP_OBJ_FROM_PTR(d);
}
switch (code) {
- case 0xc0: return mp_const_none;
- case 0xc2: return mp_const_false;
- case 0xc3: return mp_const_true;
+ case 0xc0:
+ return mp_const_none;
+ case 0xc2:
+ return mp_const_false;
+ case 0xc3:
+ return mp_const_true;
case 0xc4:
case 0xc5:
case 0xc6: {
// bin 8, 16, 32
- return unpack_bytes(s, read_size(s, code-0xc4));
+ return unpack_bytes(s, read_size(s, code - 0xc4));
}
case 0xcc: // uint8
case 0xd0: // int8
@@ -404,7 +431,9 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
case 0xd2: // int32
return MP_OBJ_NEW_SMALL_INT((int32_t)read4(s));
case 0xca: {
- union Float { mp_float_t f; uint32_t u; };
+ union Float { mp_float_t f;
+ uint32_t u;
+ };
union Float data;
data.u = read4(s);
return mp_obj_new_float(data.f);
@@ -413,10 +442,10 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
case 0xda:
case 0xdb: {
// str 8, 16, 32
- size_t size = read_size(s, code-0xd9);
+ size_t size = read_size(s, code - 0xd9);
vstr_t vstr;
vstr_init_len(&vstr, size);
- byte *p = (byte*)vstr.buf;
+ byte *p = (byte *)vstr.buf;
read(s, p, size);
return mp_obj_new_str_from_vstr(&mp_type_str, &vstr);
}
@@ -425,7 +454,7 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
// map 16 & 32
size_t len = read_size(s, code - 0xde + 1);
mp_obj_dict_t *d = MP_OBJ_TO_PTR(mp_obj_new_dict(len));
- for (size_t i=0; i<len; i++) {
+ for (size_t i = 0; i < len; i++) {
mp_obj_dict_store(d, unpack(s, ext_hook, use_list), unpack(s, ext_hook, use_list));
}
return MP_OBJ_FROM_PTR(d);
@@ -450,7 +479,7 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
case 0xc8: // ext 16
case 0xc9:
// ext 8, 16, 32
- return unpack_ext(s, read_size(s, code-0xc7), ext_hook);
+ return unpack_ext(s, read_size(s, code - 0xc7), ext_hook);
case 0xc1: // never used
case 0xcb: // float 64
case 0xcf: // uint 64