ImagingTools Core SDK
CSdlClassModificatorBaseComp.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/QFile>
7
8// ACF includes
9#include <istd/TDelPtr.h>
10#include <iprm/ITextParam.h>
11#include <ilog/TLoggerCompWrap.h>
12
13// ImtCore includes
14#include <imtsdl/ISdlProcessArgumentsParser.h>
15#include <imtsdl/ISdlTypeListProvider.h>
16#include <imtsdl/ISdlEnumListProvider.h>
17#include <imtsdl/ISdlUnionListProvider.h>
18#include <imtsdl/CSdlTools.h>
19#include <imtsdlgencpp/IIncludeDirectivesProvider.h>
20#include <imtsdlgencpp/ICxxModifier.h>
21#include <imtsdlgencpp/CCxxProcessorCompBase.h>
22
23
24namespace imtsdlgencpp
25{
26
27
33 public virtual ICxxModifier
34{
35public:
37
38 I_BEGIN_BASE_COMPONENT(CSdlClassModificatorBaseComp)
39 I_REGISTER_INTERFACE(ICxxModifier)
40 I_ASSIGN(m_processorModificatorNameAttrPtr, "ProcessModificatorName", "The name, allows to do processing, received from arguments in 'modificators' section", false, "<NEED_TO_SET!>")
41 I_ASSIGN(m_argumentParserCompPtr, "ArgumentParser", "Command line process argument parser", true, "ArgumentParser")
42 I_ASSIGN(m_sdlTypeListCompPtr, "SdlTypeListProvider", "SDL types used to create a code", true, "SdlTypeListProvider")
43 I_ASSIGN(m_sdlEnumListCompPtr, "SdlEnumListProvider", "SDL enums used to create a code", true, "SdlEnumListProvider")
44 I_ASSIGN(m_sdlUnionListCompPtr, "SdlUnionListProvider", "SDL unioins used to create a code", true, "SdlUnionListProvider")
45 I_ASSIGN(m_originalSchemaNamespaceCompPtr, "OriginalSchemaNamespace", "The namespace of the original(root) schema", true, "OriginalSchemaNamespace")
46 I_END_COMPONENT
47
48
49 // reimplemented (ICxxFileProcessor)
50 virtual bool ProcessEntry(
51 const imtsdl::CSdlEntryBase& sdlEntry,
52 QIODevice* headerDevicePtr,
53 QIODevice* sourceDevicePtr = nullptr,
54 const iprm::IParamsSet* paramsPtr = nullptr) const override;
55
56
57protected: // pure virtual methods
58 virtual bool ProcessSourceClassFile(const imtsdl::CSdlType& sdlType, QIODevice* sourceDevicePtr, const iprm::IParamsSet* paramsPtr) const = 0;
59 virtual bool ProcessHeaderClassFile(const imtsdl::CSdlType& sdlType, QIODevice* headerDevicePtr, const iprm::IParamsSet* paramsPtr) const = 0;
60
61protected:
62 I_ATTR(QString, m_processorModificatorNameAttrPtr);
63 I_REF(imtsdl::ISdlProcessArgumentsParser, m_argumentParserCompPtr);
64 I_REF(imtsdl::ISdlTypeListProvider, m_sdlTypeListCompPtr);
65 I_REF(imtsdl::ISdlEnumListProvider, m_sdlEnumListCompPtr);
66 I_REF(imtsdl::ISdlUnionListProvider, m_sdlUnionListCompPtr);
67 I_REF(iprm::ITextParam, m_originalSchemaNamespaceCompPtr);
68 QString m_logTag;
69};
70
71
72} // namespace imtsdlgencpp
73