8000 expose all types from obj.h to native modules · micropython/micropython@eee30c1 · GitHub
[go: up one dir, main page]

Skip to content

Commit eee30c1

Browse files
committed
expose all types from obj.h to native modules
1 parent f020eac commit eee30c1

File tree

5 files changed

+115
-0
lines changed

5 files changed

+115
-0
lines changed

py/nativeglue.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
#include "py/nativeglue.h"
3535
#include "py/gc.h"
3636

37+
#define MICROPY_SET_TYPE_IF_SUPPORTED(SUPPORTED_DEFINE, TYPE) SUPPORTED_DEFINE?&TYPE:&mp_type_unsupported_type
38+
3739
#if MICROPY_DEBUG_VERBOSE // print debugging info
3840
#define DEBUG_printf DEBUG_printf
3941
#else // don't print debugging info
@@ -332,14 +334,49 @@ const mp_fun_table_t mp_fun_table = {
332334
mp_get_stream_raise,
333335
&mp_plat_print,
334336
&mp_type_type,
337+
&mp_type_object,
338+
&mp_type_NoneType,
339+
&mp_type_bool,
340+
&mp_type_int,
335341
&mp_type_str,
342+
&mp_type_bytes,
343+
&mp_type_bytearray,
344+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_BUILTINS_MEMORYVIEW, mp_type_memoryview),
345+
&mp_type_float,
346+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_BUILTINS_COMPLEX, mp_type_complex),
347+
&mp_type_tuple,
336348
&mp_type_list,
349+
&mp_type_map, // map (the python builtin, not the dict implementation detail)
350+
&mp_type_enumerate,
351+
&mp_type_filter,
352+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_COLLECTIONS_DEQUE, mp_type_deque),
337353
&mp_type_dict,
354+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_COLLECTIONS_ORDEREDDICT, mp_type_ordereddict),
355+
&mp_type_range,
356+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_BUILTINS_SET, mp_type_set),
357+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_BUILTINS_FROZENSET, mp_type_frozenset),
358+
&mp_type_slice,
359+
&mp_type_zip,
360+
&mp_type_array,
361+
&mp_type_super,
362+
&mp_type_gen_wrap,
363+
&mp_type_native_gen_wrap,
364+
&mp_type_gen_instance,
338365
&mp_type_fun_builtin_0,
339366
&mp_type_fun_builtin_1,
340367
&mp_type_fun_builtin_2,
341368
&mp_type_fun_builtin_3,
342369
&mp_type_fun_builtin_var,
370+
&mp_type_fun_bc,
371+
&mp_type_module,
372+
&mp_type_staticmethod,
373+
&mp_type_classmethod,
374+
&mp_type_property,
375+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_IO, mp_type_stringio),
376+
MICROPY_SET_TYPE_IF_SUPPORTED(MICROPY_PY_IO, mp_type_bytesio),
377+
&mp_type_reversed,
378+
&mp_type_polymorph_iter,
379+
&mp_type_unsupported_type,
343380
&mp_stream_read_obj,
344381
&mp_stream_readinto_obj,
345382
&mp_stream_unbuffered_readline_obj,

py/nativeglue.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,52 @@ typedef struct _mp_fun_table_t {
157157
void (*get_buffer_raise)(mp_obj_t obj, mp_buffer_info_t *bufinfo, mp_uint_t flags);
158158
const mp_stream_p_t *(*get_stream_raise)(mp_obj_t self_in, int flags);
159159
const mp_print_t *plat_print;
160+
160161
const mp_obj_type_t *type_type;
162+
const mp_obj_type_t *type_object;
163+
const mp_obj_type_t *type_NoneType;
164+
const mp_obj_type_t *type_bool;
165+
const mp_obj_type_t *type_int;
161166
const mp_obj_type_t *type_str;
167+
const mp_obj_type_t *type_bytes;
168+
const mp_obj_type_t *type_bytearray;
169+
const mp_obj_type_t *type_memoryview;
170+
const mp_obj_type_t *type_float;
171+
const mp_obj_type_t *type_complex;
172+
const mp_obj_type_t *type_tuple;
162173
const mp_obj_type_t *type_list;
174+
const mp_obj_type_t *type_map; // map (the python builtin, not the dict implementation detail)
175+
const mp_obj_type_t *type_enumerate;
176+
const mp_obj_type_t *type_filter;
177+
const mp_obj_type_t *type_deque;
163178
const mp_obj_type_t *type_dict;
179+
const mp_obj_type_t *type_ordereddict;
180+
const mp_obj_type_t *type_range;
181+
const mp_obj_type_t *type_set;
182+
const mp_obj_type_t *type_frozenset;
183+
const mp_obj_type_t *type_slice;
184+
const mp_obj_type_t *type_zip;
185+
const mp_obj_type_t *type_array;
186+
const mp_obj_type_t *type_super;
187+
const mp_obj_type_t *type_gen_wrap;
188+
const mp_obj_type_t *type_native_gen_wrap;
189+
const mp_obj_type_t *type_gen_instance;
164190
const mp_obj_type_t *type_fun_builtin_0;
165191
const mp_obj_type_t *type_fun_builtin_1;
166192
const mp_obj_type_t *type_fun_builtin_2;
167193
const mp_obj_type_t *type_fun_builtin_3;
168194
const mp_obj_type_t *type_fun_builtin_var;
195+
const mp_obj_type_t *type_fun_bc;
196+
const mp_obj_type_t *type_module;
197+
const mp_obj_type_t *type_staticmethod;
198+
const mp_obj_type_t *type_classmethod;
199+
const mp_obj_type_t *type_property;
200+
const mp_obj_type_t *type_stringio;
201+
const mp_obj_type_t *type_bytesio;
202+
const mp_obj_type_t *type_reversed;
203+
const mp_obj_type_t *type_polymorph_iter;
204+
const mp_obj_type_t *type_unsupported_type;
205+
169206
const mp_obj_fun_builtin_var_t *stream_read_obj;
170207
const mp_obj_fun_builtin_var_t *stream_readinto_obj;
171208
const mp_obj_fun_builtin_var_t *stream_unbuffered_readline_obj;

py/obj.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@
3737
#include "py/stackctrl.h"
3838
#include "py/stream.h" // for mp_obj_print
3939

40+
const mp_obj_type_t mp_type_unsupported_type = {
41+
{ &mp_type_type },
42+
.name = MP_QSTR_unsupported_type,
43+
};
44+
4045
const mp_obj_type_t *mp_obj_get_type(mp_const_obj_t o_in) {
4146
#if MICROPY_OBJ_IMMEDIATE_OBJS && MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_A
4247

py/obj.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,7 @@ extern const mp_obj_type_t mp_type_stringio;
607607
extern const mp_obj_type_t mp_type_bytesio;
608608
extern const mp_obj_type_t mp_type_reversed;
609609
extern const mp_obj_type_t mp_type_polymorph_iter;
610+
extern const mp_obj_type_t mp_type_unsupported_type; // used to indicate that a type is not supported to a native module
610611

611612
// Exceptions
612613
extern const mp_obj_type_t mp_type_BaseException;

tools/mpy_ld.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,14 +666,49 @@ def link_objects(env, native_qstr_vals_len, native_qstr_objs_len):
666666
fun_table = {key: 67 + idx
667667
for idx, key in enumerate([
668668
'mp_type_type',
669+
'mp_type_object',
670+
'mp_type_NoneType',
671+
'mp_type_bool',
672+
'mp_type_int',
669673
'mp_type_str',
674+
'mp_type_bytes',
675+
'mp_type_bytearray',
676+
'mp_type_memoryview',
677+
'mp_type_float',
678+
'mp_type_complex',
679+
'mp_type_tuple',
670680
'mp_type_list',
681+
'mp_type_map',
682+
'mp_type_enumerate',
683+
'mp_type_filter',
684+
'mp_type_deque',
671685
'mp_type_dict',
686+
'mp_type_ordereddict',
687+
'mp_type_range',
688+
'mp_type_set',
689+
'mp_type_frozenset',
690+
'mp_type_slice',
691+
'mp_type_zip',
692+
'mp_type_array',
693+
'mp_type_super',
694+
'mp_type_gen_wrap',
695+
'mp_type_native_gen_wrap',
696+
'mp_type_gen_instance',
672697
'mp_type_fun_builtin_0',
673698
'mp_type_fun_builtin_1',
674699
'mp_type_fun_builtin_2',
675700
'mp_type_fun_builtin_3',
676701
'mp_type_fun_builtin_var',
702+
'mp_type_fun_bc',
703+
'mp_type_module',
704+
'mp_type_staticmethod',
705+
'mp_type_classmethod',
706+
'mp_type_property',
707+
'mp_type_stringio',
708+
'mp_type_bytesio',
709+
'mp_type_reversed',
710+
'mp_type_polymorph_iter',
711+
'mp_type_unsupported_type',
677712
'mp_stream_read_obj',
678713
'mp_stream_readinto_obj',
679714
'mp_stream_unbuffered_readline_obj',

0 commit comments

Comments
 (0)
0