blob: d6b9399dd5f5a96ee375f45529cbe33499167f6b [file] [log] [blame]
telsoa01c577f2c2018-08-31 09:22:23 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beckecb56cd2018-09-05 12:52:57 +01003// SPDX-License-Identifier: MIT
telsoa01c577f2c2018-08-31 09:22:23 +01004//
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
14namespace armnnOnnxParser
15{
16
Jim Flynnb4d7eae2019-05-01 14:44:27 +010017using BindingPointInfo = armnn::BindingPointInfo;
telsoa01c577f2c2018-08-31 09:22:23 +010018
19class IOnnxParser;
20using IOnnxParserPtr = std::unique_ptr<IOnnxParser, void(*)(IOnnxParser* parser)>;
21
22class IOnnxParser
23{
24public:
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:
45 virtual ~IOnnxParser() {};
46 };
47
48 }