/* This file is part of KDE. SPDX-FileCopyrightText: 2003 Cornelius Schumacher SPDX-FileCopyrightText: 2003 Waldo Bastian SPDX-FileCopyrightText: 2003 Zack Rusin SPDX-FileCopyrightText: 2006 MichaĆ«l Larouche SPDX-FileCopyrightText: 2008 Allen Winter SPDX-FileCopyrightText: 2020 Tomaz Cananbrava SPDX-License-Identifier: LGPL-2.0-or-later */ #ifndef KCONFIGSOURCEGENERATOR_H #define KCONFIGSOURCEGENERATOR_H #include "KConfigCodeGeneratorBase.h" #include "KConfigCommonStructs.h" #include #include class KConfigParameters; class CfgEntry; class QTextStream; struct ParseResult; class KConfigSourceGenerator : public KConfigCodeGeneratorBase { public: KConfigSourceGenerator(const QString &inputFile, const QString &baseDir, const KConfigParameters ¶meters, ParseResult &parseResult); void start() override; private: // Those are fairly self contained functions. void createHeaders(); void createPrivateDPointerImplementation(); void createSingletonImplementation(); void createPreamble(); void createDestructor(); void createConstructorParameterList(); void createParentConstructorCall(); void createInitializerList(); void createDefaultValueGetterSetter(); void createNonModifyingSignalsHelper(); void createSignalFlagsHandler(); // Constructor related methods // the `do` methods have related helper functions that are only related // to it. So we can break the function into many smaller ones and create // logic inside of the `do` function. void doConstructor(); void createEnums(const CfgEntry *entry); void createNormalEntry(const CfgEntry *entry, const QString &key); void createIndexedEntry(const CfgEntry *entry, const QString &key); void handleCurrentGroupChange(const CfgEntry *entry); void doGetterSetterDPointerMode(); void createGetterDPointerMode(const CfgEntry *entry); void createImmutableGetterDPointerMode(const CfgEntry *entry); void createSetterDPointerMode(const CfgEntry *entry); void createItemGetterDPointerMode(const CfgEntry *entry); private: QString mCurrentGroup; QStringList mConfigGroupList; // keeps track of generated KConfigGroup; }; #endif