// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // %module pyarmnn_onnxparser %{ #define SWIG_FILE_WITH_INIT #include "armnnOnnxParser/IOnnxParser.hpp" #include "armnn/INetwork.hpp" %} //typemap definitions and other common stuff %include "standard_header.i" namespace std { %template(BindingPointInfo) pair; %template(MapStringTensorShape) map; %template(StringVector) vector; } namespace armnnOnnxParser { %feature("docstring", " Interface for creating a parser object using ONNX (https://onnx.ai/) onnx files. Parsers are used to automatically construct Arm NN graphs from model files. ") IOnnxParser; %nodefaultctor IOnnxParser; class IOnnxParser { public: %feature("docstring", " Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name. Args: name (string): Name of the input node. Returns: tuple: (`int`, `TensorInfo`) ") GetNetworkInputBindingInfo; std::pair GetNetworkInputBindingInfo(const std::string& name); %feature("docstring", " Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name. Args: name (string): Name of the output node. Returns: tuple: (`int`, `TensorInfo`) ") GetNetworkOutputBindingInfo; std::pair GetNetworkOutputBindingInfo(const std::string& name); }; %extend IOnnxParser { // This is not a substitution of the default constructor of the Armnn class. It tells swig to create custom __init__ // method for IOnnxParser python object that will use static factory method to do the job. IOnnxParser() { return armnnOnnxParser::IOnnxParser::CreateRaw(); } // The following does not replace a real destructor of the Armnn class. // It creates a functions that will be called when swig object goes out of the scope to clean resources. // so the user doesn't need to call IOnnxParser::Destroy himself. // $self` is a pointer to extracted ArmNN IOnnxParser object. ~IOnnxParser() { armnnOnnxParser::IOnnxParser::Destroy($self); } %feature("docstring", " Create the network from a binary file on disk. Args: graphFile (str): Path to the onnx model to be parsed. Returns: INetwork: Parsed network. Raises: RuntimeError: If model file was not found. ") CreateNetworkFromBinaryFile; %newobject CreateNetworkFromBinaryFile; armnn::INetwork* CreateNetworkFromBinaryFile(const char* graphFile) { return $self->CreateNetworkFromBinaryFile(graphFile).release(); } } } // Clear exception typemap. %exception;