summaryrefslogtreecommitdiffstatshomepage
path: root/py/obj.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-01-08 17:33:12 +0000
committerDamien George <damien.p.george@gmail.com>2014-01-08 17:33:12 +0000
commit38a2da68c2e02b8fc5ae308ca9e3b667f8a0aedc (patch)
tree8bf705c9aff2013e1949e5edd803893113d385d3 /py/obj.c
parentea9e441a75d7ea6633b0ea95b21667c48a6f7b6a (diff)
downloadmicropython-38a2da68c2e02b8fc5ae308ca9e3b667f8a0aedc.tar.gz
micropython-38a2da68c2e02b8fc5ae308ca9e3b667f8a0aedc.zip
py: Stuff qstr in object pointer; keys for mp_map_t are now always mp_obj_t.
Diffstat (limited to 'py/obj.c')
-rw-r--r--py/obj.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/py/obj.c b/py/obj.c
index 7d0122c8fe..866be227aa 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -16,6 +16,8 @@
mp_obj_t mp_obj_get_type(mp_obj_t o_in) {
if (MP_OBJ_IS_SMALL_INT(o_in)) {
return (mp_obj_t)&int_type;
+ } else if (MP_OBJ_IS_QSTR(o_in)) {
+ return (mp_obj_t)&str_type;
} else {
mp_obj_base_t *o = o_in;
return (mp_obj_t)o->type;
@@ -71,6 +73,8 @@ machine_int_t mp_obj_hash(mp_obj_t o_in) {
return 1; // needs to hash to same as the integer 1, since True==1
} else if (MP_OBJ_IS_SMALL_INT(o_in)) {
return MP_OBJ_SMALL_INT_VALUE(o_in);
+ } else if (MP_OBJ_IS_QSTR(o_in)) {
+ return MP_OBJ_QSTR_VALUE(o_in);
} else if (MP_OBJ_IS_TYPE(o_in, &none_type)) {
return (machine_int_t)o_in;
} else if (MP_OBJ_IS_TYPE(o_in, &str_type)) {
@@ -107,6 +111,8 @@ bool mp_obj_equal(mp_obj_t o1, mp_obj_t o2) {
return false;
}
}
+ } else if (MP_OBJ_IS_QSTR(o1) || MP_OBJ_IS_QSTR(o2)) {
+ return false;
} 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 {