summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-11-17 12:25:44 +0000
committerCarl Hetherington <carl@carlh.net>2010-11-17 12:25:44 +0000
commit7f9cab8c2883611979e52f2e7b5a4fca09f6b93b (patch)
tree9d0c14ed97565b9b0a670ef01aa93304b1841f87 /libs
parentc0539c0673a1ed2081862842e2de8e93b39aa5cc (diff)
Add std::string specialization for ConfigVariableWithMutation which handles spaces correctly. Fixes #3541.
git-svn-id: svn://localhost/ardour2/branches/3.0@8052 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/configuration_variable.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/libs/ardour/ardour/configuration_variable.h b/libs/ardour/ardour/configuration_variable.h
index ec954e8d9c..fa53b6a1c4 100644
--- a/libs/ardour/ardour/configuration_variable.h
+++ b/libs/ardour/ardour/configuration_variable.h
@@ -154,6 +154,31 @@ class ConfigVariableWithMutation : public ConfigVariable<T>
T (*mutator)(T);
};
+template<>
+class ConfigVariableWithMutation<std::string> : public ConfigVariable<std::string>
+{
+ public:
+ ConfigVariableWithMutation (std::string name, std::string val, std::string (*m)(std::string))
+ : ConfigVariable<std::string> (name, val), mutator (m) {}
+
+ bool set (std::string val) {
+ if (unmutated_value != val) {
+ unmutated_value = val;
+ return ConfigVariable<std::string>::set (mutator (val));
+ }
+ return false;
+ }
+
+ void set_from_string (std::string const & s) {
+ set (s);
+ }
+
+ protected:
+ virtual std::string get_for_save() { return unmutated_value; }
+ std::string unmutated_value;
+ std::string (*mutator)(std::string);
+};
+
}
#endif /* __ardour_configuration_variable_h__ */