ImagingTools Core SDK
COasTools.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/QList>
7#include <QtCore/QJsonObject>
8
9// forward declaration
10class QJsonObject;
11
12
13namespace imtoas
14{
15
16
17class COasTools
18{
19public:
29 static bool DeReferenceObject(
30 const QJsonObject& jsonObject,
31 const QJsonObject& lookUpjsonObject,
32 QJsonObject& derefed,
33 bool* isReferencePtr = nullptr);
34
42 static QJsonObject FindSecuritySchemeByName(
43 const QString& schemeName,
44 const QJsonObject& lookUpjsonObject);
45
53 template <class _T>
54 static bool ExtractItemsFromObject(QList<_T>& container, const QJsonObject& objectsArray, const QJsonObject& lookupObject);
55
56};
57
58
59
60template<class _T>
61bool COasTools::ExtractItemsFromObject(QList<_T>& container, const QJsonObject& objectsArray, const QJsonObject& lookupObject)
62{
63 for (QJsonObject::const_iterator arrayIter = objectsArray.constBegin(); arrayIter != objectsArray.constEnd(); ++arrayIter){
64 _T item;
65 QJsonObject arrayItemObject = arrayIter->toObject();
66 if (!DeReferenceObject(arrayItemObject, lookupObject, arrayItemObject)){
67 return false;
68 }
69 if (!_T::ReadFromJsonObject(item, arrayItemObject, lookupObject)){
70 return false;
71 }
72 item.SetId(arrayIter.key());
73 container << item;
74 }
75
76 return true;
77}
78
79
80} // namespace imtoas