summaryrefslogtreecommitdiffstats
path: root/include/astra
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <wjp@usecode.org>2016-01-18 17:47:53 +0100
committerWillem Jan Palenstijn <wjp@usecode.org>2016-01-18 17:47:53 +0100
commit530aa4f96e9d0fe40ccd0bb9ae1363792a49467c (patch)
tree41ea934e76ad38f221a38469c6add9152f3a0884 /include/astra
parent34bab2b0caa6ee955d5d2f7882a6cd36cf142536 (diff)
parentfc86917da1a175c04e9bd2e5f0bedb0a48a81c26 (diff)
downloadastra-530aa4f96e9d0fe40ccd0bb9ae1363792a49467c.tar.gz
astra-530aa4f96e9d0fe40ccd0bb9ae1363792a49467c.tar.bz2
astra-530aa4f96e9d0fe40ccd0bb9ae1363792a49467c.tar.xz
astra-530aa4f96e9d0fe40ccd0bb9ae1363792a49467c.zip
Merge pull request #105 from wjp/strings
Replace boost::lexical_cast by stringstreams
Diffstat (limited to 'include/astra')
-rw-r--r--include/astra/Utilities.h114
-rw-r--r--include/astra/XMLNode.h8
2 files changed, 52 insertions, 70 deletions
diff --git a/include/astra/Utilities.h b/include/astra/Utilities.h
index 68471d0..3ae0e6c 100644
--- a/include/astra/Utilities.h
+++ b/include/astra/Utilities.h
@@ -31,89 +31,63 @@ $Id$
#include <string>
#include <vector>
-#include <algorithm>
-#include <sstream>
#include <map>
#include "Globals.h"
namespace astra {
-/**
- * This class contains some usefull static utility functions for std strings.
- */
-class StringUtil {
+
+namespace StringUtil {
+
+// Exception thrown by functions below
+class bad_cast : public std::exception {
public:
- /**
- * Removes whitespace characters such as spaces and tabs at the extremas.
- * Optionally you can specify which extrema to trim (default=both)
- *
- * @param _sString The string to trim.
- * @param _bLeft Trim the left extrema? Default = true.
- * @param _bRight Trim the right extrema? Default = true.
- */
- static void trim(std::string& _sString, bool _bLeft = true, bool _bRight = true);
-
- /**
- * Returns a vector of strings that contains all the substrings delimited by
- * the characters in _sDelims.
- *
- * @param _sString The string to split.
- * @param _sDelims The delimiter string.
- * @return Vector of strings.
- */
- static std::vector<std::string> split(const std::string& _sString, const std::string& _sDelims);
-
- /**
- * Cast a string to an integer.
- *
- * @param _sString The string to cast.
- * @param _iValue Output integer parameter.
- * @return success?
- */
- static bool toInt(const std::string& _sString, int& _iValue);
-
- /**
- * Cast a string to a float32.
- *
- * @param _sString The string to cast.
- * @param _fValue Output float32 parameter.
- * @return success?
- */
- static bool toFloat32(const std::string& _sString, float32& _fValue);
-
- /**
- * Convert a string to lower case.
- *
- * @param _sString The string to convert.
- */
- static void toLowerCase(std::string& _sString);
-
- /**
- * Convert a string to upper case.
- *
- * @param _sString The string to convert.
- */
- static void toUpperCase(std::string& _sString);
+ bad_cast() { }
};
-/**
- * This class contains some usefull static utility functions for std strings.
- */
-class FileSystemUtil {
-public:
- /**
- * Get the extensions of a filename. Always in lower case.
- *
- * @param _sFilename file to get extensions from.
- * @return Extension (lower case). Empty string if filename is a directory or not a valid file format.
- */
- static std::string getExtension(std::string& _sFilename);
+//< 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>
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
*