diff options
Diffstat (limited to 'asl/strings/parse_number.hpp')
-rw-r--r-- | asl/strings/parse_number.hpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/asl/strings/parse_number.hpp b/asl/strings/parse_number.hpp new file mode 100644 index 0000000..fae0841 --- /dev/null +++ b/asl/strings/parse_number.hpp @@ -0,0 +1,34 @@ +// Copyright 2025 Steven Le Rouzic +// +// SPDX-License-Identifier: BSD-3-Clause + +#pragma once + +#include "asl/types/status_or.hpp" +#include "asl/strings/string_view.hpp" + +namespace asl +{ + +template<typename T> +struct parse_number_result +{ + T value; + string_view remaining; +}; + +status_or<parse_number_result<float>> parse_float(string_view); +status_or<parse_number_result<double>> parse_double(string_view); + +status_or<parse_number_result<uint8_t>> parse_uint8(string_view, int base = 10); +status_or<parse_number_result<uint16_t>> parse_uint16(string_view, int base = 10); +status_or<parse_number_result<uint32_t>> parse_uint32(string_view, int base = 10); +status_or<parse_number_result<uint64_t>> parse_uint64(string_view, int base = 10); + +status_or<parse_number_result<int8_t>> parse_int8(string_view, int base = 10); +status_or<parse_number_result<int16_t>> parse_int16(string_view, int base = 10); +status_or<parse_number_result<int32_t>> parse_int32(string_view, int base = 10); +status_or<parse_number_result<int64_t>> parse_int64(string_view, int base = 10); + +} // namespace asl + |