summaryrefslogtreecommitdiff
path: root/asl/strings/parse_number.hpp
diff options
context:
space:
mode:
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
+