ImagingTools Core SDK
CFeatureInfo.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// ImtCore includes
6#include <imtbase/IObjectCollection.h>
7#include <imtbase/TIdentifiableWrap.h>
8#include <imtlic/IFeatureInfo.h>
9
10
11namespace imtlic
12{
13
14
15class CFeatureInfo: virtual public IFeatureInfo
16{
17public:
18 CFeatureInfo();
19
20 void SetFeatureId(const QByteArray& featureId);
21 void SetFeatureName(const QString& featureName);
22 void SetFeatureDescription(const QString& description);
23 void SetOptional(bool optional);
24 void SetParentFeature(const IFeatureInfo* parentFeaturePtr);
25 void SetDependencies(const QByteArrayList& dependencies);
26 void SetIsPermission(bool isPermission);
27
28 // reimplemented (IFeatureInfo)
29 virtual QByteArray GetFeatureId() const override;
30 virtual QString GetFeatureName() const override;
31 virtual QString GetFeatureDescription() const override;
32 virtual bool IsOptional() const override;
33 virtual bool IsPermission() const override;
34 virtual const IFeatureInfo* GetParentFeature() const override;
35 virtual QByteArrayList GetSubFeatureIds(int maxDepth = -1) const override;
36 virtual FeatureInfoPtr GetSubFeature(const QByteArray& subfeatureId, int maxDepth = -1) const override;
37 virtual const FeatureInfoList& GetSubFeatures() const override;
38 virtual bool InsertSubFeature(FeatureInfoPtr subFeatureInfo) override;
39 virtual void DeleteSubFeature(const QByteArray& subFeatureId) override;
40 virtual QByteArrayList GetDependencies() const override;
41
42 // reimplemented (iser::IObject)
43 virtual QByteArray GetFactoryId() const override;
44
45 // reimplemented (iser::ISerializable)
46 virtual bool Serialize(iser::IArchive& archive) override;
47
48 // reimplemented (istd::IChangeable)
49 virtual int GetSupportedOperations() const override;
50 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
51 virtual bool IsEqual(const IChangeable& object) const override;
52 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
53 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
54
55protected:
56 void GetSubFeaturesRecursive(const FeatureInfoList& subFeatures, int maxDepth, int currentDepth, QByteArrayList& featureList) const;
57 IFeatureInfo::FeatureInfoPtr GetSubFeatureRecursive(const FeatureInfoList& subFeatures, const QByteArray& subfeatureId, int maxDepth, int currentDepth = 1) const;
58
59protected:
60 QByteArray m_id;
61 QString m_name;
62 QString m_description;
63 bool m_optional;
64 bool m_isPermission;
65 QByteArrayList m_dependencies;
66 FeatureInfoList m_subFeatures;
67 const IFeatureInfo* m_parentFeaturePtr;
68};
69
70
71typedef imtbase::TIdentifiableWrap<CFeatureInfo> CIdentifiableFeatureInfo;
72
73
74} // namespace imtlic
75
76
Core licensing domain model providing feature-based product licensing and instance management.