From c09f2eedf2a3d5bd7808d9445606de617ae7c871 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 18 Sep 2011 19:49:36 +0000 Subject: [PATCH] Specialise ConfigVariable for string so that values with spaces in get handled properly (part of #4321). git-svn-id: svn://localhost/ardour2/branches/3.0@10092 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/configuration_variable.h | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/libs/ardour/ardour/configuration_variable.h b/libs/ardour/ardour/configuration_variable.h index e05952417d..da8fc1b9a1 100644 --- a/libs/ardour/ardour/configuration_variable.h +++ b/libs/ardour/ardour/configuration_variable.h @@ -88,6 +88,42 @@ class ConfigVariable : public ConfigVariableBase T value; }; +/** Specialisation of ConfigVariable for std::string to cope with whitespace properly */ +template<> +class ConfigVariable : public ConfigVariableBase +{ + public: + + ConfigVariable (std::string str) : ConfigVariableBase (str) {} + ConfigVariable (std::string str, std::string val) : ConfigVariableBase (str), value (val) {} + + std::string get() const { + return value; + } + + std::string get_as_string () const { + return value; + } + + virtual bool set (std::string val) { + if (val == value) { + miss (); + return false; + } + value = val; + notify (); + return true; + } + + virtual void set_from_string (std::string const & s) { + value = s; + } + + protected: + virtual std::string get_for_save() { return value; } + std::string value; +}; + template<> class ConfigVariable : public ConfigVariableBase {