From 81b8306c5f42de6b2b33fc45db5a0244296d8354 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Mon, 19 May 2025 18:08:36 -0400 Subject: [PATCH] implementation of https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2497r0.html --- CMakeLists.txt | 2 +- include/fast_float/float_common.h | 5 +++++ tests/CMakeLists.txt | 21 ++++++--------------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a1c9a3..fadc27b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.14) project(fast_float VERSION 8.0.2 LANGUAGES CXX) set(FASTFLOAT_CXX_STANDARD 11 CACHE STRING "the C++ standard to use for fastfloat") diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index 8fd0560..1d249c5 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -58,6 +58,11 @@ enum class chars_format : uint64_t { template struct from_chars_result_t { UC const *ptr; std::errc ec; + + // https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2497r0.html + constexpr explicit operator bool() const noexcept { + return ec == std::errc(); + } }; using from_chars_result = from_chars_result_t; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c4e43b2..3ffa8ff 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,7 +10,7 @@ option(FASTFLOAT_SUPPLEMENTAL_TESTS "Run supplemental tests" ON) if (NOT SYSTEM_DOCTEST) FetchContent_Declare(doctest GIT_REPOSITORY https://github.com/onqtam/doctest.git - GIT_TAG v2.4.11) + GIT_TAG v2.4.12) else () find_package(doctest REQUIRED) endif() @@ -23,24 +23,15 @@ endif() # FetchContent_MakeAvailable() was only introduced in 3.14 # https://cmake.org/cmake/help/v3.14/release/3.14.html#modules -# FetchContent_MakeAvailable(doctest) if (NOT SYSTEM_DOCTEST) - FetchContent_GetProperties(doctest) - if(NOT doctest_POPULATED) - FetchContent_Populate(doctest) - add_subdirectory(${doctest_SOURCE_DIR} ${doctest_BINARY_DIR}) - endif() + FetchContent_MakeAvailable(doctest) endif() add_library(supplemental-data INTERFACE) if (FASTFLOAT_SUPPLEMENTAL_TESTS) - FetchContent_GetProperties(supplemental_test_files) - if(NOT supplemental_test_files_POPULATED) - message(STATUS "Supplemental tests enabled. Retrieving test files.") - FetchContent_Populate(supplemental_test_files) - message(STATUS "Supplemental test files retrieved.") - add_subdirectory(${supplemental_test_files_SOURCE_DIR} ${supplemental_test_files_BINARY_DIR}) - endif() + message(STATUS "Supplemental tests enabled. Retrieving test files.") + FetchContent_MakeAvailable(supplemental_test_files) + message(STATUS "Supplemental test files retrieved.") target_compile_definitions(supplemental-data INTERFACE SUPPLEMENTAL_TEST_DATA_DIR="${supplemental_test_files_BINARY_DIR}/data") endif() @@ -82,7 +73,7 @@ endif() if (FASTFLOAT_SUPPLEMENTAL_TESTS) target_compile_definitions(basictest PRIVATE FASTFLOAT_SUPPLEMENTAL_TESTS) endif() - +fast_float_add_cpp_test(p2497) fast_float_add_cpp_test(long_test) fast_float_add_cpp_test(powersoffive_hardround) fast_float_add_cpp_test(string_test)