9#include <istd/TDelPtr.h>
10#include <iprm/ITextParam.h>
11#include <iprm/IOptionsManager.h>
12#include <iproc/TSyncProcessorCompBase.h>
15#include <imtsdl/ISdlProcessArgumentsParser.h>
16#include <imtsdl/CSdlTools.h>
17#include <imtsdlgencpp/ICxxModifier.h>
18#include <imtsdlgencpp/CSdlGenTools.h>
19#include <imtsdlgencpp/CCxxProcessorCompBase.h>
37 typedef CSdlGenTools BaseClass3;
40 I_ASSIGN(m_sdlTypeListCompPtr,
"SdlTypeListProvider",
"SDL types used to create a code",
true,
"SdlTypeListProvider")
41 I_ASSIGN(m_sdlEnumListCompPtr,
"SdlEnumListProvider",
"SDL enums used to create a code",
true,
"SdlEnumListProvider")
42 I_ASSIGN(m_sdlUnionListCompPtr,
"SdlUnionListProvider",
"SDL unioins used to create a code",
true,
"SdlUnionListProvider")
43 I_ASSIGN_MULTI_0(m_codeGeneratorExtenderListCompPtr,
"CodeGeneratorExtenderList",
"Extenders, used to generate an additional code",
false)
44 I_ASSIGN(m_customSchemaParamsCompPtr,
"CustomSchemaParams",
"Custom schema parameters, that contains additional options",
false,
"CustomSchemaParams")
45 I_ASSIGN(m_originalSchemaNamespaceCompPtr,
"OriginalSchemaNamespace",
"The namespace of the original(root) schema",
true,
"OriginalSchemaNamespace");
46 I_ASSIGN_MULTI_0(m_includeDirectivesProviderListCompPtr,
"IncludeDirectivesProviderList",
"Providers of include directives, used to generate C(++) directives",
false)
47 I_ASSIGN_MULTI_0(m_modifierListCompPtr,
"ModifierList",
"Modifiers for specific containers, used to generate C++ methods serialization methods ",
false)
48 I_ASSIGN(m_dependentSchemaListCompPtr,
"DependentSchemaList",
"The list of dependent schemas, used to generate dependencies of output file",
true,
"DependentSchemaList");
52 virtual bool ProcessEntry(
53 const imtsdl::CSdlEntryBase& sdlEntry,
54 QIODevice* headerDevicePtr,
55 QIODevice* sourceDevicePtr =
nullptr,
56 const iprm::IParamsSet* paramsPtr =
nullptr)
const override;
59 virtual QList<imtsdl::IncludeDirective> GetIncludeDirectives()
const override;
70 bool BeginClassFiles(
const imtsdl::CSdlType& sdlType, QIODevice* headerPtr, QIODevice* sourcePtr,
const iprm::IParamsSet* paramsPtr)
const;
71 bool BeginHeaderClassFile(
const imtsdl::CSdlType& sdlType, QIODevice* headerPtr,
const iprm::IParamsSet* paramsPtr)
const;
72 bool BeginSourceClassFile(
const imtsdl::CSdlType& sdlType, QIODevice* sourcePtr,
const iprm::IParamsSet* paramsPtr)
const;
73 bool EndClassFiles(
const imtsdl::CSdlType& sdlType, QIODevice* headerPtr, QIODevice* sourcePtr,
const iprm::IParamsSet* paramsPtr)
const;
74 void GenerateMetaInfo(
76 const imtsdl::CSdlType& sdlType,
77 uint indents = 1)
const;
78 void GenerateVersionStruct(
80 const imtsdl::CSdlType& sdlType,
81 uint indents = 1)
const;
82 void GenerateMethodDefinition(
84 const imtsdl::CSdlType& sdlType,
85 MetdodType methodType,
86 ICxxModifier& modifier,
87 bool forHeader)
const;
88 QString GetVersionMemberVariableName(
89 const imtsdl::CSdlType& sdlType,
90 int versionIndex = -1)
const;
91 void GenerateVersionMemberDeclaration(
93 const imtsdl::CSdlType& sdlType,
95 int versionIndex = -1)
const;
96 void GenerateMethodImplementation(
98 const imtsdl::CSdlType& sdlType,
99 MetdodType methodType,
100 ICxxModifier& modifier)
const;
101 void GenerateMethodCall(
103 const imtsdl::CSdlType& sdlType,
104 MetdodType methodType,
105 ICxxModifier& modifier)
const;
108 I_REF(imtsdl::ISdlTypeListProvider, m_sdlTypeListCompPtr);
109 I_REF(imtsdl::ISdlEnumListProvider, m_sdlEnumListCompPtr);
110 I_REF(imtsdl::ISdlUnionListProvider, m_sdlUnionListCompPtr);
111 I_MULTIREF(ICxxFileProcessor, m_codeGeneratorExtenderListCompPtr);
112 I_REF(iprm::IParamsSet, m_customSchemaParamsCompPtr);
113 I_REF(iprm::ITextParam, m_originalSchemaNamespaceCompPtr);
114 I_MULTIREF(IIncludeDirectivesProvider, m_includeDirectivesProviderListCompPtr);
115 I_MULTIREF(ICxxModifier, m_modifierListCompPtr);
116 I_REF(iprm::IOptionsManager, m_dependentSchemaListCompPtr);