| // |
| // Copyright © 2017 Arm Ltd. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| %define %mutable_memory(TYPEMAP) |
| %typemap(in) (TYPEMAP) { |
| int res; void *buf = 0; |
| Py_buffer view; |
| res = PyObject_GetBuffer($input, &view, PyBUF_WRITABLE); |
| buf = view.buf; |
| PyBuffer_Release(&view); |
| if (res < 0) { |
| PyErr_Clear(); |
| %argument_fail(res, "(TYPEMAP)", $symname, $argnum); |
| } |
| $1 = buf; |
| } |
| |
| %typemap(typecheck) (TYPEMAP) { |
| $1 = PyObject_CheckBuffer($input) || PyTuple_Check($input) ? 1 : 0; |
| } |
| %enddef |
| |
| %define %clear_mutable_memory(TYPEMAP) |
| %typemap(in) (TYPEMAP); |
| %typemap(typecheck) (TYPEMAP); |
| %enddef |
| |
| %define %const_memory(TYPEMAP) |
| %typemap(in) (TYPEMAP) { |
| int res; void *buf = 0; |
| Py_buffer view; |
| res = PyObject_GetBuffer($input, &view, PyBUF_CONTIG_RO); |
| buf = view.buf; |
| PyBuffer_Release(&view); |
| if (res < 0) { |
| PyErr_Clear(); |
| %argument_fail(res, "(TYPEMAP)", $symname, $argnum); |
| } |
| $1 = buf; |
| } |
| |
| %typemap(typecheck) (TYPEMAP) { |
| $1 = PyObject_CheckBuffer($input) || PyTuple_Check($input) ? 1 : 0; |
| } |
| %enddef |
| |
| %define %clear_const_memory(TYPEMAP) |
| %typemap(in) (TYPEMAP); |
| %typemap(typecheck) (TYPEMAP); |
| %enddef |
| |