aboutsummaryrefslogtreecommitdiff
path: root/python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i
diff options
context:
space:
mode:
authorMatthew Bentham <Matthew.Bentham@arm.com>2019-12-02 12:59:43 +0000
committerMatthew Bentham <Matthew.Bentham@arm.com>2019-12-02 16:23:45 +0000
commit245d64c60d0ea30f5080ff53225b5169927e24d6 (patch)
treed623e46d7d5ddb34ef3bb84c45df3ada9209ce82 /python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i
parent88d5f9f1615fa956464b8932b574d85c37cec937 (diff)
downloadarmnn-experimental/pyarmnn.tar.gz
Work in progress of python bindings for Arm NNexperimental/pyarmnn
Not built or tested in any way Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com> Change-Id: Ie7f92b529aa5087130f0c5cc8c17db1581373236
Diffstat (limited to 'python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i')
-rw-r--r--python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i41
1 files changed, 41 insertions, 0 deletions
diff --git a/python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i b/python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i
new file mode 100644
index 0000000000..05df82bdd1
--- /dev/null
+++ b/python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i
@@ -0,0 +1,41 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+%define %optimize_typemap_out
+ %typemap(out) (std::pair<armnn::IOptimizedNetwork*, std::vector<std::string>>) {
+ PyObject * network = SWIG_NewPointerObj(SWIG_as_voidptr($1.first), SWIGTYPE_p_armnn__IOptimizedNetwork, SWIG_POINTER_OWN);
+ $result = PyTuple_New(2);
+
+ // Convert vector to fixed-size tuple
+ std::vector<std::string> strings = $1.second;
+ Py_ssize_t size = strings.size();
+
+ // New reference. Need to Py_DECREF
+ PyObject* errMsgTuple = PyTuple_New(size);
+
+ if (!errMsgTuple) {
+ Py_XDECREF(errMsgTuple);
+ return PyErr_NoMemory();
+ }
+
+ for (Py_ssize_t i = 0; i < size; i++) {
+ // New reference. Need to Py_DECREF
+ PyObject *string = PyString_FromString(strings[i].c_str());
+
+ if (!string) {
+ Py_XDECREF(string);
+ return PyErr_NoMemory();
+ }
+ PyTuple_SetItem(errMsgTuple, i, string);
+ }
+
+ // Create result tuple
+ PyTuple_SetItem($result, 0, network);
+ PyTuple_SetItem($result, 1, errMsgTuple);
+ }
+%enddef
+
+%define %clear_optimize_typemap_out
+ %typemap(out) (std::pair<armnn::IOptimizedNetwork*, std::vector<std::string>>)
+%enddef