summaryrefslogtreecommitdiff
path: root/py/obj.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-08-12 18:33:40 +0100
committerDamien George <damien.p.george@gmail.com>2014-08-12 18:33:40 +0100
commit4c03b3a899d49f0f4f2c54903403aaa9b384c315 (patch)
tree98a086456f0f5ce8a8108522f1e11c64697eda43 /py/obj.c
parent69c5fe1df676fe5331d5ba9749d84016703e1a59 (diff)
py: Implement builtin reversed() function.
reversed function now implemented, and works for tuple, list, str, bytes and user objects with __len__ and __getitem__. Renamed mp_builtin_len to mp_obj_len to make it publically available (eg for reversed).
Diffstat (limited to 'py/obj.c')
-rw-r--r--py/obj.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/py/obj.c b/py/obj.c
index 04716454d..d8fccfb7b 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -360,6 +360,16 @@ uint mp_get_index(const mp_obj_type_t *type, mp_uint_t len, mp_obj_t index, bool
return i;
}
+// will raise a TypeError if object has no length
+mp_obj_t mp_obj_len(mp_obj_t o_in) {
+ mp_obj_t len = mp_obj_len_maybe(o_in);
+ if (len == MP_OBJ_NULL) {
+ nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError, "object of type '%s' has no len()", mp_obj_get_type_str(o_in)));
+ } else {
+ return len;
+ }
+}
+
// may return MP_OBJ_NULL
mp_obj_t mp_obj_len_maybe(mp_obj_t o_in) {
if (