blob: 7e44dbd676f72694cbcae1571fa0ba469306adf4 [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
7#include <armnn/Types.hpp>
David Becke97c6e02018-10-03 13:09:28 +01008
9namespace armnn
10{
David Beck29c75de2018-10-23 13:35:58 +010011class IWorkloadFactory;
David Becke97c6e02018-10-03 13:09:28 +010012
13class IBackendInternal : public IBackend
14{
15protected:
David Beck29c75de2018-10-23 13:35:58 +010016 // Creation must be done through a specific
17 // backend interface.
David Beck6b779f02018-10-09 17:20:21 +010018 IBackendInternal() = default;
David Becke97c6e02018-10-03 13:09:28 +010019
20public:
David Beck29c75de2018-10-23 13:35:58 +010021 // Allow backends created by the factory function
22 // to be destroyed through IBackendInternal.
23 ~IBackendInternal() override = default;
24
25 using IWorkloadFactoryPtr = std::unique_ptr<IWorkloadFactory>;
26 virtual IWorkloadFactoryPtr CreateWorkloadFactory() const = 0;
David Becke97c6e02018-10-03 13:09:28 +010027};
28
David Beck29c75de2018-10-23 13:35:58 +010029using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>;
30
David Becke97c6e02018-10-03 13:09:28 +010031} // namespace armnn