|
|
@ -309,16 +309,20 @@ STATIC bool class_store_attr(mp_obj_t self_in, qstr attr, mp_obj_t value) { |
|
|
|
} |
|
|
|
|
|
|
|
bool class_store_item(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { |
|
|
|
mp_obj_class_t *self = self_in; |
|
|
|
mp_obj_t member; |
|
|
|
uint meth_args; |
|
|
|
if (value == MP_OBJ_NULL) { |
|
|
|
// delete item
|
|
|
|
// TODO implement me!
|
|
|
|
return false; |
|
|
|
member = mp_obj_class_lookup(self->base.type, MP_QSTR___delitem__); |
|
|
|
meth_args = 2; |
|
|
|
} else { |
|
|
|
member = mp_obj_class_lookup(self->base.type, MP_QSTR___setitem__); |
|
|
|
meth_args = 3; |
|
|
|
} |
|
|
|
mp_obj_class_t *self = self_in; |
|
|
|
mp_obj_t member = mp_obj_class_lookup(self->base.type, MP_QSTR___setitem__); |
|
|
|
if (member != MP_OBJ_NULL) { |
|
|
|
mp_obj_t args[3] = {self_in, index, value}; |
|
|
|
mp_call_function_n_kw(member, 3, 0, args); |
|
|
|
mp_call_function_n_kw(member, meth_args, 0, args); |
|
|
|
return true; |
|
|
|
} else { |
|
|
|
return false; |
|
|
|