From 245d64c60d0ea30f5080ff53225b5169927e24d6 Mon Sep 17 00:00:00 2001 From: Matthew Bentham Date: Mon, 2 Dec 2019 12:59:43 +0000 Subject: Work in progress of python bindings for Arm NN Not built or tested in any way Signed-off-by: Matthew Bentham Change-Id: Ie7f92b529aa5087130f0c5cc8c17db1581373236 --- .../src/pyarmnn/swig/typemaps/network_optimize.i | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i (limited to 'python/pyarmnn/src/pyarmnn/swig/typemaps/network_optimize.i') 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>) { + 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 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>) +%enddef -- cgit v1.2.1