From ee72e7e7916d9b166403c74fd3eb8e874176106e Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 30 Oct 2019 19:23:26 +0100 Subject: kconfig_compiler: Move the KSharedConfig::Ptr when using them Summary: The generated classes of kconfig_compiler take a KSharedConfig::Ptr by value, one possibility would be to make them const & but that is BIC so instead what we do is just move them to the only place the config is used so the cheaper move constructor can be used instead of the copy constructor Reviewers: ervin, apol Reviewed By: ervin, apol Subscribers: kde-frameworks-devel, ervin, apol Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25061 --- src/kconfig_compiler/kconfig_compiler.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/kconfig_compiler/kconfig_compiler.cpp') diff --git a/src/kconfig_compiler/kconfig_compiler.cpp b/src/kconfig_compiler/kconfig_compiler.cpp index c648d7d0..054dbd4d 100644 --- a/src/kconfig_compiler/kconfig_compiler.cpp +++ b/src/kconfig_compiler/kconfig_compiler.cpp @@ -2344,7 +2344,7 @@ int main(int argc, char **argv) cpp << "}" << endl << endl; if (cfgFileNameArg) { - auto instance = [&cfg, &cpp] (const QString &type, const QString &arg, bool wrap) { + auto instance = [&cfg, &cpp] (const QString &type, const QString &arg, bool isString) { cpp << "void " << cfg.className << "::instance(" << type << " " << arg << ")" << endl; cpp << "{" << endl; cpp << " if (s_global" << cfg.className << "()->q) {" << endl; @@ -2352,10 +2352,10 @@ int main(int argc, char **argv) cpp << " return;" << endl; cpp << " }" << endl; cpp << " new " << cfg.className << "("; - if (wrap) { + if (isString) { cpp << "KSharedConfig::openConfig(" << arg << ")"; } else { - cpp << arg; + cpp << "std::move(" << arg << ")"; } cpp << ");" << endl; cpp << " s_global" << cfg.className << "()->q->read();" << endl; @@ -2402,7 +2402,11 @@ int main(int argc, char **argv) cpp << " QStringLiteral( \"" << cfgFileName << "\" "; } if (cfgFileNameArg) { - cpp << " config "; + if (! cfg.forceStringFilename) { + cpp << " std::move( config ) "; + } else { + cpp << " config "; + } } if (!cfgFileName.isEmpty()) { cpp << ") "; -- cgit v1.2.1