aboutsummaryrefslogtreecommitdiff
path: root/python/pyarmnn/src/pyarmnn/swig/typemaps/tensor_memory.i
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyarmnn/src/pyarmnn/swig/typemaps/tensor_memory.i')
-rw-r--r--python/pyarmnn/src/pyarmnn/swig/typemaps/tensor_memory.i52
1 files changed, 52 insertions, 0 deletions
diff --git a/python/pyarmnn/src/pyarmnn/swig/typemaps/tensor_memory.i b/python/pyarmnn/src/pyarmnn/swig/typemaps/tensor_memory.i
new file mode 100644
index 0000000000..de38a63b97
--- /dev/null
+++ b/python/pyarmnn/src/pyarmnn/swig/typemaps/tensor_memory.i
@@ -0,0 +1,52 @@
+//
+// 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
+