diff options
author | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2015-12-17 14:37:41 +0100 |
---|---|---|
committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2016-01-05 11:15:17 +0100 |
commit | fc86917da1a175c04e9bd2e5f0bedb0a48a81c26 (patch) | |
tree | 6996a3e2e2cfd110a566d4093e22ca746a52038d /include | |
parent | 73fa0a8df8203288aca032c71caa5ff47d35a3e2 (diff) | |
download | astra-fc86917da1a175c04e9bd2e5f0bedb0a48a81c26.tar.gz astra-fc86917da1a175c04e9bd2e5f0bedb0a48a81c26.tar.bz2 astra-fc86917da1a175c04e9bd2e5f0bedb0a48a81c26.tar.xz astra-fc86917da1a175c04e9bd2e5f0bedb0a48a81c26.zip |
Replace boost::lexical_cast by stringstreams
This is to avoid the dependence of lexical_cast on the current locale.
The stringstreams used for the new string parsing/output functions
are explicitly imbued with the C/classic locale.
Diffstat (limited to 'include')
-rw-r--r-- | include/astra/Utilities.h | 51 | ||||
-rw-r--r-- | include/astra/XMLNode.h | 8 |
2 files changed, 59 insertions, 0 deletions
diff --git a/include/astra/Utilities.h b/include/astra/Utilities.h index a3655a8..3ae0e6c 100644 --- a/include/astra/Utilities.h +++ b/include/astra/Utilities.h @@ -39,6 +39,57 @@ namespace astra { +namespace StringUtil { + +// Exception thrown by functions below +class bad_cast : public std::exception { +public: + bad_cast() { } +}; + + +//< Parse string as int. +//< Throw exception on failure. +int stringToInt(const std::string& s); + +//< Parse string as float. +//< Throw exception on failure. +float stringToFloat(const std::string& s); + +//< Parse string as double. +//< Throw exception on failure. +double stringToDouble(const std::string& s); + +template<typename T> +T stringTo(const std::string& s); + +//< Parse comma/semicolon-separated string as float vector. +//< Throw exception on failure. +std::vector<float> stringToFloatVector(const std::string& s); + +//< Parse comma/semicolon-separated string as double vector. +//< Throw exception on failure. +std::vector<double> stringToDoubleVector(const std::string& s); + +template<typename T> +std::vector<T> stringToVector(const std::string& s); + + + +//< Generate string from float. +std::string floatToString(float f); + +//< Generate string from double. +std::string doubleToString(double f); + +template<typename T> +std::string toString(T f); + +} + + + + template<typename T, typename S> std::map<T,S> mergeMap(std::map<T,S> _mMap1, std::map<T,S> _mMap2) { diff --git a/include/astra/XMLNode.h b/include/astra/XMLNode.h index 4d29d5c..7d1edf5 100644 --- a/include/astra/XMLNode.h +++ b/include/astra/XMLNode.h @@ -101,6 +101,12 @@ public: */ string getContent() const; + /** Get the content of the XML node as an integer + * + * @return node content + */ + int getContentInt() const; + /** Get the content of the XML node as a numerical. * * @return node content @@ -152,6 +158,7 @@ public: */ float32 getAttributeNumerical(string _sName, float32 _fDefaultValue = 0) const; double getAttributeNumericalDouble(string _sName, double _fDefaultValue = 0) const; + int getAttributeInt(string _sName, int _fDefaultValue = 0) const; /** Get the value of a boolean attribute. * @@ -186,6 +193,7 @@ public: * @return option value, _fDefaultValue if the option doesn't exist */ float32 getOptionNumerical(string _sKey, float32 _fDefaultValue = 0) const; + int getOptionInt(string _sKey, int _fDefaultValue = 0) const; /** Get the value of an option within this XML Node * |