1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include <armnn/INetwork.hpp> 8 #include <armnn/Tensor.hpp> 9 10 #include <memory> 11 #include <vector> 12 #include <map> 13 14 namespace armnnOnnxParser 15 { 16 17 using BindingPointInfo = armnn::BindingPointInfo; 18 19 class IOnnxParser; 20 using IOnnxParserPtr = std::unique_ptr<IOnnxParser, void(*)(IOnnxParser* parser)>; 21 22 class IOnnxParser 23 { 24 public: 25 static IOnnxParser* CreateRaw(); 26 static IOnnxParserPtr Create(); 27 static void Destroy(IOnnxParser* parser); 28 29 /// Create the network from a protobuf binary file on disk 30 virtual armnn::INetworkPtr CreateNetworkFromBinaryFile(const char* graphFile) = 0; 31 32 /// Create the network from a protobuf text file on disk 33 virtual armnn::INetworkPtr CreateNetworkFromTextFile(const char* graphFile) = 0; 34 35 /// Create the network directly from protobuf text in a string. Useful for debugging/testing 36 virtual armnn::INetworkPtr CreateNetworkFromString(const std::string& protoText) = 0; 37 38 /// Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name 39 virtual BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const = 0; 40 41 /// Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name 42 virtual BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const = 0; 43 44 protected: ~IOnnxParser()45 virtual ~IOnnxParser() {}; 46 }; 47 48 } 49