diff options
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
| -rw-r--r-- | src/helpers/MiscFunctions.cpp | 38 |
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 |
