diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-08-28 23:35:12 +0200 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2020-08-28 23:35:12 +0200 |
| commit | f54cec4db7c67b623383c140159e1171876ace89 (patch) | |
| tree | 0d0bc897325e4037a95bfe1a0253346039000212 /src/common/Utilities/StringConvert.h | |
| parent | dc9e0c1e86efbabb52085b3977ec1258f4fbb986 (diff) | |
Common/Utilities: Make StringTo<bool>'s signature match that of the other integral types, making for easier templating. Default behavior unchanged.
Diffstat (limited to 'src/common/Utilities/StringConvert.h')
| -rw-r--r-- | src/common/Utilities/StringConvert.h | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/common/Utilities/StringConvert.h b/src/common/Utilities/StringConvert.h index fbdc41f6aef..f264c0222fa 100644 --- a/src/common/Utilities/StringConvert.h +++ b/src/common/Utilities/StringConvert.h @@ -146,13 +146,24 @@ namespace Trinity::Impl::StringConvertImpl template <> struct For<bool, void> { - static Optional<bool> FromString(std::string_view str) + static Optional<bool> FromString(std::string_view str, int strict = 0) /* this is int to match the signature for "proper" integral types */ { - if ((str == "1") || StringEqualI(str, "y") || StringEqualI(str, "on") || StringEqualI(str, "yes") || StringEqualI(str, "true")) - return true; - if ((str == "0") || StringEqualI(str, "n") || StringEqualI(str, "off") || StringEqualI(str, "no") || StringEqualI(str, "false")) - return false; - return std::nullopt; + if (strict) + { + if (str == "1") + return true; + if (str == "0") + return false; + return std::nullopt; + } + else + { + if ((str == "1") || StringEqualI(str, "y") || StringEqualI(str, "on") || StringEqualI(str, "yes") || StringEqualI(str, "true")) + return true; + if ((str == "0") || StringEqualI(str, "n") || StringEqualI(str, "off") || StringEqualI(str, "no") || StringEqualI(str, "false")) + return false; + return std::nullopt; + } } static std::string ToString(bool val) |
