summaryrefslogtreecommitdiff
path: root/src/helpers/MiscFunctions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
-rw-r--r--src/helpers/MiscFunctions.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index 63751781..489fa02a 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -73,4 +73,42 @@ std::string removeBeginEndSpacesTabs(std::string str) {
}
return str;
+}
+
+float getPlusMinusKeywordResult(std::string source, float relative) {
+ float result = INT_MAX;
+
+ if (source.find_first_of("+") == 0) {
+ try {
+ if (source.find('.') != std::string::npos)
+ result = relative + std::stof(source.substr(1));
+ else
+ result = relative + std::stoi(source.substr(1));
+ } catch (...) {
+ Debug::log(ERR, "Invalid arg \"%s\" in getPlusMinusKeywordResult!", source.c_str());
+ return INT_MAX;
+ }
+ } else if (source.find_first_of("-") == 0) {
+ try {
+ if (source.find('.') != std::string::npos)
+ result = relative - std::stof(source.substr(1));
+ else
+ result = relative - std::stoi(source.substr(1));
+ } catch (...) {
+ Debug::log(ERR, "Invalid arg \"%s\" in getPlusMinusKeywordResult!", source.c_str());
+ return INT_MAX;
+ }
+ } else {
+ try {
+ if (source.find('.') != std::string::npos)
+ result = stof(source);
+ else
+ result = stoi(source);
+ } catch (...) {
+ Debug::log(ERR, "Invalid arg \"%s\" in getPlusMinusKeywordResult!", source.c_str());
+ return INT_MAX;
+ }
+ }
+
+ return result;
} \ No newline at end of file