ImagingTools Core SDK
CSdlQObjectGeneratorComp.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// ACF includes
6#include <istd/IPolymorphic.h>
7
8// ImtCore includes
9#include <imtsdl/CSdlTools.h>
10#include <imtsdl/ISdlEnumListProvider.h>
11#include <imtsdl/ISdlUnionListProvider.h>
12#include <imtsdl/ISdlTypeListProvider.h>
13#include <imtsdlgencpp/CSdlGenTools.h>
14#include <imtsdlgencpp/CCxxProcessorCompBase.h>
15
16
17namespace imtsdlgencpp
18{
19
25 private imtsdl::CSdlTools,
26 private CSdlGenTools
27{
28
29public:
32 typedef CSdlGenTools BaseClass3;
33
34 I_BEGIN_COMPONENT(CSdlQObjectGeneratorComp)
35 I_ASSIGN(m_sdlTypeListCompPtr, "SdlTypeListProvider", "SDL types used to create a code", true, "SdlTypeListProvider")
36 I_ASSIGN(m_sdlEnumListCompPtr, "SdlEnumListProvider", "SDL enums used to create a code", true, "SdlEnumListProvider")
37 I_ASSIGN(m_sdlUnionListCompPtr, "SdlUnionListProvider", "SDL unioins used to create a code", true, "SdlUnionListProvider")
38 I_END_COMPONENT
39
40
41
42 // reimplemented (ICxxFileProcessor)
43 virtual bool ProcessEntry(const imtsdl::CSdlEntryBase& sdlEntry, QIODevice* headerDevicePtr, QIODevice* sourceDevicePtr, const iprm::IParamsSet* paramsPtr) const override;
44
45 // reimplemented (IIncludeDirectivesProvider)
46 virtual QList<imtsdl::IncludeDirective> GetIncludeDirectives() const override;
47
48private:
49 bool ProcessHeaderClassFile(QTextStream& stream, const imtsdl::CSdlEntryBase& sdlEntry) const;
50 bool ProcessHeaderClassListFile(QTextStream& stream, const imtsdl::CSdlEntryBase& sdlEntry) const;
51 bool ProcessSourceClassFile(QTextStream& stream, const imtsdl::CSdlEntryBase& sdlEntry) const;
52 bool ProcessSourceClassListFile(QTextStream& stream, const imtsdl::CSdlEntryBase& sdlEntry) const;
53 void CreatePropertiesForType(QTextStream& stream, const imtsdl::SdlFieldList& fieldList) const;
54 void CreateAccessMethodsDefinition(QTextStream& stream, const imtsdl::SdlFieldList& fieldList) const;
55
56private:
57 I_REF(imtsdl::ISdlTypeListProvider, m_sdlTypeListCompPtr);
58 I_REF(imtsdl::ISdlEnumListProvider, m_sdlEnumListCompPtr);
59 I_REF(imtsdl::ISdlUnionListProvider, m_sdlUnionListCompPtr);
60
61};
62
63
64} // namespace imtsdlgencpp
65