// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "ArmnnDriver.hpp" #include "ConversionUtils.hpp" #include #include #include namespace armnn_driver { enum class ConversionResult { Success, ErrorMappingPools, UnsupportedFeature }; // A helper template class performing the conversion from an AndroidNN driver Model representation, // to an armnn::INetwork object template class ModelToINetworkConverter { public: using HalModel = typename HalPolicy::Model; ModelToINetworkConverter(const std::vector& backends, const HalModel& model, const std::set& forcedUnsupportedOperations); ConversionResult GetConversionResult() const { return m_ConversionResult; } // Returns the ArmNN INetwork corresponding to the input model, if preparation went smoothly, nullptr otherwise. armnn::INetwork* GetINetwork() const { return m_Data.m_Network.get(); } bool IsOperationSupported(uint32_t operationIndex) const; private: void Convert(); // Shared aggregate input/output/internal data ConversionData m_Data; // Input data const HalModel& m_Model; const std::set& m_ForcedUnsupportedOperations; // Output data ConversionResult m_ConversionResult; std::map m_OperationSupported; }; } // armnn_driver