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);