// // 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. armnn::INetworkPtr CreateNetworkFromTextFile( const char* graphFile, const std::map& inputShapes, const std::vector& requestedOutputs); /// Create the network from a protobuf binary file on the disk. armnn::INetworkPtr CreateNetworkFromBinaryFile( const char* graphFile, const std::map& inputShapes, const std::vector& requestedOutputs); /// Create the network directly from protobuf text in a string. Useful for debugging/testin.g armnn::INetworkPtr CreateNetworkFromString( const char* protoText, const std::map& inputShapes, const std::vector& requestedOutputs); /// Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name. BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const; /// Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name. BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const; private: friend class CaffeParser; friend class RecordByRecordCaffeParser; ICaffeParser(); ~ICaffeParser(); class CaffeParserImpl; std::unique_ptr pCaffeParserImpl; }; }