summaryrefslogtreecommitdiff
path: root/src/utils/stringutils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/stringutils.h')
-rw-r--r--src/utils/stringutils.h52
1 files changed, 51 insertions, 1 deletions
diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h
index d6c45474..e7ff1332 100644
--- a/src/utils/stringutils.h
+++ b/src/utils/stringutils.h
@@ -22,8 +22,9 @@
#ifndef UTILS_STRINGUTILS_H
#define UTILS_STRINGUTILS_H
-#include <string>
+#include <optional>
#include <sstream>
+#include <string>
#include <vector>
/**
@@ -144,6 +145,55 @@ std::string findSameSubstring(const std::string &str1,
*/
bool getBoolFromString(std::string text, bool def = false);
+inline void fromString(const char *str, std::string &value)
+{
+ value = str;
+}
+
+inline void fromString(const char *str, int &value)
+{
+ value = atoi(str);
+}
+
+inline void fromString(const char *str, unsigned &value)
+{
+ value = strtoul(str, nullptr, 10);
+}
+
+inline void fromString(const char *str, unsigned short &value)
+{
+ value = static_cast<unsigned short>(strtoul(str, nullptr, 10));
+}
+
+inline void fromString(const char *str, float &value)
+{
+ value = strtof(str, nullptr);
+}
+
+inline void fromString(const char *str, double &value)
+{
+ value = atof(str);
+}
+
+inline void fromString(const char *str, bool &value)
+{
+ value = getBoolFromString(str);
+}
+
+template<typename Enum, std::enable_if_t<std::is_enum_v<Enum>, bool> = true>
+inline void fromString(const char *str, Enum &value)
+{
+ value = static_cast<Enum>(atoi(str));
+}
+
+template<typename T>
+inline void fromString(const char *str, std::optional<T> &value)
+{
+ T v;
+ fromString(str, v);
+ value = v;
+}
+
/**
* Returns the most approaching string of base from candidates.
*/