From cc0af3d727e9f675da233ac4fd9ddc15bc41fe76 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky <pfalcon@users.sourceforge.net> Date: Sun, 6 Apr 2014 01:00:46 +0300 Subject: [PATCH] py: Implement globals() and locals() builtins. --- py/builtin.c | 13 +++++++++++++ py/builtin.h | 2 ++ py/builtintables.c | 2 ++ py/qstrdefs.h | 2 ++ 4 files changed, 19 insertions(+) diff --git a/py/builtin.c b/py/builtin.c index a6d14fa48..fc037f12f 100644 --- a/py/builtin.c +++ b/py/builtin.c @@ -410,3 +410,16 @@ STATIC mp_obj_t mp_builtin_getattr(uint n_args, const mp_obj_t *args) { } MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_builtin_getattr_obj, 2, 3, mp_builtin_getattr); + + +STATIC mp_obj_t mp_builtin_globals() { + return mp_globals_get(); +} + +MP_DEFINE_CONST_FUN_OBJ_0(mp_builtin_globals_obj, mp_builtin_globals); + +STATIC mp_obj_t mp_builtin_locals() { + return mp_locals_get(); +} + +MP_DEFINE_CONST_FUN_OBJ_0(mp_builtin_locals_obj, mp_builtin_locals); diff --git a/py/builtin.h b/py/builtin.h index 60b7c85b8..e86138fe1 100644 --- a/py/builtin.h +++ b/py/builtin.h @@ -13,6 +13,7 @@ MP_DECLARE_CONST_FUN_OBJ(mp_builtin_divmod_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_eval_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_exec_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_getattr_obj); +MP_DECLARE_CONST_FUN_OBJ(mp_builtin_globals_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_hash_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_id_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_isinstance_obj); @@ -20,6 +21,7 @@ MP_DECLARE_CONST_FUN_OBJ(mp_builtin_issubclass_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_iter_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_len_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_list_obj); +MP_DECLARE_CONST_FUN_OBJ(mp_builtin_locals_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_max_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_min_obj); MP_DECLARE_CONST_FUN_OBJ(mp_builtin_next_obj); diff --git a/py/builtintables.c b/py/builtintables.c index bc3d0deb1..9a46be6e0 100644 --- a/py/builtintables.c +++ b/py/builtintables.c @@ -54,12 +54,14 @@ STATIC const mp_map_elem_t mp_builtin_object_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_eval), (mp_obj_t)&mp_builtin_eval_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_exec), (mp_obj_t)&mp_builtin_exec_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_getattr), (mp_obj_t)&mp_builtin_getattr_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_globals), (mp_obj_t)&mp_builtin_globals_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_hash), (mp_obj_t)&mp_builtin_hash_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_id), (mp_obj_t)&mp_builtin_id_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_isinstance), (mp_obj_t)&mp_builtin_isinstance_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_issubclass), (mp_obj_t)&mp_builtin_issubclass_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_iter), (mp_obj_t)&mp_builtin_iter_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_len), (mp_obj_t)&mp_builtin_len_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_locals), (mp_obj_t)&mp_builtin_locals_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_max), (mp_obj_t)&mp_builtin_max_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_min), (mp_obj_t)&mp_builtin_min_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_next), (mp_obj_t)&mp_builtin_next_obj }, diff --git a/py/qstrdefs.h b/py/qstrdefs.h index 2271941a0..c2fdffe01 100644 --- a/py/qstrdefs.h +++ b/py/qstrdefs.h @@ -97,6 +97,7 @@ Q(exec) Q(filter) Q(float) Q(getattr) +Q(globals) Q(hash) Q(id) Q(io) @@ -106,6 +107,7 @@ Q(issubclass) Q(iter) Q(len) Q(list) +Q(locals) Q(map) Q(max) Q(min) -- GitLab