diff options
author | mux <freelancer.c@gmail.com> | 2014-03-25 00:25:27 +0200 |
---|---|---|
committer | mux <freelancer.c@gmail.com> | 2014-03-25 00:25:27 +0200 |
commit | 89d45248ee5f47338774ca0c999af4299da55512 (patch) | |
tree | e2d5600ca4f8afe38aae3fc5dcce7759a734fcc0 /py | |
parent | 4b2b7ceca7915d014a191d3776bc29bdbc5faf02 (diff) | |
download | micropython-89d45248ee5f47338774ca0c999af4299da55512.tar.gz micropython-89d45248ee5f47338774ca0c999af4299da55512.zip |
Add mp_obj_module_register
* Add function to load static modules.
* Use module_register to pyb module.
Diffstat (limited to 'py')
-rw-r--r-- | py/obj.h | 1 | ||||
-rw-r--r-- | py/objmodule.c | 5 |
2 files changed, 6 insertions, 0 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; |