From c379d65481b7bf20f330d9ff16e7f7bf47dd77f9 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Thu, 8 Oct 2015 20:46:51 +0200 Subject: Add an optional bool parameter to CRSMConfigValue-list-specialization- constructor to allow duplicate entries --- src/CRSMConfig.hpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/CRSMConfig.hpp') diff --git a/src/CRSMConfig.hpp b/src/CRSMConfig.hpp index 5c9adb9..7cdd501 100644 --- a/src/CRSMConfig.hpp +++ b/src/CRSMConfig.hpp @@ -56,6 +56,7 @@ using Boolean = bool; #define ConfigValue(Value) {#Value, mkConfigValue(Value)} +#define ConfigValueEx(Value, ...) {#Value, mkConfigValue(Value, __VA_ARGS__)} template<> class CRSMConfigValue : public CRSMConfigValueBase { @@ -158,9 +159,10 @@ class CRSMConfigValue> : public CRSMConfigValueList { using ListType = QList; ListType& config; + const bool deduplicate; public: - CRSMConfigValue(ListType& config) : config(config) {} + CRSMConfigValue(ListType& config, bool deduplicate = true) : config(config), deduplicate(deduplicate) {} virtual ListType& list() { return config; } virtual CRSMConfigValueType::Type type() { return CRSMConfigValueType::Type::List; } @@ -168,7 +170,7 @@ public: virtual void append(const QString &entry) { Type val = CRSMConfigValueBase::getValue(entry); - if(!config.contains(val)) + if(!deduplicate || !config.contains(val)) { config.append(val); } @@ -231,10 +233,10 @@ public: CRSMConfigValue(Type& config) : CRSMConfigValue::CRSMConfigValue((UndType&)config) {} }; -template -CRSMConfigValue* mkConfigValue(Type& Value) +template +CRSMConfigValue* mkConfigValue(Type& Value, Types... values) { - return new CRSMConfigValue(Value); + return new CRSMConfigValue(Value, values...); } template -- cgit v1.2.3-54-g00ecf