// // 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 armnnCaffeParser { using BindingPointInfo = armnn::BindingPointInfo; class ICaffeParser; using ICaffeParserPtr = std::unique_ptr; class ICaffeParser { public: static ICaffeParser* CreateRaw(); static ICaffeParserPtr Create(); static void Destroy(ICaffeParser* parser); /// Create the network from a protobuf text file on the disk. virtual armnn::INetworkPtr CreateNetworkFromTextFile( const char* graphFile, const std::map& inputShapes, const std::vector& requestedOutputs) = 0; /// Create the network from a protobuf binary file on the disk. virtual armnn::INetworkPtr CreateNetworkFromBinaryFile( const char* graphFile, const std::map& inputShapes, const std::vector& requestedOutputs) = 0; /// Create the network directly from protobuf text in a string. Useful for debugging/testin.g virtual armnn::INetworkPtr CreateNetworkFromString( const char* protoText, const std::map& inputShapes, const std::vector& requestedOutputs) = 0; /// Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name. virtual BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const = 0; /// Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name. virtual BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const = 0; protected: virtual ~ICaffeParser() {}; }; }