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
wilder
Albert Astals Cid 6 years ago
parent 80bf4c029e
commit ee72e7e791
  1. 2
      autotests/kconfig_compiler/test8a.cpp.ref
  2. 4
      autotests/kconfig_compiler/test8c.cpp.ref
  3. 12
      src/kconfig_compiler/kconfig_compiler.cpp

@ -4,7 +4,7 @@
#include "test8a.h"
Test8a::Test8a( KSharedConfig::Ptr config, QObject *parent )
: KConfigSkeleton( config )
: KConfigSkeleton( std::move( config ) )
{
setParent(parent);
setCurrentGroup( QStringLiteral( "Group" ) );

@ -41,12 +41,12 @@ void Test8c::instance(KSharedConfig::Ptr config)
qDebug() << "Test8c::instance called after the first use - ignoring";
return;
}
new Test8c(config);
new Test8c(std::move(config));
s_globalTest8c()->q->read();
}
Test8c::Test8c( KSharedConfig::Ptr config, QObject *parent )
: KConfigSkeleton( config )
: KConfigSkeleton( std::move( config ) )
{
setParent(parent);
Q_ASSERT(!s_globalTest8c()->q);

@ -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 << ") ";

Loading…
Cancel
Save