@@ -112,21 +112,6 @@ STATIC mp_obj_t array_unary_op(int op, mp_obj_t o_in) {
112112 }
113113}
114114
115- STATIC mp_obj_t array_binary_op (int op , mp_obj_t lhs , mp_obj_t rhs ) {
116- mp_obj_array_t * o = lhs ;
117- switch (op ) {
118- case MP_BINARY_OP_SUBSCR :
119- {
120- uint index = mp_get_index (o -> base .type , o -> len , rhs , false);
121- return mp_binary_get_val_array (o -> typecode , o -> items , index );
122- }
123-
124- default :
125- // op not supported
126- return MP_OBJ_NULL ;
127- }
128- }
129-
130115STATIC mp_obj_t array_append (mp_obj_t self_in , mp_obj_t arg ) {
131116 assert (MP_OBJ_IS_TYPE (self_in , & mp_type_array ) || MP_OBJ_IS_TYPE (self_in , & mp_type_bytearray ));
132117 mp_obj_array_t * self = self_in ;
@@ -142,15 +127,22 @@ STATIC mp_obj_t array_append(mp_obj_t self_in, mp_obj_t arg) {
142127}
143128STATIC MP_DEFINE_CONST_FUN_OBJ_2 (array_append_obj , array_append );
144129
145- STATIC bool array_store_item (mp_obj_t self_in , mp_obj_t index_in , mp_obj_t value ) {
130+ STATIC mp_obj_t array_subscr (mp_obj_t self_in , mp_obj_t index_in , mp_obj_t value ) {
146131 if (value == MP_OBJ_NULL ) {
147132 // delete item; does this need to be implemented?
148- return false;
133+ return MP_OBJ_NOT_SUPPORTED ;
134+ } else {
135+ mp_obj_array_t * o = self_in ;
136+ uint index = mp_get_index (o -> base .type , o -> len , index_in , false);
137+ if (value == MP_OBJ_SENTINEL ) {
138+ // load
139+ return mp_binary_get_val_array (o -> typecode , o -> items , index );
140+ } else {
141+ // store
142+ mp_binary_set_val_array (o -> typecode , o -> items , index , value );
143+ return mp_const_none ;
144+ }
149145 }
150- mp_obj_array_t * o = self_in ;
151- uint index = mp_get_index (o -> base .type , o -> len , index_in , false);
152- mp_binary_set_val_array (o -> typecode , o -> items , index , value );
153- return true;
154146}
155147
156148STATIC machine_int_t array_get_buffer (mp_obj_t o_in , buffer_info_t * bufinfo , int flags ) {
@@ -173,8 +165,7 @@ const mp_obj_type_t mp_type_array = {
173165 .make_new = array_make_new ,
174166 .getiter = array_iterator_new ,
175167 .unary_op = array_unary_op ,
176- .binary_op = array_binary_op ,
177- .store_item = array_store_item ,
168+ .subscr = array_subscr ,
178169 .buffer_p = { .get_buffer = array_get_buffer },
179170 .locals_dict = (mp_obj_t )& array_locals_dict ,
180171};
@@ -186,8 +177,7 @@ const mp_obj_type_t mp_type_bytearray = {
186177 .make_new = bytearray_make_new ,
187178 .getiter = array_iterator_new ,
188179 .unary_op = array_unary_op ,
189- .binary_op = array_binary_op ,
190- .store_item = array_store_item ,
180+ .subscr = array_subscr ,
191181 .buffer_p = { .get_buffer = array_get_buffer },
192182 .locals_dict = (mp_obj_t )& array_locals_dict ,
193183};
0 commit comments