ImagingTools Core SDK
CSchema.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// Qt includes
6#include <QtCore/QJsonObject>
7#include <QtCore/QJsonArray>
8#include <QtCore/QJsonValue>
9#include <QtCore/QString>
10#include <QtCore/QList>
11
12// ImtCore includes
13#include <imtoas/CProperty.h>
14
15
16namespace imtoas
17{
18
19
20class CSchema
21{
22public:
23 enum CombineType
24 {
25 CT_SIMPLE,
26 CT_ALL_OF,
27 CT_ONE_OF,
28 CT_ANY_OF
29 };
30
31 CSchema();
32
33 [[nodiscard]] QString GetId() const;
34 void SetId(const QString& id);
35
36 [[nodiscard]] QString GetType() const;
37 void SetType(const QString& type);
38
39 [[nodiscard]] QList<QString> GetRequiredProperties() const;
40 void SetRequiredProperties(const QList<QString>& requiredPropertyList);
41
42 [[nodiscard]] QList<CProperty> GetProperties() const;
43 void SetProperties(const QList<CProperty>& properties);
44
45 [[nodiscard]] QList<QString> GetEnumValues() const;
46 void SetEnumValues(const QList<QString>& enumValues);
47
48 [[nodiscard]] CombineType GetCombineType() const;
49 void SetCombineType(CombineType combineType);
50
51 [[nodiscard]] QList<CProperty> GetCombineProperties() const;
52 void SetCombineProperties(const QList<CProperty>& combineProperties);
53
54 [[nodiscard]] static bool ReadFromJsonObject(CSchema& object, const QJsonObject& jsonObject, const QJsonObject& globalObject);
55
56 bool operator==(const CSchema& other) const;
57 bool operator!=(const CSchema& other) const { return !(operator==(other)); }
58
59private:
60 QString m_id;
61 QString m_type;
62 QList<QString> m_requiredProperties;
63 QList<CProperty> m_properties;
64 QList<QString> m_enumValues;
65 CombineType m_combineType;
66 QList<CProperty> m_combineProperties;
67};
68
69
70} // namespace imtoas
71
72
73Q_DECLARE_METATYPE(imtoas::CSchema);
74
75