unix modffi: Convert to static module structures.

pull/512/head
Paul Sokolovsky 2014-04-18 00:00:15 +03:00
rodzic de7c425139
commit 4abaa1b12b
4 zmienionych plików z 28 dodań i 11 usunięć

Wyświetl plik

@ -357,10 +357,6 @@ int main(int argc, char **argv) {
mp_store_name(qstr_from_str("gc"), (mp_obj_t)&pyb_gc_obj); mp_store_name(qstr_from_str("gc"), (mp_obj_t)&pyb_gc_obj);
#endif #endif
#if MICROPY_MOD_FFI
ffi_init();
#endif
// Here is some example code to create a class and instance of that class. // Here is some example code to create a class and instance of that class.
// First is the Python, then the C code. // First is the Python, then the C code.
// //

Wyświetl plik

@ -365,11 +365,26 @@ mp_obj_t mod_ffi_as_bytearray(mp_obj_t ptr, mp_obj_t size) {
} }
MP_DEFINE_CONST_FUN_OBJ_2(mod_ffi_as_bytearray_obj, mod_ffi_as_bytearray); MP_DEFINE_CONST_FUN_OBJ_2(mod_ffi_as_bytearray_obj, mod_ffi_as_bytearray);
STATIC const mp_map_elem_t mp_module_ffi_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_ffi) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mod_ffi_open_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_callback), (mp_obj_t)&mod_ffi_callback_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_as_bytearray), (mp_obj_t)&mod_ffi_as_bytearray_obj },
};
void ffi_init() { STATIC const mp_obj_dict_t mp_module_ffi_globals = {
mp_obj_t m = mp_obj_new_module(QSTR_FROM_STR_STATIC("ffi")); .base = {&mp_type_dict},
mp_store_attr(m, MP_QSTR_open, (mp_obj_t)&mod_ffi_open_obj); .map = {
mp_store_attr(m, QSTR_FROM_STR_STATIC("callback"), (mp_obj_t)&mod_ffi_callback_obj); .all_keys_are_qstrs = 1,
// there would be as_bytes, but bytes currently is value, not reference type! .table_is_fixed_array = 1,
mp_store_attr(m, QSTR_FROM_STR_STATIC("as_bytearray"), (mp_obj_t)&mod_ffi_as_bytearray_obj); .used = sizeof(mp_module_ffi_globals_table) / sizeof(mp_map_elem_t),
} .alloc = sizeof(mp_module_ffi_globals_table) / sizeof(mp_map_elem_t),
.table = (mp_map_elem_t*)mp_module_ffi_globals_table,
},
};
const mp_obj_module_t mp_module_ffi = {
.base = { &mp_type_module },
.name = MP_QSTR_ffi,
.globals = (mp_obj_dict_t*)&mp_module_ffi_globals,
};

Wyświetl plik

@ -19,7 +19,9 @@
extern const struct _mp_obj_module_t mp_module_time; extern const struct _mp_obj_module_t mp_module_time;
extern const struct _mp_obj_module_t mp_module_socket; extern const struct _mp_obj_module_t mp_module_socket;
extern const struct _mp_obj_module_t mp_module_ffi;
#define MICROPY_EXTRA_BUILTIN_MODULES \ #define MICROPY_EXTRA_BUILTIN_MODULES \
{ MP_OBJ_NEW_QSTR(MP_QSTR_ffi), (mp_obj_t)&mp_module_ffi }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&mp_module_time }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&mp_module_time }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_microsocket), (mp_obj_t)&mp_module_socket }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_microsocket), (mp_obj_t)&mp_module_socket }, \

Wyświetl plik

@ -10,10 +10,14 @@ Q(write)
Q(makefile) Q(makefile)
Q(FileIO) Q(FileIO)
Q(ffi)
Q(ffimod) Q(ffimod)
Q(ffifunc) Q(ffifunc)
Q(fficallback) Q(fficallback)
Q(ffivar) Q(ffivar)
Q(as_bytearray)
Q(callback)
Q(func) Q(func)
Q(var) Q(var)