From e233dc28491c33e8a7dc0a11576d3b8ce91cce2c Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 25 Feb 2022 18:16:40 +0100 Subject: refactor: delete exception usages & game options --- src/conversion.hpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/conversion.hpp') diff --git a/src/conversion.hpp b/src/conversion.hpp index 4ae5b7c..0bdf82d 100644 --- a/src/conversion.hpp +++ b/src/conversion.hpp @@ -1,13 +1,32 @@ #pragma once +#include #include constexpr unsigned int NUMBER_BASE = 10U; +template +class ConversionResult +{ +public: + explicit ConversionResult(const bool &success_, const ResultType &result_, + const std::string_view &fail_reason_ = "") + : success(success_), result(result_), fail_reason(fail_reason_) + { + } + + const bool &success; + const ResultType &result; + const std::string_view &fail_reason; +}; + +static constexpr auto IS_VALID_UINT = ctll::fixed_string("^[0-9]+$"); +static constexpr auto IS_UINT_IN_RANGE = ctll::fixed_string("^[0-9]{1,19}$"); + /** * Converts a string to a unsigned integer. * * @param str A string that possibly is a unsigned integer - * @returns A unsigned integer + * @returns A conversion result */ -unsigned int str_to_uint(const std::string_view &str); +ConversionResult str_to_uint(const std::string_view &str); -- cgit v1.2.3-18-g5258