ImagingTools Core SDK
ISdlProcessArgumentsParser.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// Qt includes
5#include <QtCore/QMetaObject>
6
7// Acf includes
8#include <istd/IPolymorphic.h>
9
10
11namespace imtsdl
12{
13
14
15class ISdlProcessArgumentsParser: virtual public istd::IPolymorphic
16{
17 Q_GADGET
18public:
19 static inline const QString s_sourceFileType = QStringLiteral("CPP");
20 static inline const QString s_headerFileType = QStringLiteral("H");
21
22public:
23 enum GeneratorType
24 {
25 GT_CMAKE,
26 GT_QMAKE,
27 GT_CMAKE_PIPE,
28 GT_DEP_FILE
29 };
30 Q_ENUM(GeneratorType)
31
32 enum CppGenerationMode
33 {
34 CGM_FULL,
35 CGM_HEADER_ONLY,
36 CGM_IMPLEMENTATION_ONLY,
37 };
38 Q_ENUM(CppGenerationMode)
39
40 enum TypenameWriteMode
41 {
42 TWM_ALWAYS,
43 TWM_IF_REQUIRED,
44 TWM_NEVER
45 };
46 Q_ENUM(TypenameWriteMode)
47
48 virtual bool SetArguments(int argc, char** argv);
49 virtual bool SetArguments(const QStringList& arguments) = 0;
50 virtual QString GetSchemaFilePath() const = 0;
51 virtual QString GetOutputDirectoryPath() const = 0;
52 virtual QString GetNamespace() const = 0;
53 virtual QString GetNamespacePrefix() const = 0;
54 virtual bool IsDependenciesMode() const = 0;
55 virtual bool IsGenerateMode() const = 0;
56 virtual bool IsModificatorEnabled(const QString& modificatorName) const = 0;
57 virtual bool IsCppEnabled() const = 0;
58 virtual bool IsQmlEnabled() const = 0;
59 virtual bool IsGqlEnabled() const = 0;
60 virtual bool IsSchemaDependencyModeEnabled() const = 0;
61 virtual QMap<QString/*class name*/, QString/*include directive*/> GetBaseClassList() const = 0;
63 virtual QStringList GetIncludePaths() const = 0;
64 virtual GeneratorType GetGeneratorType() const = 0;
65 virtual QStringList GetHeadersIncludePaths() const = 0;
66 virtual QString GetDepFilePath() const = 0;
67 virtual CppGenerationMode GetCppGenerationMode() const = 0;
68 virtual TypenameWriteMode GetTypenameWriteMode() const = 0;
69
70 // template
71 virtual bool IsTemplateEnabled() const = 0;
72 virtual QString GetTemplateIncludePath() const = 0;
73 virtual QString GetTemplateOutputPath() const = 0;
74 virtual QString GetTemplateQmlOutputPath() const = 0;
75};
76
77
78inline bool ISdlProcessArgumentsParser::SetArguments(int argc, char** argv)
79{
80 QStringList arguments;
81 for (int i = 0; i < argc; ++i){
82 arguments << QString(argv[i]);
83 }
84
85 return SetArguments(arguments);
86}
87
88
89} // namespace imtsdl
90
91