ImagingTools Core SDK
CGqlFieldObject.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/QByteArray>
7
8// ACF includes
9#include <iser/IObject.h>
10
11// ImtCore includes
12#include <imtgql/CGqlEnum.h>
13
14
15namespace imtgql
16{
17
18
19class CGqlFieldFragment;
20
21
22class CGqlFieldObject: virtual public iser::IObject
23{
24public:
25 CGqlFieldObject();
26
27 QByteArrayList GetFieldIds() const;
28 CGqlFieldObject* CreateFieldObject(const QByteArray& fieldId);
29 CGqlFieldFragment* CreateFragmentObject(const QByteArray& typeId);
30 const CGqlFieldObject* GetFieldArgumentObjectPtr(const QByteArray& fieldId) const;
31 const CGqlFieldFragment* GetFragmentArgumentObjectPtr(const QByteArray& fieldId) const;
32 CGqlFieldObject* GetParentObject() const;
33 void InsertField(const QByteArray& fieldId);
34 void InsertField(const QByteArray& fieldId, const CGqlFieldObject& object);
35 void InsertFragment(const QByteArray& typeId, const CGqlFieldFragment& object);
36 bool IsObject(const QByteArray& fieldId) const;
37 bool IsFragment(const QByteArray& fieldId) const;
38
39 // reimplemented (iser::ISerializable)
40 virtual bool Serialize(iser::IArchive &archive) override;
41
42 // reimplemented (iser::IChangeable)
43 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
44 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
45 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
46protected:
47 void RemoveField(const QByteArray& fieldId);
48
49protected:
50 QList<QByteArray> m_emptyFields;
51 QMap<QByteArray, std::shared_ptr<CGqlFieldObject>> m_objectFields; // map <fieldId, smart<CGqlFieldObject>>
52 QMap<QByteArray, std::shared_ptr<CGqlFieldFragment>> m_fragmentFields; // map <typeId, smart<FieldFragment>>
53 CGqlFieldObject* m_parentPtr;
54};
55
56
57} // namespace imtgql
58
59
60Q_DECLARE_METATYPE(const imtgql::CGqlFieldObject*)
61
62