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