diff options
Diffstat (limited to 'src/kconfig_compiler')
-rw-r--r-- | src/kconfig_compiler/kconfig_compiler.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/kconfig_compiler/kconfig_compiler.cpp b/src/kconfig_compiler/kconfig_compiler.cpp index c7f2d9d9..c648d7d0 100644 --- a/src/kconfig_compiler/kconfig_compiler.cpp +++ b/src/kconfig_compiler/kconfig_compiler.cpp @@ -80,6 +80,7 @@ public: if (!visibility.isEmpty()) { visibility += ' '; } + parentInConstructor = codegenConfig.value(QStringLiteral("ParentInConstructor"), false).toBool(); forceStringFilename = codegenConfig.value(QStringLiteral("ForceStringFilename"), false).toBool(); singleton = codegenConfig.value(QStringLiteral("Singleton"), false).toBool(); staticAccessors = singleton; @@ -125,6 +126,7 @@ public: QString className; // The class name to be generated QString inherits; // The class the generated class inherits (if empty, from KConfigSkeleton) QString visibility; + bool parentInConstructor; // The class has the optional parent parameter in its constructor bool forceStringFilename; bool singleton; // The class will be a singleton bool staticAccessors; // provide or not static accessors @@ -1895,6 +1897,12 @@ int main(int argc, char **argv) } h << " " << param((*it).type) << " " << (*it).name; } + if (cfg.parentInConstructor) { + if (cfgFileNameArg || !parameters.isEmpty()) { + h << ","; + } + h << " QObject *parent = nullptr"; + } h << " );" << endl; } else { h << " static " << cfg.className << " *self();" << endl; @@ -2125,6 +2133,12 @@ int main(int argc, char **argv) if (cfgFileNameArg) { h << "KSharedConfig::Ptr config"; } + if (cfg.parentInConstructor) { + if (cfgFileNameArg) { + h << ", "; + } + h << "QObject *parent = nullptr"; + } h << ");" << endl; h << " friend class " << cfg.className << "Helper;" << endl << endl; } @@ -2357,14 +2371,14 @@ int main(int argc, char **argv) } // Constructor - cpp << cfg.className << "::" << cfg.className << "( "; + cpp << cfg.className << "::" << cfg.className << "("; if (cfgFileNameArg) { if (! cfg.forceStringFilename) { cpp << " KSharedConfig::Ptr config"; } else { cpp << " const QString& config"; } - cpp << (parameters.isEmpty() ? " " : ", "); + cpp << (parameters.isEmpty() ? "" : ","); } for (QList<Param>::ConstIterator it = parameters.constBegin(); @@ -2374,6 +2388,13 @@ int main(int argc, char **argv) } cpp << " " << param((*it).type) << " " << (*it).name; } + + if (cfg.parentInConstructor) { + if (cfgFileNameArg || !parameters.isEmpty()) { + cpp << ","; + } + cpp << " QObject *parent"; + } cpp << " )" << endl; cpp << " : " << cfg.inherits << "("; @@ -2400,6 +2421,10 @@ int main(int argc, char **argv) cpp << "{" << endl; + if (cfg.parentInConstructor) { + cpp << " setParent(parent);" << endl; + } + if (cfg.dpointer) { cpp << " d = new " + cfg.className + "Private;" << endl; if (hasNonModifySignals) { |