ImagingTools Core SDK
CSdlMetaInfoTools.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
9// ACF includes
10#include <istd/TSharedNullable.h>
11#include <idoc/IDocumentMetaInfo.h>
12
13
14namespace imtdbgql
15{
16
21{
22public:
23 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<bool>& output);
24 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<int>& output);
25 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<long>& output);
26 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<long long>& output);
27 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<float>& output);
28 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<double>& output);
29 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<QString>& output);
30 static void GetMetaInfo(const QVariant& metaInfoData, istd::TSharedNullable<QByteArray>& output);
31
32 template<class T>
33 static void GetMetaInfo(
34 const idoc::IDocumentMetaInfo& metaInfo,
35 int metaInfoType,
36 istd::TSharedNullable<T>& output,
37 bool setNullIfNotExists = true);
38};
39
40
41// inline methods
42template<class T>
43inline void CSdlMetaInfoTools::GetMetaInfo(const idoc::IDocumentMetaInfo& metaInfo, int metaInfoType, istd::TSharedNullable<T>& output, bool setNullIfNotExists)
44{
45 QVariant metaInfoData = metaInfo.GetMetaInfo(metaInfoType);
46 if (metaInfoData.isNull()) {
47 if (setNullIfNotExists) {
48 output.SetNull();
49 }
50 return;
51 }
52
53 GetMetaInfo(metaInfoData, output);
54}
55
56
57
58
59} // namespace imtdbgql
60
61