summaryrefslogtreecommitdiff
path: root/asl/strings/parse_number.hpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2025-07-03 18:37:18 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2025-07-04 20:44:04 +0200
commitbcdad5b8762060c82a0b7840cb905e69ddb9a65e (patch)
tree468694d1662c61c12f813689520f43c8e1767538 /asl/strings/parse_number.hpp
parentcca2e267241a90f238e424e47501b1e8613a5955 (diff)
Add numbers parsingHEADmain
Diffstat (limited to 'asl/strings/parse_number.hpp')
-rw-r--r--asl/strings/parse_number.hpp34
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
+