19#include <toolbox/contrib/fast_float/fast_float.h> 
   21#include <boost/spirit/home/qi/numeric/real.hpp> 
   22#include <boost/spirit/home/qi/parse.hpp> 
   25inline namespace util {
 
   51        if ((
sv[0] == 
'N' || 
sv[0] == 
'n') 
 
   52            && (
sv[1] == 
'O' || 
sv[1] == 
'o')) {
 
   54        } 
else if ((
sv[0] == 
'O' || 
sv[0] == 
'o') 
 
   55                   && (
sv[1] == 
'N' || 
sv[1] == 
'n')) {
 
   60        if ((
sv[0] == 
'O' || 
sv[0] == 
'o')    
 
   61            && (
sv[1] == 
'F' || 
sv[1] == 
'f') 
 
   62            && (
sv[2] == 
'F' || 
sv[2] == 
'f')) {
 
   64        } 
else if ((
sv[0] == 
'Y' || 
sv[0] == 
'y')    
 
   65                   && (
sv[1] == 
'E' || 
sv[1] == 
'e') 
 
   66                   && (
sv[2] == 
'S' || 
sv[2] == 
's')) {
 
   71        if ((
sv[0] == 
'T' || 
sv[0] == 
't')    
 
   72            && (
sv[1] == 
'R' || 
sv[1] == 
'r') 
 
   73            && (
sv[2] == 
'U' || 
sv[2] == 
'u') 
 
   74            && (
sv[3] == 
'E' || 
sv[3] == 
'e')) {
 
   79        if ((
sv[0] == 
'F' || 
sv[0] == 
'f')    
 
   80            && (
sv[1] == 
'A' || 
sv[1] == 
'a') 
 
   81            && (
sv[2] == 
'L' || 
sv[2] == 
'l') 
 
   82            && (
sv[3] == 
'S' || 
sv[3] == 
's') 
 
   83            && (
sv[4] == 
'E' || 
sv[4] == 
'e')) {
 
 
   91double stod(std::string_view 
sv, 
double dfl) 
noexcept 
   93    using namespace boost::spirit;
 
   95    if (!qi::parse(
sv.begin(), 
sv.end(), qi::double_, 
val)) {
 
 
  104    auto res = fast_float::from_chars(
sv.data(), 
sv.data() + 
sv.size(), 
out,
 
  105                                      fast_float::chars_format::fixed);