From bcdad5b8762060c82a0b7840cb905e69ddb9a65e Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Thu, 3 Jul 2025 18:37:18 +0200 Subject: Add numbers parsing --- asl/strings/parse_number_float.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 asl/strings/parse_number_float.cpp (limited to 'asl/strings/parse_number_float.cpp') diff --git a/asl/strings/parse_number_float.cpp b/asl/strings/parse_number_float.cpp new file mode 100644 index 0000000..4568278 --- /dev/null +++ b/asl/strings/parse_number_float.cpp @@ -0,0 +1,30 @@ +// Copyright 2025 Steven Le Rouzic +// +// SPDX-License-Identifier: BSD-3-Clause + +#include + +// We need to isolate fast_float.h completely from asl +// because it conflicts with our redefinitions of things +// from the STL. In this case it's operator new, but there +// might be other conflicts. + +namespace asl +{ + +extern bool parse_float_impl(const char** begin, const char* end, float* value) +{ + auto res = fast_float::from_chars(*begin, end, *value); + *begin = res.ptr; + return res.ec == std::errc{}; +} + +extern bool parse_double_impl(const char** begin, const char* end, double* value) +{ + auto res = fast_float::from_chars(*begin, end, *value); + *begin = res.ptr; + return res.ec == std::errc{}; +} + +} // namespace asl + -- cgit