@@ -52,6 +52,7 @@ typedef struct _mp_obj_array_t {
5252STATIC mp_obj_t array_iterator_new (mp_obj_t array_in );
5353STATIC mp_obj_array_t * array_new (char typecode , uint n );
5454STATIC mp_obj_t array_append (mp_obj_t self_in , mp_obj_t arg );
55+ STATIC mp_int_t array_get_buffer (mp_obj_t o_in , mp_buffer_info_t * bufinfo , int flags );
5556
5657/******************************************************************************/
5758/* array */
@@ -146,6 +147,22 @@ STATIC mp_obj_t array_unary_op(int op, mp_obj_t o_in) {
146147 }
147148}
148149
150+ STATIC mp_obj_t array_binary_op (int op , mp_obj_t lhs_in , mp_obj_t rhs_in ) {
151+ switch (op ) {
152+ case MP_BINARY_OP_EQUAL : {
153+ mp_buffer_info_t lhs_bufinfo ;
154+ mp_buffer_info_t rhs_bufinfo ;
155+ array_get_buffer (lhs_in , & lhs_bufinfo , MP_BUFFER_READ );
156+ if (!mp_get_buffer (rhs_in , & rhs_bufinfo , MP_BUFFER_READ )) {
157+ return mp_const_false ;
158+ }
159+ return MP_BOOL (mp_seq_cmp_bytes (op , lhs_bufinfo .buf , lhs_bufinfo .len , rhs_bufinfo .buf , rhs_bufinfo .len ));
160+ }
161+ default :
162+ return MP_OBJ_NULL ; // op not supported
163+ }
164+ }
165+
149166STATIC mp_obj_t array_append (mp_obj_t self_in , mp_obj_t arg ) {
150167 assert (MP_OBJ_IS_TYPE (self_in , & mp_type_array ) || MP_OBJ_IS_TYPE (self_in , & mp_type_bytearray ));
151168 mp_obj_array_t * self = self_in ;
@@ -227,6 +244,7 @@ const mp_obj_type_t mp_type_array = {
227244 .make_new = array_make_new ,
228245 .getiter = array_iterator_new ,
229246 .unary_op = array_unary_op ,
247+ .binary_op = array_binary_op ,
230248 .subscr = array_subscr ,
231249 .buffer_p = { .get_buffer = array_get_buffer },
232250 .locals_dict = (mp_obj_t )& array_locals_dict ,
@@ -239,6 +257,7 @@ const mp_obj_type_t mp_type_bytearray = {
239257 .make_new = bytearray_make_new ,
240258 .getiter = array_iterator_new ,
241259 .unary_op = array_unary_op ,
260+ .binary_op = array_binary_op ,
242261 .subscr = array_subscr ,
243262 .buffer_p = { .get_buffer = array_get_buffer },
244263 .locals_dict = (mp_obj_t )& array_locals_dict ,
0 commit comments