31
31
32
32
#include "py/runtime.h"
33
33
#include "py/binary.h"
34
+ #include "py/objproperty.h"
34
35
#include "py/objstr.h"
35
36
#include "py/objarray.h"
36
37
@@ -270,15 +271,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(memoryview_cast_obj, memoryview_cast);
270
271
#endif
271
272
272
273
#if MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE
273
- STATIC void memoryview_attr (mp_obj_t self_in , qstr attr , mp_obj_t * dest ) {
274
- if (dest [0 ] != MP_OBJ_NULL ) {
275
- return ;
276
- }
277
- if (attr == MP_QSTR_itemsize ) {
278
- mp_obj_array_t * self = MP_OBJ_TO_PTR (self_in );
279
- dest [0 ] = MP_OBJ_NEW_SMALL_INT (mp_binary_get_size ('@' , self -> typecode & TYPECODE_MASK , NULL ));
280
- }
274
+ STATIC mp_obj_t memoryview_itemsize_get (mp_obj_t self_in ) {
275
+ mp_obj_array_t * self = MP_OBJ_TO_PTR (self_in );
276
+ return MP_OBJ_NEW_SMALL_INT (mp_binary_get_size ('@' , self -> typecode & TYPECODE_MASK , NULL ));
281
277
}
278
+ MP_DEFINE_CONST_FUN_OBJ_1 (memoryview_itemsize_get_obj , memoryview_itemsize_get );
279
+
280
+ MP_PROPERTY_GETTER (memoryview_itemsize_obj , (mp_obj_t )& memoryview_itemsize_get_obj );
282
281
#endif
283
282
284
283
#endif
@@ -785,9 +784,14 @@ const mp_obj_type_t mp_type_bytearray = {
785
784
786
785
#if MICROPY_PY_BUILTINS_MEMORYVIEW
787
786
788
- #if MICROPY_CPYTHON_COMPAT
787
+ #if MICROPY_CPYTHON_COMPAT || MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE
789
788
STATIC const mp_rom_map_elem_t memoryview_locals_dict_table [] = {
789
+ #if MICROPY_CPYTHON_COMPAT
790
790
{ MP_ROM_QSTR (MP_QSTR_cast ), MP_ROM_PTR (& memoryview_cast_obj ) },
791
+ #endif
792
+ #if MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE
793
+ { MP_ROM_QSTR (MP_QSTR_itemsize ), MP_ROM_PTR (& memoryview_itemsize_obj ) },
794
+ #endif
791
795
};
792
796
793
797
STATIC MP_DEFINE_CONST_DICT (memoryview_locals_dict , memoryview_locals_dict_table );
@@ -798,12 +802,9 @@ const mp_obj_type_t mp_type_memoryview = {
798
802
.flags = MP_TYPE_FLAG_EQ_CHECKS_OTHER_TYPE | MP_TYPE_FLAG_EXTENDED ,
799
803
.name = MP_QSTR_memoryview ,
800
804
.make_new = memoryview_make_new ,
801
- #if MICROPY_CPYTHON_COMPAT
805
+ #if MICROPY_CPYTHON_COMPAT || MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE
802
806
.locals_dict = (mp_obj_dict_t * )& memoryview_locals_dict ,
803
807
#endif
804
- #if MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE
805
- .attr = memoryview_attr ,
806
- #endif
807
808
MP_TYPE_EXTENDED_FIELDS (
808
809
.getiter = array_iterator_new ,
809
810
.unary_op = array_unary_op ,
0 commit comments