From 742c1a714de68e53f27a34bb18bc744176ccbb6b Mon Sep 17 00:00:00 2001 From: hjk <hjk121@nokiamail.com> Date: Mon, 12 Aug 2013 15:21:22 +0200 Subject: [PATCH] ISettingsAspect: consolidate data copying in base implementation Change-Id: I1eec0f54d05b3f7d8679060faccc14ec8a3777f6 Reviewed-by: Daniel Teske <daniel.teske@digia.com> --- src/plugins/analyzerbase/analyzersettings.cpp | 9 +++++++++ src/plugins/analyzerbase/analyzersettings.h | 6 ++++-- src/plugins/valgrind/valgrindsettings.cpp | 18 ------------------ src/plugins/valgrind/valgrindsettings.h | 5 +++-- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/plugins/analyzerbase/analyzersettings.cpp b/src/plugins/analyzerbase/analyzersettings.cpp index 6244eda84ff..41cb7752c3a 100644 --- a/src/plugins/analyzerbase/analyzersettings.cpp +++ b/src/plugins/analyzerbase/analyzersettings.cpp @@ -46,6 +46,15 @@ static const char useGlobalC[] = "Analyzer.Project.UseGlobal"; namespace Analyzer { +ISettingsAspect *ISettingsAspect::clone() const +{ + ISettingsAspect *other = create(); + QVariantMap data; + toMap(data); + other->fromMap(data); + return other; +} + AnalyzerRunConfigurationAspect::AnalyzerRunConfigurationAspect(ISettingsAspect *projectSettings, ISettingsAspect *globalSettings) { diff --git a/src/plugins/analyzerbase/analyzersettings.h b/src/plugins/analyzerbase/analyzersettings.h index 7b05bab8bd7..948701b186f 100644 --- a/src/plugins/analyzerbase/analyzersettings.h +++ b/src/plugins/analyzerbase/analyzersettings.h @@ -59,8 +59,10 @@ public: /// Create a configuration widget for this settings aspect. virtual QWidget *createConfigWidget(QWidget *parent) = 0; - /// Clones the object. - virtual ISettingsAspect *clone() = 0; + /// "Virtual default constructor" + virtual ISettingsAspect *create() const = 0; + /// "Virtual copy constructor" + ISettingsAspect *clone() const; }; diff --git a/src/plugins/valgrind/valgrindsettings.cpp b/src/plugins/valgrind/valgrindsettings.cpp index 058a975d3ab..0756c561e64 100644 --- a/src/plugins/valgrind/valgrindsettings.cpp +++ b/src/plugins/valgrind/valgrindsettings.cpp @@ -282,15 +282,6 @@ void ValgrindGlobalSettings::fromMap(const QVariantMap &map) setIfPresent(map, QLatin1String(callgrindShortenTemplates), &m_shortenTemplates); } -ISettingsAspect *ValgrindGlobalSettings::clone() -{ - ValgrindGlobalSettings *other = new ValgrindGlobalSettings; - QVariantMap data; - toMap(data); - other->fromMap(data); - return other; -} - void ValgrindGlobalSettings::toMap(QVariantMap &map) const { ValgrindBaseSettings::toMap(map); @@ -461,15 +452,6 @@ void ValgrindProjectSettings::fromMap(const QVariantMap &map) setIfPresent(map, QLatin1String(removedSuppressionFilesC), &m_disabledGlobalSuppressionFiles); } -ISettingsAspect *ValgrindProjectSettings::clone() -{ - ValgrindProjectSettings *other = new ValgrindProjectSettings; - QVariantMap data; - toMap(data); - other->fromMap(data); - return other; -} - void ValgrindProjectSettings::toMap(QVariantMap &map) const { ValgrindBaseSettings::toMap(map); diff --git a/src/plugins/valgrind/valgrindsettings.h b/src/plugins/valgrind/valgrindsettings.h index 22ff1f6248c..cd2494cced2 100644 --- a/src/plugins/valgrind/valgrindsettings.h +++ b/src/plugins/valgrind/valgrindsettings.h @@ -170,7 +170,8 @@ public: QWidget *createConfigWidget(QWidget *parent); void toMap(QVariantMap &map) const; void fromMap(const QVariantMap &map); - virtual ISettingsAspect *clone(); + ISettingsAspect *create() const { return new ValgrindGlobalSettings; } + /* * Global memcheck settings @@ -230,7 +231,7 @@ public: QWidget *createConfigWidget(QWidget *parent); void toMap(QVariantMap &map) const; void fromMap(const QVariantMap &map); - virtual ISettingsAspect *clone(); + ISettingsAspect *create() const { return new ValgrindProjectSettings; } /** * Per-project memcheck settings, saves a diff to the global suppression files list -- GitLab