diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2016-08-24 22:32:51 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2017-04-19 09:36:47 +1000 |
commit | 2b58bbd50aa6a4af4c8f3019820396e5081b041a (patch) | |
tree | 03019304c96dcda1fca6e00513f5224acb876987 | |
parent | cb3c564822e091325ff8799551640878faa3c597 (diff) |
Use PBD string conversion functions in PBD::ConfigurationVariable
No longer need a specialization for bool as PBD::to_string/string_to already
has specializations for bool
Remove template specialization for float as string_to/to_string handles string
representations of infinity
-rw-r--r-- | gtk2_ardour/ui_config.cc | 1 | ||||
-rw-r--r-- | libs/ardour/rc_configuration.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session_configuration.cc | 1 | ||||
-rw-r--r-- | libs/pbd/configuration_variable.cc | 8 | ||||
-rw-r--r-- | libs/pbd/pbd/configuration_variable.h | 59 |
6 files changed, 8 insertions, 63 deletions
diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc index 7758c6a052..2a555970c4 100644 --- a/gtk2_ardour/ui_config.cc +++ b/gtk2_ardour/ui_config.cc @@ -49,6 +49,7 @@ #include "ardour/search_paths.h" #include "ardour/revision.h" #include "ardour/utils.h" +#include "ardour/types_convert.h" #include "gtkmm2ext/rgb_macros.h" #include "gtkmm2ext/gtk_ui.h" diff --git a/libs/ardour/rc_configuration.cc b/libs/ardour/rc_configuration.cc index 7fc2f5105b..e16bf40fb7 100644 --- a/libs/ardour/rc_configuration.cc +++ b/libs/ardour/rc_configuration.cc @@ -35,6 +35,7 @@ #include "ardour/port.h" #include "ardour/rc_configuration.h" #include "ardour/session_metadata.h" +#include "ardour/types_convert.h" #include "pbd/i18n.h" diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 243a46b0ee..ded851faae 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -104,6 +104,7 @@ #include "ardour/tempo.h" #include "ardour/ticker.h" #include "ardour/track.h" +#include "ardour/types_convert.h" #include "ardour/user_bundle.h" #include "ardour/utils.h" #include "ardour/vca_manager.h" diff --git a/libs/ardour/session_configuration.cc b/libs/ardour/session_configuration.cc index b8814711f3..3b4f4c7f9a 100644 --- a/libs/ardour/session_configuration.cc +++ b/libs/ardour/session_configuration.cc @@ -27,6 +27,7 @@ #include "pbd/pathexpand.h" #include "ardour/types.h" +#include "ardour/types_convert.h" #include "ardour/filesystem_paths.h" #include "ardour/session_configuration.h" #include "ardour/utils.h" diff --git a/libs/pbd/configuration_variable.cc b/libs/pbd/configuration_variable.cc index 0e2d6c739a..61c024a58a 100644 --- a/libs/pbd/configuration_variable.cc +++ b/libs/pbd/configuration_variable.cc @@ -111,11 +111,3 @@ ConfigVariableBase::miss () // placeholder for any debugging desired when a config variable // is set but to the same value as it already has } - -/* Specialisation of ConfigVariable to deal with float (-inf etc) - * http://stackoverflow.com/questions/23374095/should-a-stringstream-parse-infinity-as-an-infinite-value - */ -template<> void -ConfigVariable<float>::set_from_string (std::string const & s) { - value = std::strtof (s.c_str(), NULL); -} diff --git a/libs/pbd/pbd/configuration_variable.h b/libs/pbd/pbd/configuration_variable.h index 143f53f218..33d5b95d39 100644 --- a/libs/pbd/pbd/configuration_variable.h +++ b/libs/pbd/pbd/configuration_variable.h @@ -20,12 +20,10 @@ #ifndef __libpbd_configuration_variable_h__ #define __libpbd_configuration_variable_h__ -#include <iostream> -#include <sstream> #include <string> #include "pbd/xml++.h" -#include "pbd/convert.h" +#include "pbd/string_convert.h" #include "pbd/libpbd_visibility.h" namespace PBD { @@ -63,9 +61,7 @@ class /*LIBPBD_API*/ ConfigVariable : public ConfigVariableBase } std::string get_as_string () const { - std::ostringstream ss; - ss << value; - return ss.str (); + return to_string<T>(value); } virtual bool set (T val) { @@ -79,9 +75,7 @@ class /*LIBPBD_API*/ ConfigVariable : public ConfigVariableBase } virtual void set_from_string (std::string const & s) { - std::stringstream ss; - ss << s; - ss >> value; + value = string_to<T>(s); } protected: @@ -89,10 +83,6 @@ class /*LIBPBD_API*/ ConfigVariable : public ConfigVariableBase T value; }; -/** Specialisation of ConfigVariable to deal with float (-inf etc) */ -template<> LIBPBD_API void -ConfigVariable<float>::set_from_string (std::string const & s); - /** Specialisation of ConfigVariable for std::string to cope with whitespace properly */ template<> class /*LIBPBD_API*/ ConfigVariable<std::string> : public ConfigVariableBase @@ -129,43 +119,6 @@ class /*LIBPBD_API*/ ConfigVariable<std::string> : public ConfigVariableBase std::string value; }; -template<> -class /*LIBPBD_API*/ ConfigVariable<bool> : public ConfigVariableBase -{ - public: - - ConfigVariable (std::string str) : ConfigVariableBase (str), value (false) {} - ConfigVariable (std::string str, bool val) : ConfigVariableBase (str), value (val) {} - - bool get() const { - return value; - } - - std::string get_as_string () const { - std::ostringstream ss; - ss << value; - return ss.str (); - } - - virtual bool set (bool val) { - if (val == value) { - miss (); - return false; - } - value = val; - notify (); - return true; - } - - void set_from_string (std::string const & s) { - value = PBD::string_is_affirmative (s); - } - - protected: - virtual bool get_for_save() { return value; } - bool value; -}; - template<class T> class /*LIBPBD_API*/ ConfigVariableWithMutation : public ConfigVariable<T> { @@ -182,11 +135,7 @@ class /*LIBPBD_API*/ ConfigVariableWithMutation : public ConfigVariable<T> } void set_from_string (std::string const & s) { - T v; - std::stringstream ss; - ss << s; - ss >> v; - set (v); + set (string_to<T>(s)); } protected: |