summaryrefslogtreecommitdiffstatshomepage
path: root/py/obj.c
diff options
context:
space:
mode:
authorJohn R. Lenton <jlenton@gmail.com>2014-01-13 00:41:12 +0000
committerJohn R. Lenton <jlenton@gmail.com>2014-01-13 00:41:12 +0000
commit13e64f06604c1502317921201bdde33c57161808 (patch)
tree865c85e4aaa41fc86711010362b7c0b0b4dbf832 /py/obj.c
parent813edf63a3e4c0bab3dd5edd4e7295462386c2f3 (diff)
parent34f813ee29c7191e3de455c3fc9c788496e3b29e (diff)
downloadmicropython-13e64f06604c1502317921201bdde33c57161808.tar.gz
micropython-13e64f06604c1502317921201bdde33c57161808.zip
Merge remote-tracking branch 'upstream/master' into containment
Diffstat (limited to 'py/obj.c')
-rw-r--r--py/obj.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/py/obj.c b/py/obj.c
index dfb450fb8d..2759437fd7 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -117,6 +117,13 @@ bool mp_obj_equal(mp_obj_t o1, mp_obj_t o2) {
} else if (MP_OBJ_IS_TYPE(o1, &str_type) && MP_OBJ_IS_TYPE(o2, &str_type)) {
return mp_obj_str_get(o1) == mp_obj_str_get(o2);
} else {
+ mp_obj_base_t *o = o1;
+ if (o->type->binary_op != NULL) {
+ mp_obj_t r = o->type->binary_op(RT_COMPARE_OP_EQUAL, o1, o2);
+ if (r != MP_OBJ_NULL) {
+ return r == mp_const_true ? true : false;
+ }
+ }
// TODO: Debugging helper
printf("Equality for '%s' and '%s' types not yet implemented\n", mp_obj_get_type_str(o1), mp_obj_get_type_str(o2));
assert(0);
@@ -231,7 +238,7 @@ uint mp_get_index(const mp_obj_type_t *type, machine_uint_t len, mp_obj_t index)
}
}
-// may return NULL
+// may return MP_OBJ_NULL
mp_obj_t mp_obj_len_maybe(mp_obj_t o_in) {
mp_small_int_t len = 0;
if (MP_OBJ_IS_TYPE(o_in, &str_type)) {
@@ -249,7 +256,7 @@ mp_obj_t mp_obj_len_maybe(mp_obj_t o_in) {
} else if (MP_OBJ_IS_TYPE(o_in, &dict_type)) {
len = mp_obj_dict_len(o_in);
} else {
- return NULL;
+ return MP_OBJ_NULL;
}
return MP_OBJ_NEW_SMALL_INT(len);
}