summaryrefslogtreecommitdiff
path: root/src/helpers/MiscFunctions.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-20 16:53:41 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-20 16:53:41 +0200
commit87b849129427ab664130aa1abc8ade0485328e33 (patch)
tree7275db50df7f47389d1f91948cede19ded8c26a5 /src/helpers/MiscFunctions.cpp
parent418e2d96aef0b52d1f93eb3dfe7d08906c7c719c (diff)
Added the splitratio dispatcher
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