// // Copyright © 2017 Arm Ltd. All rights reserved. // See LICENSE file in the project root for full license information. // #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 = std::pair; 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 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 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/testing 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() {}; }; }