1 // 2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "LayerWithParameters.hpp" 9 #include <armnn/backends/WorkloadFactory.hpp> 10 11 #include <armnn/Descriptors.hpp> 12 13 #include <memory> 14 #include <functional> 15 16 namespace armnn 17 { 18 19 using PreCompiledObjectDeleter = std::function<void(const void*)>; 20 using PreCompiledObjectPtr = std::unique_ptr<void, PreCompiledObjectDeleter>; 21 22 class PreCompiledLayer : public LayerWithParameters<PreCompiledDescriptor> 23 { 24 public: 25 PreCompiledLayer(const PreCompiledDescriptor& param, const char* name); 26 ~PreCompiledLayer(); 27 28 virtual std::unique_ptr<IWorkload> CreateWorkload(const IWorkloadFactory& factory) const override; 29 30 PreCompiledLayer* Clone(Graph &graph) const override; 31 32 void ValidateTensorShapesFromInputs() override; 33 34 void SetPreCompiledObject(PreCompiledObjectPtr preCompiledObject); 35 36 void ExecuteStrategy(IStrategy& strategy) const override; 37 38 private: 39 PreCompiledLayer(const PreCompiledLayer& other) = delete; 40 PreCompiledLayer& operator=(const PreCompiledLayer& other) = delete; 41 42 std::shared_ptr<void> m_PreCompiledObject; 43 }; 44 45 } // namespace armnn 46