Skip to content

Commit e8355eb

Browse files
jimmodpgeorge
authored andcommitted
py/obj: Add "full" and "empty" non-variable-length mp_obj_type_t.
This will always have the maximum/minimum size of a mp_obj_type_t representation and can be used as a member in other structs. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
1 parent 5ddf671 commit e8355eb

File tree

15 files changed

+40
-21
lines changed

15 files changed

+40
-21
lines changed

examples/natmod/btree/btree_c.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ int mp_stream_posix_fsync(void *stream) {
9494
return res;
9595
}
9696

97-
mp_obj_type_t btree_type;
97+
mp_obj_full_type_t btree_type;
9898

9999
#include "extmod/modbtree.c"
100100

examples/natmod/framebuf/framebuf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ void *memset(void *s, int c, size_t n) {
88
}
99
#endif
1010

11-
mp_obj_type_t mp_type_framebuf;
11+
mp_obj_full_type_t mp_type_framebuf;
1212

1313
#include "extmod/modframebuf.c"
1414

examples/natmod/ure/ure.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ void *memmove(void *dest, const void *src, size_t n) {
3232
return mp_fun_table.memmove_(dest, src, n);
3333
}
3434

35-
mp_obj_type_t match_type;
36-
mp_obj_type_t re_type;
35+
mp_obj_full_type_t match_type;
36+
mp_obj_full_type_t re_type;
3737

3838
#include "extmod/modure.c"
3939

examples/natmod/uzlib/uzlib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ void *memset(void *s, int c, size_t n) {
88
}
99
#endif
1010

11-
mp_obj_type_t decompio_type;
11+
mp_obj_full_type_t decompio_type;
1212

1313
#include "extmod/moduzlib.c"
1414

extmod/modbtree.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ void __dbpanic(DB *db) {
6767
}
6868

6969
STATIC mp_obj_btree_t *btree_new(DB *db, mp_obj_t stream) {
70-
mp_obj_btree_t *o = mp_obj_malloc(mp_obj_btree_t, &btree_type);
70+
mp_obj_btree_t *o = mp_obj_malloc(mp_obj_btree_t, (mp_obj_type_t *)&btree_type);
7171
o->stream = stream;
7272
o->db = db;
7373
o->start_key = mp_const_none;

extmod/modframebuf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ STATIC MP_DEFINE_CONST_OBJ_TYPE(
841841

842842
// this factory function is provided for backwards compatibility with old FrameBuffer1 class
843843
STATIC mp_obj_t legacy_framebuffer1(size_t n_args, const mp_obj_t *args_in) {
844-
mp_obj_framebuf_t *o = mp_obj_malloc(mp_obj_framebuf_t, &mp_type_framebuf);
844+
mp_obj_framebuf_t *o = mp_obj_malloc(mp_obj_framebuf_t, (mp_obj_type_t *)&mp_type_framebuf);
845845

846846
mp_buffer_info_t bufinfo;
847847
mp_get_buffer_raise(args_in[0], &bufinfo, MP_BUFFER_WRITE);

extmod/modnetwork.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ mp_obj_t mod_network_nic_ifconfig(struct netif *netif, size_t n_args, const mp_o
6262
struct _mod_network_socket_obj_t;
6363

6464
typedef struct _mod_network_nic_type_t {
65-
mp_obj_type_t base;
65+
// Ensure that this struct is big enough to hold any type size.
66+
mp_obj_full_type_t base;
6667

6768
// API for non-socket operations
6869
int (*gethostbyname)(mp_obj_t nic, const char *name, mp_uint_t len, uint8_t *ip_out);

extmod/modure.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ STATIC void re_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t
198198
STATIC mp_obj_t ure_exec(bool is_anchored, uint n_args, const mp_obj_t *args) {
199199
(void)n_args;
200200
mp_obj_re_t *self;
201-
if (mp_obj_is_type(args[0], &re_type)) {
201+
if (mp_obj_is_type(args[0], (mp_obj_type_t *)&re_type)) {
202202
self = MP_OBJ_TO_PTR(args[0]);
203203
} else {
204204
self = MP_OBJ_TO_PTR(mod_re_compile(1, args));
@@ -217,7 +217,7 @@ STATIC mp_obj_t ure_exec(bool is_anchored, uint n_args, const mp_obj_t *args) {
217217
return mp_const_none;
218218
}
219219

220-
match->base.type = &match_type;
220+
match->base.type = (mp_obj_type_t *)&match_type;
221221
match->num_matches = caps_num / 2; // caps_num counts start and end pointers
222222
match->str = args[1];
223223
return MP_OBJ_FROM_PTR(match);
@@ -282,7 +282,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(re_split_obj, 2, 3, re_split);
282282

283283
STATIC mp_obj_t re_sub_helper(size_t n_args, const mp_obj_t *args) {
284284
mp_obj_re_t *self;
285-
if (mp_obj_is_type(args[0], &re_type)) {
285+
if (mp_obj_is_type(args[0], (mp_obj_type_t *)&re_type)) {
286286
self = MP_OBJ_TO_PTR(args[0]);
287287
} else {
288288
self = MP_OBJ_TO_PTR(mod_re_compile(1, args));
@@ -305,7 +305,7 @@ STATIC mp_obj_t re_sub_helper(size_t n_args, const mp_obj_t *args) {
305305
vstr_t vstr_return;
306306
vstr_return.buf = NULL; // We'll init the vstr after the first match
307307
mp_obj_match_t *match = mp_local_alloc(sizeof(mp_obj_match_t) + caps_num * sizeof(char *));
308-
match->base.type = &match_type;
308+
match->base.type = (mp_obj_type_t *)&match_type;
309309
match->num_matches = caps_num / 2; // caps_num counts start and end pointers
310310
match->str = where;
311311

@@ -430,7 +430,7 @@ STATIC mp_obj_t mod_re_compile(size_t n_args, const mp_obj_t *args) {
430430
if (size == -1) {
431431
goto error;
432432
}
433-
mp_obj_re_t *o = mp_obj_malloc_var(mp_obj_re_t, char, size, &re_type);
433+
mp_obj_re_t *o = mp_obj_malloc_var(mp_obj_re_t, char, size, (mp_obj_type_t *)&re_type);
434434
#if MICROPY_PY_URE_DEBUG
435435
int flags = 0;
436436
if (n_args > 1) {

extmod/network_ninaw10.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,7 @@ static const mp_rom_map_elem_t nina_locals_dict_table[] = {
774774

775775
static MP_DEFINE_CONST_DICT(nina_locals_dict, nina_locals_dict_table);
776776

777-
STATIC MP_DEFINE_CONST_OBJ_TYPE(
777+
STATIC MP_DEFINE_CONST_OBJ_FULL_TYPE(
778778
mod_network_nic_type_nina_base,
779779
MP_QSTR_nina,
780780
MP_TYPE_FLAG_NONE,

extmod/network_wiznet5k.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,7 @@ MP_DEFINE_CONST_OBJ_TYPE(
10241024
locals_dict, &wiznet5k_locals_dict
10251025
);
10261026
#else // WIZNET5K_PROVIDED_STACK
1027-
STATIC MP_DEFINE_CONST_OBJ_TYPE(
1027+
STATIC MP_DEFINE_CONST_OBJ_FULL_TYPE(
10281028
mod_network_nic_type_wiznet5k_base,
10291029
MP_QSTR_WIZNET5K,
10301030
MP_TYPE_FLAG_NONE,

0 commit comments

Comments
 (0)