GCC Code Coverage Report


Directory: libs/json/include/boost/json/
File: detail/charconv/impl/from_chars.ipp
Date: 2025-12-23 17:20:53
Exec Total Coverage
Lines: 3 12 25.0%
Functions: 1 2 50.0%
Branches: 1 5 20.0%

Line Branch Exec Source
1 // Copyright 2022 Peter Dimov
2 // Copyright 2023 Matt Borland
3 // Distributed under the Boost Software License, Version 1.0.
4 // https://www.boost.org/LICENSE_1_0.txt
5
6 // https://stackoverflow.com/questions/38060411/visual-studio-2015-wont-suppress-error-c4996
7 #ifndef _SCL_SECURE_NO_WARNINGS
8 # define _SCL_SECURE_NO_WARNINGS
9 #endif
10 #ifndef NO_WARN_MBCS_MFC_DEPRECATION
11 # define NO_WARN_MBCS_MFC_DEPRECATION
12 #endif
13
14 #include <boost/json/detail/charconv/detail/fast_float/fast_float.hpp>
15 #include <boost/json/detail/charconv/detail/from_chars_float_impl.hpp>
16 #include <boost/json/detail/charconv/from_chars.hpp>
17 #include <system_error>
18 #include <string>
19 #include <cstdlib>
20 #include <cerrno>
21 #include <cstring>
22
23 #if defined(__GNUC__) && __GNUC__ < 5
24 # pragma GCC diagnostic ignored "-Wmissing-field-initializers"
25 #endif
26
27 std::errc boost::json::detail::charconv::detail::errno_to_errc(int errno_value) noexcept
28 {
29 switch (errno_value)
30 {
31 case EINVAL:
32 return std::errc::invalid_argument;
33 case ERANGE:
34 return std::errc::result_out_of_range;
35 default:
36 return std::errc();
37 }
38 }
39
40 1009310 boost::json::detail::charconv::from_chars_result boost::json::detail::charconv::from_chars(const char* first, const char* last, double& value, boost::json::detail::charconv::chars_format fmt) noexcept
41 {
42
1/2
✓ Branch 0 taken 1009310 times.
✗ Branch 1 not taken.
1009310 if (fmt != boost::json::detail::charconv::chars_format::hex)
43 {
44 1009310 return boost::json::detail::charconv::detail::fast_float::from_chars(first, last, value, fmt);
45 }
46 return boost::json::detail::charconv::detail::from_chars_float_impl(first, last, value, fmt);
47 }
48