diff options
author | Damien George <damien.p.george@gmail.com> | 2014-01-14 15:13:40 -0800 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-01-14 15:13:40 -0800 |
commit | 6c2401e935b38ca87fd8f52efbb614a428b6938c (patch) | |
tree | 9314200eddfd45d99491cb29f47533404ef030f5 /py/builtin.c | |
parent | 8bc96471f0219b9d3f24ae879f60b509927e1df4 (diff) | |
parent | 93451002f04e0b89e41e1faa82f86e937bb219f1 (diff) | |
download | micropython-6c2401e935b38ca87fd8f52efbb614a428b6938c.tar.gz micropython-6c2401e935b38ca87fd8f52efbb614a428b6938c.zip |
Merge pull request #165 from chipaca/builtins
added zip()
Diffstat (limited to 'py/builtin.c')
-rw-r--r-- | py/builtin.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/py/builtin.c b/py/builtin.c index 389274f319..39b2da9200 100644 --- a/py/builtin.c +++ b/py/builtin.c @@ -324,5 +324,23 @@ static mp_obj_t mp_builtin_sum(int n_args, const mp_obj_t *args) { } return value; } - MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_builtin_sum_obj, 1, 2, mp_builtin_sum); + +static mp_obj_t mp_builtin_sorted(mp_obj_t args, mp_map_t *kwargs) { + mp_obj_t *args_items = NULL; + uint args_len = 0; + + assert(MP_OBJ_IS_TYPE(args, &tuple_type)); + mp_obj_tuple_get(args, &args_len, &args_items); + assert(args_len >= 1); + if (args_len > 1) { + nlr_jump(mp_obj_new_exception_msg(MP_QSTR_TypeError, + "must use keyword argument for key function")); + } + mp_obj_t self = list_type.make_new((mp_obj_t)&list_type, 1, args_items); + mp_obj_t new_args = rt_build_tuple(1, &self); + list_sort(new_args, kwargs); + + return self; +} +MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_sorted_obj, 1, mp_builtin_sorted); |