Add empty "micropython" module to allow more seamless CPython portability.

Implicit "micropython" module contains (at least) codegeneration decorators.
Make it explicit, so an app could have "import micropython". On MicroPython,
that will be no-op. On CPython, that will give a chance to have a module
with placeholder decorators.
This commit is contained in:
Paul Sokolovsky 2014-01-16 19:19:50 +02:00
parent c8742a06ca
commit dcac88095b
2 changed files with 15 additions and 0 deletions

View File

@ -85,6 +85,14 @@ typedef long long mp_longint_impl_t;
#define MICROPY_ENABLE_SLICE (1) #define MICROPY_ENABLE_SLICE (1)
#endif #endif
// Enable features which improve CPython compatibility
// but may lead to more code size/memory usage.
// TODO: Originally intended as generic category to not
// add bunch of once-off options. May need refactoring later
#ifndef MICROPY_CPYTHON_COMPAT
#define MICROPY_CPYTHON_COMPAT (1)
#endif
/*****************************************************************************/ /*****************************************************************************/
/* Miscellaneous settings */ /* Miscellaneous settings */

View File

@ -143,6 +143,13 @@ void rt_init(void) {
mp_map_add_qstr(&map_builtins, MP_QSTR_sum, (mp_obj_t)&mp_builtin_sum_obj); mp_map_add_qstr(&map_builtins, MP_QSTR_sum, (mp_obj_t)&mp_builtin_sum_obj);
mp_map_add_qstr(&map_builtins, MP_QSTR_str, (mp_obj_t)&mp_builtin_str_obj); mp_map_add_qstr(&map_builtins, MP_QSTR_str, (mp_obj_t)&mp_builtin_str_obj);
#if MICROPY_CPYTHON_COMPAT
// Add (empty) micropython module, so it was possible to "import micropython",
// which can be a placeholder module on CPython.
mp_obj_t m = mp_obj_new_module(qstr_from_str_static("micropython"));
rt_store_name(qstr_from_str_static("micropython"), m);
#endif
next_unique_code_id = 1; // 0 indicates "no code" next_unique_code_id = 1; // 0 indicates "no code"
unique_codes_alloc = 0; unique_codes_alloc = 0;
unique_codes = NULL; unique_codes = NULL;