ImagingTools Core SDK
CDeviceInstanceBase.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF include
6#include <imod/CModelUpdateBridge.h>
7#include <imod/TModelWrap.h>
8
9// ImtCore includes
10#include <imtdev/IEditableDeviceInstance.h>
11#include <imtdev/IDeviceSpecification.h>
12
13
14namespace imtdev
15{
16
17
85{
86public:
94
101
102 // reimplemented (imtdev::IEditableDeviceInstance)
103
114 virtual bool SetIdentifier(IdentifierTypes idType, const QByteArray& id) override;
115
127 virtual bool SetVersion(
128 int versionId,
129 quint32 version,
130 const QString& description) override;
131
139 virtual iattr::IAttributesManager* GetAttributesManager() override;
140
141 // reimplemented (imtdev::IDeviceInstance)
142
151 virtual QByteArray GetIdentifier(int idType) const override;
152
161 virtual const iser::IVersionInfo& GetVersion() const override;
162
170 virtual const iattr::IAttributesProvider* GetAttributes() const override;
171
172 // reimplemented (istd::IChangeable)
173
181 virtual int GetSupportedOperations() const override;
182
192 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
193
202 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
203
204protected:
213 virtual bool EnsureAttributesCreated() const;
214
215protected:
223 class VersionInfo : virtual public iser::IVersionInfo
224 {
225 public:
235 int versionId,
236 quint32 version,
237 const QString& description);
238
239 // reimplemenbted (iser::IVersionInfo)
240 virtual VersionIds GetVersionIds() const override;
241 virtual bool GetVersionNumber(int versionId, quint32& result) const override;
242 virtual QString GetVersionIdDescription(int versionId) const override;
243 virtual QString GetEncodedVersionName(int versionId, quint32 versionNumber) const override;
244
245 // reimplemented (istd::IChangeable)
246 virtual int GetSupportedOperations() const override;
247 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
248 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
249 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
250
251 private:
252 struct VersionItem
253 {
254 quint32 versionNumber;
255 QString versionDescription;
256 };
257
258 QMap<int, VersionItem> m_versions;
259 };
260
262 mutable imod::CModelUpdateBridge m_updateBridge;
264 mutable std::unique_ptr<iattr::IAttributesProvider> m_attributesPtr;
265
266private:
268 QMap<int, QByteArray> m_identifiers;
270 imod::TModelWrap<VersionInfo> m_versionInfo;
271};
272
273
274} // namespace imtdev
Internal version information implementation.
bool SetVersion(int versionId, quint32 version, const QString &description)
Set a version component.
Base implementation class for device instances.
virtual bool SetVersion(int versionId, quint32 version, const QString &description) override
Set version information component.
virtual bool EnsureAttributesCreated() const
Ensure attributes provider is created.
virtual bool CopyFrom(const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
Copy data from another instance.
std::unique_ptr< iattr::IAttributesProvider > m_attributesPtr
Lazy-created attributes (mutable to allow creation in const GetAttributes())
virtual const iattr::IAttributesProvider * GetAttributes() const override
Get attributes provider (read-only)
~CDeviceInstanceBase()
Destructor.
imod::CModelUpdateBridge m_updateBridge
Bridge for change notifications (mutable for change tracking in const methods)
virtual bool ResetData(CompatibilityMode mode=CM_WITHOUT_REFS) override
Reset device instance data.
virtual iattr::IAttributesManager * GetAttributesManager() override
Get attributes manager for modification.
virtual const iser::IVersionInfo & GetVersion() const override
Get version information.
CDeviceInstanceBase()
Constructor.
virtual bool SetIdentifier(IdentifierTypes idType, const QByteArray &id) override
Set device identifier.
virtual int GetSupportedOperations() const override
Get supported operations.
virtual QByteArray GetIdentifier(int idType) const override
Get device identifier.
IdentifierTypes
Types of device identifiers.
VersionIds
Version information identifiers.
Interface for modifying device instance information.