ImagingTools Core SDK
IIdentifiable.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 includes
6#include <istd/IChangeable.h>
7
8
9namespace imtbase
10{
11
12
16class IIdentifiable: virtual public istd::IChangeable
17{
18public:
22 virtual QByteArray GetObjectUuid() const = 0;
23
27 virtual bool SetObjectUuid(const QByteArray& identifier) = 0;
28};
29
30
31inline QByteArray GetObjectUuid(const istd::IChangeable* objectPtr)
32{
33 const IIdentifiable* identifiablePtr = dynamic_cast<const IIdentifiable*>(objectPtr);
34
35 return identifiablePtr == nullptr ? QByteArray() : identifiablePtr->GetObjectUuid();
36}
37
38
39inline bool SetObjectUuid(istd::IChangeable* objectPtr, const QByteArray& identifier)
40{
41 IIdentifiable* identifiablePtr = dynamic_cast<IIdentifiable*>(objectPtr);
42
43 return identifiablePtr == nullptr ? false : identifiablePtr->SetObjectUuid(identifier);
44}
45
46
47} // namespace imtbase
48
49
virtual QByteArray GetObjectUuid() const =0
virtual bool SetObjectUuid(const QByteArray &identifier)=0