// // 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 #include #include namespace armnnDeserializer { struct BindingPointInfo { armnn::LayerBindingId m_BindingId; armnn::TensorInfo m_TensorInfo; }; class IDeserializer; using IDeserializerPtr = std::unique_ptr; class IDeserializer { public: static IDeserializer* CreateRaw(); static IDeserializerPtr Create(); static void Destroy(IDeserializer* parser); /// Create an input network from binary file contents armnn::INetworkPtr CreateNetworkFromBinary(const std::vector& binaryContent); /// Create an input network from a binary input stream armnn::INetworkPtr CreateNetworkFromBinary(std::istream& binaryContent); /// Retrieve binding info (layer id and tensor info) for the network input identified by /// the given layer name and layers id BindingPointInfo GetNetworkInputBindingInfo(unsigned int layerId, const std::string& name) const; /// Retrieve binding info (layer id and tensor info) for the network output identified by /// the given layer name and layers id BindingPointInfo GetNetworkOutputBindingInfo(unsigned int layerId, const std::string& name) const; private: IDeserializer(); ~IDeserializer(); class DeserializerImpl; std::unique_ptr pDeserializerImpl; }; } //namespace armnnDeserializer