blob: a24b60064a62a668de0c357a56b425734f4e9c17 [file] [log] [blame]
David Becke97c6e02018-10-03 13:09:28 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
David Beckd4dfa682018-10-24 17:09:46 +01007#include <armnn/IBackend.hpp>
8#include <memory>
David Becke97c6e02018-10-03 13:09:28 +01009
10namespace armnn
11{
David Beck29c75de2018-10-23 13:35:58 +010012class IWorkloadFactory;
David Becke97c6e02018-10-03 13:09:28 +010013
14class IBackendInternal : public IBackend
15{
16protected:
David Beck6b779f02018-10-09 17:20:21 +010017 IBackendInternal() = default;
David Becke97c6e02018-10-03 13:09:28 +010018
19public:
David Beck29c75de2018-10-23 13:35:58 +010020 // Allow backends created by the factory function
21 // to be destroyed through IBackendInternal.
22 ~IBackendInternal() override = default;
23
24 using IWorkloadFactoryPtr = std::unique_ptr<IWorkloadFactory>;
25 virtual IWorkloadFactoryPtr CreateWorkloadFactory() const = 0;
David Becke97c6e02018-10-03 13:09:28 +010026};
27
David Beck29c75de2018-10-23 13:35:58 +010028using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>;
29
David Becke97c6e02018-10-03 13:09:28 +010030} // namespace armnn