diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-25 13:21:51 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-25 13:21:51 +0000 |
commit | 1dfde891e3e26543da6d42215da6a23c32b0a8bc (patch) | |
tree | c6f8448d0279c8e5e8df277abec5cc4cdc3648ec | |
parent | 24d527bf2229a0e75cd8409e009301eab4ff8b44 (diff) | |
parent | 89d45248ee5f47338774ca0c999af4299da55512 (diff) | |
download | micropython-1dfde891e3e26543da6d42215da6a23c32b0a8bc.tar.gz micropython-1dfde891e3e26543da6d42215da6a23c32b0a8bc.zip |
Merge pull request #373 from iabdalkader/module_register
Add mp_obj_module_register
-rw-r--r-- | py/obj.h | 1 | ||||
-rw-r--r-- | py/objmodule.c | 5 | ||||
-rw-r--r-- | stm/main.c | 5 |
3 files changed, 8 insertions, 3 deletions
@@ -456,6 +456,7 @@ typedef struct _mp_obj_module_t { extern const mp_obj_type_t mp_type_module; mp_obj_t mp_obj_new_module(qstr module_name); mp_obj_t mp_obj_module_get(qstr module_name); +void mp_obj_module_register(qstr qstr, mp_obj_t module); //use for loading statically allocated modules struct _mp_map_t *mp_obj_module_get_globals(mp_obj_t self_in); // staticmethod and classmethod types; defined here so we can make const versions diff --git a/py/objmodule.c b/py/objmodule.c index e0778b4cf2..21fec9e866 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -82,6 +82,11 @@ mp_obj_t mp_obj_module_get(qstr module_name) { return MP_OBJ_NULL; } +void mp_obj_module_register(qstr qstr, mp_obj_t module) +{ + mp_map_lookup(rt_loaded_modules_get(), MP_OBJ_NEW_QSTR(qstr), MP_MAP_LOOKUP_ADD_IF_NOT_FOUND)->value = module; +} + mp_map_t *mp_obj_module_get_globals(mp_obj_t self_in) { assert(MP_OBJ_IS_TYPE(self_in, &mp_type_module)); mp_obj_module_t *self = self_in; diff --git a/stm/main.c b/stm/main.c index 8279a9b7f4..6ad3111276 100644 --- a/stm/main.c +++ b/stm/main.c @@ -272,9 +272,8 @@ soft_reset: rt_store_name(MP_QSTR_help, rt_make_function_n(0, pyb_help)); rt_store_name(MP_QSTR_open, rt_make_function_n(2, pyb_io_open)); - // we pre-import the pyb module - // probably shouldn't do this, so we are compatible with CPython - rt_store_name(MP_QSTR_pyb, (mp_obj_t)&pyb_module); + // load the pyb module + mp_obj_module_register(MP_QSTR_pyb, (mp_obj_t)&pyb_module); // check if user switch held (initiates reset of filesystem) bool reset_filesystem = false; |