8#include <icomp/TReferenceMember.h>
9#include <iprm/IOptionsManager.h>
12#include <imtsdl/CSdlUnion.h>
13#include <imtsdl/CSdlRequest.h>
14#include <imtsdl/ISdlProcessArgumentsParser.h>
15#include <imtsdl/ISdlTypeListProvider.h>
16#include <imtsdl/ISdlEnumListProvider.h>
17#include <imtsdl/ISdlUnionListProvider.h>
31class ISdlProcessArgumentsParser;
46 typedef icomp::TReferenceMember<iprm::IParamsSet> SchemaParamsCompPtr;
47 typedef icomp::TReferenceMember<ISdlProcessArgumentsParser> ArgumentParserCompPtr;
49 static void WrapTypeToList(QString& text);
51 [[nodiscard]]
static QString ConvertTypeWithNamespace(
52 const CSdlField& sdlField,
53 const QString& relatedNamespace,
54 const ISdlTypeListProvider& listProvider,
55 const ISdlEnumListProvider& enumProvider,
56 const ISdlUnionListProvider& unionProvider,
57 bool* isCustomPtr =
nullptr,
58 bool* isComplexPtr =
nullptr,
59 bool* isArrayPtr =
nullptr,
60 bool* isEnumPtr =
nullptr,
61 bool* isUnionPtr =
nullptr);
63 [[nodiscard]]
static QString OptListConvertTypeWithNamespace(
64 const CSdlField& sdlField,
65 const QString& relatedNamespace,
66 const ISdlTypeListProvider& listProvider,
67 const ISdlEnumListProvider& enumProvider,
68 const ISdlUnionListProvider& unionProvider,
69 bool listWrap =
false,
70 bool* isCustomPtr =
nullptr,
71 bool* isComplexPtr =
nullptr,
72 bool* isArrayPtr =
nullptr,
73 bool* isEnumPtr =
nullptr,
74 bool* isUnionPtr =
nullptr);
76 [[nodiscard]]
static QString ResolveRelativePath(
const QString& path,
const QStringList& lookupPaths);
78 static QString ConvertType(
const CSdlField& sdlField,
bool* isCustomPtr =
nullptr,
bool* isComplexPtr =
nullptr,
bool* isArrayPtr =
nullptr);
79 static QString ConvertType(
const QString& sdlTypeName,
bool* isCustomPtr =
nullptr,
bool* isComplexPtr =
nullptr);
80 static QString ConvertTypeOrEnum(
const CSdlField& sdlField,
const SdlEnumList& enumList,
bool* isCustomPtr =
nullptr,
bool* isComplexPtr =
nullptr,
bool* isArrayPtr =
nullptr,
bool* isEnumPtr =
nullptr);
82 static QString
ConvertTypeOrEnumOrUnion(
const CSdlField& sdlField,
const SdlEnumList& enumList,
const SdlUnionList& unionList,
bool* isCustomPtr =
nullptr,
bool* isComplexPtr =
nullptr,
bool* isArrayPtr =
nullptr,
bool* isEnumPtr =
nullptr,
bool* isUnion =
nullptr);
84 static QString QmlConvertType(
const QString& sdlTypeName,
bool* isCustomPtr =
nullptr);
86 static void FeedStream(QTextStream& stream, uint lines = 1,
bool flush =
true);
87 static void FeedLineHorizontally(QString& line, uint indents = 1,
char indentDelimiter =
'\t');
88 static void FeedStreamHorizontally(QTextStream& stream, uint indents = 1,
char indentDelimiter =
'\t');
90 [[nodiscard]]
static QString GetCapitalizedValue(
const QString& inputValue);
91 [[nodiscard]]
static QString GetDecapitalizedValue(
const QString& inputValue);
92 [[nodiscard]]
static bool IsTypeHasFundamentalTypes(
const CSdlType& sdlType, QSet<QString>* foundTypesPtr =
nullptr);
93 [[nodiscard]]
static bool IsTypeHasFundamentalTypes(
const CSdlRequest& sdlRequest, QSet<QString>* foundTypesPtr =
nullptr);
94 [[nodiscard]]
static bool IsTypeHasNonFundamentalTypes(
const CSdlType& sdlType, QSet<QString>* foundTypesPtr =
nullptr);
95 [[nodiscard]]
static bool IsTypeHasNonFundamentalTypes(
const CSdlRequest& sdlRequest, QSet<QString>* foundTypesPtr =
nullptr);
96 [[nodiscard]]
static QString GetFromVariantConversionString(
const CSdlField& sdlField);
98 [[nodiscard]]
static QString GetFromVariantConversionStringExt(
const CSdlField& sdlField,
bool singleValue =
false);
99 [[nodiscard]]
static bool EnsureFieldHasValidType(
const CSdlField& sdlField,
const SdlTypeList& typeList,
const SdlEnumList& enumList,
const SdlUnionList& unionList);
100 [[nodiscard]]
static bool GetSdlTypeForField(
const CSdlField& sdlField,
const SdlTypeList& typeList, CSdlType& sdlType);
101 [[nodiscard]]
static bool GetSdlEnumForField(
const CSdlField& sdlField,
const SdlEnumList& enumList, CSdlEnum& sdlEnum);
102 [[nodiscard]]
static bool GetSdlUnionForField(
const CSdlField& sdlField,
const SdlUnionList& unionList, CSdlUnion& sdlUnion);
104 [[nodiscard]]
static std::shared_ptr<CSdlEntryBase>
GetSdlTypeOrEnumOrUnionForField(
const CSdlField& sdlField,
const SdlTypeList& typeList,
const SdlEnumList& enumList,
const SdlUnionList& unionList);
106 [[nodiscard]]
static std::shared_ptr<CSdlEntryBase> FindEntryByName(
const QString& entryName,
const SdlTypeList& typeList,
const SdlEnumList& enumList = SdlEnumList(),
const SdlUnionList& unionList = SdlUnionList());
108 [[nodiscard]]
static QString GetNamespaceAcceptableString(
const QString& originalText);
109 [[nodiscard]]
static QString GetFileSystemAcceptableEntryPath(
const QString& originalText);
110 [[nodiscard]]
static QString BuildNamespaceFromComponents(
const QString& schemaNamespace,
const QString& schemaName,
const QString& versionName);
111 [[nodiscard]]
static QString BuildNamespaceFromParams(
const iprm::IParamsSet& schemaParams,
bool addVersion =
true,
bool addPrefix =
false);
112 [[nodiscard]]
static QString BuildQmlImportDeclarationFromParams(
const iprm::IParamsSet& schemaParams,
const QString& suffix,
bool addVersion =
true);
113 [[nodiscard]]
static QString GetNamespaceFromParamsOrArguments(
114 const SchemaParamsCompPtr& schemaParamsCompPtr,
115 const ArgumentParserCompPtr& argumentParamsCompPtr,
bool addVersion =
true);
116 [[nodiscard]]
static QString GetNamespaceFromParamsOrArguments(
117 const iprm::IParamsSet* schemaParamsPtr,
118 const ISdlProcessArgumentsParser* argumentParamsPtr,
bool addVersion =
true);
124 [[nodiscard]]
static QString
GetCompleteOutputPath(
const iprm::IParamsSet& schemaParams,
const ISdlProcessArgumentsParser& argumentParser,
bool cleanPath,
bool cppPath);
125 [[nodiscard]]
static QString
GetCompleteOutputPath(
const icomp::TReferenceMember<iprm::IParamsSet>& schemaParamsCompPtr,
const ISdlProcessArgumentsParser& argumentParser,
bool cleanPath,
bool cppPath);
130 [[nodiscard]]
static QString ProcessTemplateString(
const iprm::IParamsSet& schemaParams,
const QString& templateString,
const QString& outputDirPath);
131 [[nodiscard]]
static bool UpdateTypeInfo(CSdlEntryBase& sdlEntry,
const iprm::IParamsSet* schemaParamsPtr,
const imtsdl::ISdlProcessArgumentsParser* argumentParserPtr);
133 [[nodiscard]]
static QStringList GetAutoJoinedCppFilePaths(
const iprm::IParamsSet& schemaParams,
const ISdlProcessArgumentsParser& argParser);
134 [[nodiscard]]
static QString GetQmlModuleNameFromParamsOrArguments(
135 const iprm::IParamsSet* schemaParamsPtr,
136 const imtsdl::ISdlProcessArgumentsParser* argumentParamsPtr);
137 [[nodiscard]]
static QString GetQmlModuleNameFromParamsOrArguments(
138 const SchemaParamsCompPtr& schemaParamsCompPtr,
139 const ArgumentParserCompPtr& argumentParamsCompPtr);
141 [[nodiscard]]
static QString GetAutoDefinedQmlBasePath(
const iprm::IParamsSet& schemaParams,
const QString& baseDirPath);
142 [[nodiscard]]
static QString GetAutoDefinedQmlQrcFilePath(
const iprm::IParamsSet& schemaParamsCompPtr,
const QString& baseDirPath);
144 [[nodiscard]]
static QString GetEscapedNamespace(
const QString& aNamespace,
const QString& relatedNamespace);
146 static void GenerateListTempValueCode(QTextStream& stream,
const CSdlField& sdlField, QString& tempVariableName, uint indents = 1);
148 static void PrintFiles(
const QString& filePath,
const QStringList& files,
const iprm::IOptionsManager& depsList);
149 static void PrintFiles(std::ostream& outStream,
const QStringList& files, imtsdl::ISdlProcessArgumentsParser::GeneratorType projectCodeGenerator = imtsdl::ISdlProcessArgumentsParser::GT_CMAKE);
151 [[nodiscard]]
static QString GetTypeVersion(
const CSdlEntryBase& sdlType);
153 [[nodiscard]]
static IncludeDirective CreateCxxDirective(
const QString& path);
154 [[nodiscard]]
static IncludeDirective CreateQtDirective(
const QString& path);
155 [[nodiscard]]
static IncludeDirective CreateAcfDirective(
const QString& path);
156 [[nodiscard]]
static IncludeDirective CreateImtDirective(
const QString& path);
157 [[nodiscard]]
static IncludeDirective CreateCustomDirective(
const QString& path);