diff options
Diffstat (limited to 'driver_library/python/src/ethosu_driver/swig/typemaps/buffer.i')
-rw-r--r-- | driver_library/python/src/ethosu_driver/swig/typemaps/buffer.i | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/driver_library/python/src/ethosu_driver/swig/typemaps/buffer.i b/driver_library/python/src/ethosu_driver/swig/typemaps/buffer.i index 13b7909..bb4627c 100644 --- a/driver_library/python/src/ethosu_driver/swig/typemaps/buffer.i +++ b/driver_library/python/src/ethosu_driver/swig/typemaps/buffer.i @@ -1,19 +1,25 @@ // -// SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates <open-source-office@arm.com> +// SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates <open-source-office@arm.com> // SPDX-License-Identifier: Apache-2.0 // -%define %mutable_buffer(TYPEMAP, SIZE) + +%define BUFFER_FLAG_RO 0 %enddef +%define BUFFER_FLAG_RW PyBUF_WRITABLE %enddef + +%define %buffer_in(TYPEMAP, SIZE, FLAG) %typemap(in) (TYPEMAP, SIZE) { - int res; void *buf = 0; size_t size = 0; Py_buffer view; - res = PyObject_GetBuffer($input, &view, PyBUF_WRITABLE); - buf = view.buf; - size = view.len; - PyBuffer_Release(&view); + + int res = PyObject_GetBuffer($input, &view, FLAG); if (res < 0) { PyErr_Clear(); %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); } + + void *buf = view.buf; + size_t size = view.len; + PyBuffer_Release(&view); + $1 = ($1_ltype) buf; $2 = ($2_ltype) size; } @@ -23,12 +29,11 @@ } %enddef -%define %clear_mutable_buffer(TYPEMAP, SIZE) +%define %clear_buffer_in(TYPEMAP, SIZE) %typemap(in) (TYPEMAP, SIZE); %typemap(typecheck) (TYPEMAP, SIZE); %enddef - %define %driver_buffer_out %typemap(out) (char*) { auto size = arg1->size(); |