diff options
author | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-07-25 15:25:44 +0100 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-07-25 16:35:08 +0100 |
commit | ac60d28414041774d7a4c8b6b5c4b0991712ef0f (patch) | |
tree | a2e36604bd567f3b93aa0212963115397eb91374 /src/backends/backendsCommon/IBackendInternal.hpp | |
parent | b19d2e9c163f44e180a1cfa1bcad6a67e4b7cdd9 (diff) | |
download | armnn-ac60d28414041774d7a4c8b6b5c4b0991712ef0f.tar.gz |
IVGCVSW-3543 Implement the backend versioning algorithm
* Added version structure for backends, with comparisons operators
* Added version to IBackendInternal
* Added version utility function to DynamicBackendUtils class
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Change-Id: I3697469675c27f79f7cfb296cfa69ec7e06375e5
Diffstat (limited to 'src/backends/backendsCommon/IBackendInternal.hpp')
-rw-r--r-- | src/backends/backendsCommon/IBackendInternal.hpp | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp index a0d6569949..c548683e3e 100644 --- a/src/backends/backendsCommon/IBackendInternal.hpp +++ b/src/backends/backendsCommon/IBackendInternal.hpp @@ -25,6 +25,42 @@ class IWorkloadFactory; class IMemoryManager; class ILayerSupport; +struct BackendVersion +{ + uint32_t m_Major; + uint32_t m_Minor; + + BackendVersion() + : m_Major(0) + , m_Minor(0) + {} + BackendVersion(uint32_t major, uint32_t minor) + : m_Major(major) + , m_Minor(minor) + {} + + bool operator==(const BackendVersion& other) const + { + return this == &other || + (this->m_Major == other.m_Major && + this->m_Minor == other.m_Minor); + } + + bool operator<=(const BackendVersion& other) const + { + return this->m_Major < other.m_Major || + (this->m_Major == other.m_Major && + this->m_Minor <= other.m_Minor); + } +}; + +inline std::ostream& operator<<(std::ostream& os, const BackendVersion& backendVersion) +{ + os << "[" << backendVersion.m_Major << "." << backendVersion.m_Minor << "]"; + + return os; +} + class IBackendInternal : public IBackend { protected: @@ -79,7 +115,7 @@ public: virtual IMemoryManagerUniquePtr CreateMemoryManager() const { return IMemoryManagerUniquePtr(); - }; + } virtual IWorkloadFactoryPtr CreateWorkloadFactory( const IMemoryManagerSharedPtr& memoryManager = nullptr) const = 0; @@ -142,6 +178,9 @@ public: /// Either this method or CreateMemoryManager() and /// IWorkloadFactory::CreateTensor()/IWorkloadFactory::CreateSubtensor() methods must be implemented. virtual void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) {} + + /// Returns the version of the Backend API + static BackendVersion GetApiVersion() { return { 1, 0 }; } }; using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>; |