ImagingTools Core SDK
CSdlProcessArgumentsParserComp.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/QCommandLineOption>
7
8// ACF includes
9#include <ilog/TLoggerCompWrap.h>
10#include <iprm/IParamsSet.h>
11
12// ImtCore includes
13#include <imtsdl/ISdlEditableProcessArgumentsParser.h>
14
15
16class QCommandLineParser;
17
18
19namespace imtsdl
20{
21
22
23class CSdlProcessArgumentsParserComp:
24 public ilog::CLoggerComponentBase,
25 virtual public ISdlEditableProcessArgumentsParser
26{
27
28
29public:
30 typedef ilog::CLoggerComponentBase BaseClass;
31
32 I_BEGIN_COMPONENT(CSdlProcessArgumentsParserComp)
33 I_REGISTER_INTERFACE(imtsdl::ISdlProcessArgumentsParser)
35 I_END_COMPONENT;
36
37 // reimplemented (imtsdl::ISdlProcessArgumentsParser)
38 virtual bool SetArguments(const QStringList& arguments) override;
39 virtual QString GetSchemaFilePath() const override;
40 virtual QString GetOutputDirectoryPath() const override;
41 virtual QString GetNamespace() const override;
42 virtual QString GetNamespacePrefix() const override;
43 virtual bool IsGenerateMode() const override;
44 virtual bool IsDependenciesMode() const override;
45 virtual bool IsModificatorEnabled(const QString& modificatorName) const override;
46 virtual bool IsQmlEnabled() const override;
47 virtual bool IsCppEnabled() const override;
48 virtual bool IsGqlEnabled() const override;
49 virtual bool IsSchemaDependencyModeEnabled() const override;
50 virtual QMap<QString, QString> GetBaseClassList() const override;
51 virtual QStringList GetIncludePaths() const override;
52 virtual GeneratorType GetGeneratorType() const override;
53 virtual QStringList GetHeadersIncludePaths() const override;
54 virtual QString GetDepFilePath() const override;
55 virtual bool IsTemplateEnabled() const override;
56 virtual QString GetTemplateIncludePath() const override;
57 virtual QString GetTemplateOutputPath() const override;
58 virtual QString GetTemplateQmlOutputPath() const override;
59 virtual CppGenerationMode GetCppGenerationMode() const override;
60 virtual TypenameWriteMode GetTypenameWriteMode() const override;
61
62 // reimplemented (imtsdl::ISdlEditableProcessArgumentsParser)
63 virtual bool ReadFromSettings(const QString& settingsFilePath) override;
64 virtual void SetSchemaFilePath(const QString& schemaFilePath) override;
65 virtual void SetOutputDirectoryPath(const QString& outputDirectoryPath) override;
66 virtual void SetNamespace(const QString& aNamespace) override;
67 virtual void SetNamespacePrefix(const QString& namespacePrefix) override;
68 virtual void SetDependenciesModeEnabled(bool enabled = true) override;
69 virtual void SetGenerateModeEnabled(bool enabled = true) override;
70 virtual void SetEnabledModificators(const QStringList& modificators) override;
71 virtual void SetEnabledAllModificators(bool enable = true) override;
72 virtual void SetCppEnabled(bool enabled = true) override;
73 virtual void SetQmlEnabled(bool enabled = true) override;
74 virtual void SetGqlEnabled(bool enabled = true) override;
75 virtual void SetSchemaDependencyModeEnabled(bool enabled = true) override;
76 virtual void SetBaseClassList(const QMap<QString, QString>& baseClassList) override;
77 virtual void SetIncludePaths(const QStringList & includePaths) override;
78 virtual void SetGeneratorType(GeneratorType type) override;
79 virtual void SetHeadersIncludePaths(const QStringList& includePaths) override;
80 virtual void SetDepFilePath(const QString& path) override;
81 virtual void SetTemplateEnabled(bool enabled) override;
82 virtual void SetTemplateIncludePath(const QString& templateIncludePath) override;
83 virtual void SetTemplateOutputPath(const QString& templateOutputPath) override;
84 virtual void SetTypenameWriteMode(TypenameWriteMode mode) override;
85
86
87protected:
94 virtual QList<QCommandLineOption> PrepareCommandLineOptions();
95
101 virtual bool ProcessCommandLineOptions(const QCommandLineParser& commandLineParser);
102
103private:
104 QString m_schemaFilePath;
105 QString m_outputDirectoryPath;
106 QString m_headerFileExctention;
107 QString m_sourceCodeFileExctention;
108 QString m_namespace;
109 QString m_namespacePrefix;
110 QStringList m_usedModificators;
111 std::optional<bool> m_isGenerateMode;
112 std::optional<bool> m_isDependenciesMode;
113 std::optional<bool> m_useAllModificators;
114 std::optional<bool> m_notUseModificators;
115 std::optional<bool> m_cppEnabled;
116 std::optional<bool> m_qmlEnabled;
117 std::optional<bool> m_gqlEnabled;
118 std::optional<bool> m_schemaDependencyModeEnabled;
119 QMap<QString, QString> m_baseClassList;
120 QStringList m_includePaths;
121 std::optional<GeneratorType> m_generatorType;
122 QStringList m_headersIncludePaths;
123 QString m_depFilePath;
124 std::optional<bool> m_isTemplateEnabled;
125 QString m_outputDirTemplate;
126 QString m_outputQmlDirTemplate;
127 QString m_includePathTemplate;
128 std::optional<CppGenerationMode> m_cppGenerationMode;
129 std::optional<TypenameWriteMode> m_typenameWriteMode;
130};
131
132
133} // namespace imtsdl
134
135
an editable version of a ISdlProcessArgumentsParser