From 5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 21 Jan 2026 22:40:55 +0100 Subject: Add Redis source code for testing --- .../deps/fast_float/fast_float_strtod.cpp | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/redis-unstable/deps/fast_float/fast_float_strtod.cpp (limited to 'examples/redis-unstable/deps/fast_float/fast_float_strtod.cpp') diff --git a/examples/redis-unstable/deps/fast_float/fast_float_strtod.cpp b/examples/redis-unstable/deps/fast_float/fast_float_strtod.cpp new file mode 100644 index 0000000..7f4235c --- /dev/null +++ b/examples/redis-unstable/deps/fast_float/fast_float_strtod.cpp @@ -0,0 +1,32 @@ +#include "fast_float.h" +#include +#include +#include +#include + +/* Convert NPTR to a double using the fast_float library. + * + * This function behaves similarly to the standard strtod function, converting + * the initial portion of the string pointed to by `nptr` to a `double` value, + * using the fast_float library for high performance. If the conversion fails, + * errno is set to EINVAL error code. + * + * @param nptr A pointer to the null-terminated byte string to be interpreted. + * @param endptr A pointer to a pointer to character. If `endptr` is not NULL, + * it will point to the character after the last character used + * in the conversion. + * @return The converted value as a double. If no valid conversion could + * be performed, returns 0.0. + * If ENDPTR is not NULL, a pointer to the character after the last one used + * in the number is put in *ENDPTR. */ +extern "C" double fast_float_strtod(const char *nptr, char **endptr) { + double result = 0.0; + auto answer = fast_float::from_chars(nptr, nptr + strlen(nptr), result); + if (answer.ec != std::errc()) { + errno = EINVAL; // Fallback to for other errors + } + if (endptr != NULL) { + *endptr = (char *)answer.ptr; + } + return result; +} -- cgit v1.2.3