// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "armnn/Types.hpp" #include "armnn/NetworkFwd.hpp" #include "armnn/Tensor.hpp" #include "armnn/INetwork.hpp" #include "armnn/Optional.hpp" #include #include #include namespace armnnTfLiteParser { using BindingPointInfo = armnn::BindingPointInfo; class TfLiteParserImpl; class ITfLiteParser; using ITfLiteParserPtr = std::unique_ptr; class ITfLiteParser { public: struct TfLiteParserOptions { TfLiteParserOptions() : m_StandInLayerForUnsupported(false), m_InferAndValidate(false) {} bool m_StandInLayerForUnsupported; bool m_InferAndValidate; }; static ITfLiteParser* CreateRaw(const armnn::Optional& options = armnn::EmptyOptional()); static ITfLiteParserPtr Create(const armnn::Optional& options = armnn::EmptyOptional()); static void Destroy(ITfLiteParser* parser); /// Create the network from a flatbuffers binary file on disk armnn::INetworkPtr CreateNetworkFromBinaryFile(const char* graphFile); /// Create the network from a flatbuffers binary armnn::INetworkPtr CreateNetworkFromBinary(const std::vector & binaryContent); /// Retrieve binding info (layer id and tensor info) for the network input identified by /// the given layer name and subgraph id BindingPointInfo GetNetworkInputBindingInfo(size_t subgraphId, const std::string& name) const; /// Retrieve binding info (layer id and tensor info) for the network output identified by /// the given layer name and subgraph id BindingPointInfo GetNetworkOutputBindingInfo(size_t subgraphId, const std::string& name) const; /// Return the number of subgraphs in the parsed model size_t GetSubgraphCount() const; /// Return the input tensor names for a given subgraph std::vector GetSubgraphInputTensorNames(size_t subgraphId) const; /// Return the output tensor names for a given subgraph std::vector GetSubgraphOutputTensorNames(size_t subgraphId) const; private: ITfLiteParser(const armnn::Optional& options = armnn::EmptyOptional()); ~ITfLiteParser(); std::unique_ptr pTfLiteParserImpl; }; }