From 87b849129427ab664130aa1abc8ade0485328e33 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 20 Apr 2022 16:53:41 +0200 Subject: Added the splitratio dispatcher --- src/helpers/MiscFunctions.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/helpers/MiscFunctions.cpp') 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 -- cgit v1.2.3