mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-06 16:56:57 +08:00
Completing.
This commit is contained in:
parent
d521ddf7f7
commit
ad22e20e4c
@ -31,7 +31,7 @@ template <typename T> char *to_string(T d, char *buffer) {
|
|||||||
|
|
||||||
void strtod_from_string(const char * st, float& d) {
|
void strtod_from_string(const char * st, float& d) {
|
||||||
char *pr = (char *)st;
|
char *pr = (char *)st;
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
d = cygwin_strtod_l(st, &pr);
|
d = cygwin_strtod_l(st, &pr);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
||||||
@ -112,8 +112,8 @@ void allvalues() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
std::cout << "Warning: msys/cygwin detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
std::cout << "Warning: msys/cygwin or solaris detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
allvalues();
|
allvalues();
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|||||||
@ -5,6 +5,27 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
|
// Anything at all that is related to cygwin, msys and so forth will
|
||||||
|
// always use this fallback because we cannot rely on it behaving as normal
|
||||||
|
// gcc.
|
||||||
|
#include <locale>
|
||||||
|
#include <sstream>
|
||||||
|
// workaround for CYGWIN
|
||||||
|
double cygwin_strtod_l(const char* start, char** end) {
|
||||||
|
double d;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss.imbue(std::locale::classic());
|
||||||
|
ss << start;
|
||||||
|
ss >> d;
|
||||||
|
size_t nread = ss.tellg();
|
||||||
|
*end = const_cast<char*>(start) + nread;
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
std::pair<double, bool> strtod_from_string(const char *st) {
|
std::pair<double, bool> strtod_from_string(const char *st) {
|
||||||
double d;
|
double d;
|
||||||
char *pr;
|
char *pr;
|
||||||
@ -25,7 +46,7 @@ std::pair<double, bool> strtod_from_string(const char *st) {
|
|||||||
std::pair<float, bool> strtof_from_string(char *st) {
|
std::pair<float, bool> strtof_from_string(char *st) {
|
||||||
float d;
|
float d;
|
||||||
char *pr;
|
char *pr;
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
d = cygwin_strtod_l(st, &pr);
|
d = cygwin_strtod_l(st, &pr);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
// Anything at all that is related to cygwin, msys and so forth will
|
// Anything at all that is related to cygwin, msys and so forth will
|
||||||
// always use this fallback because we cannot rely on it behaving as normal
|
// always use this fallback because we cannot rely on it behaving as normal
|
||||||
// gcc.
|
// gcc.
|
||||||
@ -126,7 +126,7 @@ std::pair<double, bool> strtod_from_string(char *st) {
|
|||||||
std::pair<float, bool> strtof_from_string(char *st) {
|
std::pair<float, bool> strtof_from_string(char *st) {
|
||||||
float d;
|
float d;
|
||||||
char *pr;
|
char *pr;
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
d = cygwin_strtod_l(st, &pr);
|
d = cygwin_strtod_l(st, &pr);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
||||||
@ -203,8 +203,8 @@ bool tester(uint64_t seed, size_t volume) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
std::cout << "Warning: msys/cygwin detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
std::cout << "Warning: msys/cygwin or solaris detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
if (tester(1234344, 100000000)) {
|
if (tester(1234344, 100000000)) {
|
||||||
std::cout << "All tests ok." << std::endl;
|
std::cout << "All tests ok." << std::endl;
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
// Anything at all that is related to cygwin, msys and so forth will
|
// Anything at all that is related to cygwin, msys and so forth will
|
||||||
// always use this fallback because we cannot rely on it behaving as normal
|
// always use this fallback because we cannot rely on it behaving as normal
|
||||||
// gcc.
|
// gcc.
|
||||||
@ -122,7 +122,7 @@ std::pair<double, bool> strtod_from_string(char *st) {
|
|||||||
std::pair<float, bool> strtof_from_string(char *st) {
|
std::pair<float, bool> strtof_from_string(char *st) {
|
||||||
float d;
|
float d;
|
||||||
char *pr;
|
char *pr;
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
d = cygwin_strtod_l(st, &pr);
|
d = cygwin_strtod_l(st, &pr);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
||||||
@ -199,7 +199,7 @@ bool tester(uint64_t seed, size_t volume) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
std::cout << "Warning: msys/cygwin detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
std::cout << "Warning: msys/cygwin detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
if (tester(1234344, 100000000)) {
|
if (tester(1234344, 100000000)) {
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
// Anything at all that is related to cygwin, msys and so forth will
|
// Anything at all that is related to cygwin, msys and so forth will
|
||||||
// always use this fallback because we cannot rely on it behaving as normal
|
// always use this fallback because we cannot rely on it behaving as normal
|
||||||
// gcc.
|
// gcc.
|
||||||
@ -85,7 +85,7 @@ void strtod_from_string(const std::string &st, double& d) {
|
|||||||
template <>
|
template <>
|
||||||
void strtod_from_string(const std::string &st, float& d) {
|
void strtod_from_string(const std::string &st, float& d) {
|
||||||
char *pr = (char *)st.c_str();
|
char *pr = (char *)st.c_str();
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
d = cygwin_strtod_l(st.c_str(), &pr);
|
d = cygwin_strtod_l(st.c_str(), &pr);
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
static _locale_t c_locale = _create_locale(LC_ALL, "C");
|
||||||
@ -236,7 +236,7 @@ bool partow_test() {
|
|||||||
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
|
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(sun) || defined(__sun)
|
||||||
std::cout << "Warning: msys/cygwin detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
std::cout << "Warning: msys/cygwin detected. This particular test is likely to generate false failures due to our reliance on the underlying runtime library." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
std::cout << "32 bits checks" << std::endl;
|
std::cout << "32 bits checks" << std::endl;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user