diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-08 15:24:39 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-08 15:24:39 +0000 |
commit | 0c36da0b59bd3d5aeb6f7bd7f75913695a1dd366 (patch) | |
tree | eb1d8e50037139646f935df99da56764fcafb4f1 /py/builtinmp.c | |
parent | 8fd7d7e102372a3fe067030aa0f2049f744b1567 (diff) | |
download | micropython-0c36da0b59bd3d5aeb6f7bd7f75913695a1dd366.tar.gz micropython-0c36da0b59bd3d5aeb6f7bd7f75913695a1dd366.zip |
Implement ROMable modules. Add math module.
mp_module_obj_t can now be put in ROM.
Configuration of float type is now similar to longint: can now choose
none, float or double as the implementation.
math module has basic math functions. For STM port, these are not yet
implemented (they are just stub functions).
Diffstat (limited to 'py/builtinmp.c')
-rw-r--r-- | py/builtinmp.c | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/py/builtinmp.c b/py/builtinmp.c index 28bea3b840..22091f4ea5 100644 --- a/py/builtinmp.c +++ b/py/builtinmp.c @@ -1,45 +1,52 @@ #include <stdint.h> -#include <stdlib.h> -#include <stdio.h> -#include <stdarg.h> -#include <string.h> -#include <assert.h> #include "misc.h" #include "mpconfig.h" #include "qstr.h" #include "obj.h" -#include "runtime.h" +#include "map.h" #include "builtin.h" // Various builtins specific to MicroPython runtime, // living in micropython module #if MICROPY_MEM_STATS -STATIC mp_obj_t mem_total() { +STATIC mp_obj_t mp_micropython_mem_total() { return MP_OBJ_NEW_SMALL_INT((machine_int_t)m_get_total_bytes_allocated()); } -STATIC mp_obj_t mem_current() { +STATIC mp_obj_t mp_micropython_mem_current() { return MP_OBJ_NEW_SMALL_INT((machine_int_t)m_get_current_bytes_allocated()); } -STATIC mp_obj_t mem_peak() { +STATIC mp_obj_t mp_micropython_mem_peak() { return MP_OBJ_NEW_SMALL_INT((machine_int_t)m_get_peak_bytes_allocated()); } -MP_DEFINE_CONST_FUN_OBJ_0(mp_builtin_mem_total_obj, mem_total); -MP_DEFINE_CONST_FUN_OBJ_0(mp_builtin_mem_current_obj, mem_current); -MP_DEFINE_CONST_FUN_OBJ_0(mp_builtin_mem_peak_obj, mem_peak); +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_total_obj, mp_micropython_mem_total); +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_current_obj, mp_micropython_mem_current); +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_peak_obj, mp_micropython_mem_peak); #endif -void mp_module_micropython_init(void) { - mp_obj_t m_mp = mp_obj_new_module(MP_QSTR_micropython); - rt_store_name(MP_QSTR_micropython, m_mp); - +STATIC const mp_map_elem_t mp_module_micropython_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_micropython) }, #if MICROPY_MEM_STATS - rt_store_attr(m_mp, QSTR_FROM_STR_STATIC("mem_total"), (mp_obj_t)&mp_builtin_mem_total_obj); - rt_store_attr(m_mp, QSTR_FROM_STR_STATIC("mem_current"), (mp_obj_t)&mp_builtin_mem_current_obj); - rt_store_attr(m_mp, QSTR_FROM_STR_STATIC("mem_peak"), (mp_obj_t)&mp_builtin_mem_peak_obj); + { MP_OBJ_NEW_QSTR(MP_QSTR_mem_total), (mp_obj_t)&mp_micropython_mem_total_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_mem_current), (mp_obj_t)&mp_micropython_mem_current_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_mem_peak), (mp_obj_t)&mp_micropython_mem_peak_obj }, #endif -} +}; + +STATIC const mp_map_t mp_module_micropython_globals = { + .all_keys_are_qstrs = 1, + .table_is_fixed_array = 1, + .used = sizeof(mp_module_micropython_globals_table) / sizeof(mp_map_elem_t), + .alloc = sizeof(mp_module_micropython_globals_table) / sizeof(mp_map_elem_t), + .table = (mp_map_elem_t*)mp_module_micropython_globals_table, +}; + +const mp_obj_module_t mp_module_micropython = { + .base = { &mp_type_module }, + .name = MP_QSTR_micropython, + .globals = (mp_map_t*)&mp_module_micropython_globals, +}; |