py/objarray: Add MP_DEFINE_MEMORYVIEW_OBJ convenience macro.

This allows defining a `memoryview` instance, either statically or on the
C stack.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George
2025-01-03 11:53:00 +11:00
parent 6be7570219
commit 9dd4cef814

View File

@@ -53,6 +53,10 @@ typedef struct _mp_obj_array_t {
} mp_obj_array_t;
#if MICROPY_PY_BUILTINS_MEMORYVIEW
#define MP_DEFINE_MEMORYVIEW_OBJ(obj_name, typecode, offset, len, ptr) \
mp_obj_array_t obj_name = {{&mp_type_memoryview}, (typecode), (offset), (len), (ptr)}
static inline void mp_obj_memoryview_init(mp_obj_array_t *self, size_t typecode, size_t offset, size_t len, void *items) {
self->base.type = &mp_type_memoryview;
self->typecode = typecode;
@@ -60,6 +64,7 @@ static inline void mp_obj_memoryview_init(mp_obj_array_t *self, size_t typecode,
self->len = len;
self->items = items;
}
#endif
#if MICROPY_PY_ARRAY || MICROPY_PY_BUILTINS_BYTEARRAY