@@ -63,6 +63,10 @@ STATIC mp_obj_t array_iterator_new(mp_obj_t array_in, mp_obj_iter_buf_t *iter_bu
63
63
STATIC mp_obj_t array_append (mp_obj_t self_in , mp_obj_t arg );
64
64
STATIC mp_obj_t array_extend (mp_obj_t self_in , mp_obj_t arg_in );
65
65
STATIC mp_int_t array_get_buffer (mp_obj_t o_in , mp_buffer_info_t * bufinfo , mp_uint_t flags );
66
+ #if MICROPY_CPYTHON_COMPAT
67
+ STATIC mp_obj_t array_decode (size_t n_args , const mp_obj_t * args );
68
+ #endif
69
+
66
70
67
71
/******************************************************************************/
68
72
// array
@@ -546,7 +550,24 @@ STATIC mp_int_t array_get_buffer(mp_obj_t o_in, mp_buffer_info_t *bufinfo, mp_ui
546
550
return 0 ;
547
551
}
548
552
549
- #if MICROPY_PY_BUILTINS_BYTEARRAY || MICROPY_PY_ARRAY
553
+
554
+ #if MICROPY_CPYTHON_COMPAT && MICROPY_PY_BUILTINS_BYTEARRAY
555
+ // Directly lifted from objstr.c
556
+ STATIC mp_obj_t array_decode (size_t n_args , const mp_obj_t * args ) {
557
+ mp_obj_t new_args [2 ];
558
+ if (n_args == 1 ) {
559
+ new_args [0 ] = args [0 ];
560
+ new_args [1 ] = MP_OBJ_NEW_QSTR (MP_QSTR_utf_hyphen_8 );
561
+ args = new_args ;
562
+ n_args ++ ;
563
+ }
564
+ return mp_obj_str_make_new (& mp_type_str , n_args , args , NULL );
565
+ }
566
+ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (array_decode_obj , 1 , 3 , array_decode );
567
+ #endif
568
+
569
+
570
+ #if MICROPY_PY_ARRAY
550
571
STATIC const mp_rom_map_elem_t array_locals_dict_table [] = {
551
572
{ MP_ROM_QSTR (MP_QSTR_append ), MP_ROM_PTR (& array_append_obj ) },
552
573
{ MP_ROM_QSTR (MP_QSTR_extend ), MP_ROM_PTR (& array_extend_obj ) },
@@ -555,6 +576,19 @@ STATIC const mp_rom_map_elem_t array_locals_dict_table[] = {
555
576
STATIC MP_DEFINE_CONST_DICT (array_locals_dict , array_locals_dict_table );
556
577
#endif
557
578
579
+ #if MICROPY_PY_BUILTINS_BYTEARRAY
580
+ STATIC const mp_rom_map_elem_t bytearray_locals_dict_table [] = {
581
+ { MP_ROM_QSTR (MP_QSTR_append ), MP_ROM_PTR (& array_append_obj ) },
582
+ { MP_ROM_QSTR (MP_QSTR_extend ), MP_ROM_PTR (& array_extend_obj ) },
583
+ #if MICROPY_CPYTHON_COMPAT
584
+ { MP_ROM_QSTR (MP_QSTR_decode ), MP_ROM_PTR (& array_decode_obj ) },
585
+ #endif
586
+ };
587
+
588
+ STATIC MP_DEFINE_CONST_DICT (bytearray_locals_dict , bytearray_locals_dict_table );
589
+ #endif
590
+
591
+
558
592
#if MICROPY_PY_ARRAY
559
593
const mp_obj_type_t mp_type_array = {
560
594
{ & mp_type_type },
@@ -581,7 +615,7 @@ const mp_obj_type_t mp_type_bytearray = {
581
615
.binary_op = array_binary_op ,
582
616
.subscr = array_subscr ,
583
617
.buffer_p = { .get_buffer = array_get_buffer },
584
- .locals_dict = (mp_obj_dict_t * )& array_locals_dict ,
618
+ .locals_dict = (mp_obj_dict_t * )& bytearray_locals_dict ,
585
619
};
586
620
#endif
587
621
0 commit comments