| 6934 | } |
| 6935 | |
| 6936 | PUGI__FN const char_t* convert_number_to_string_special(double value) |
| 6937 | { |
| 6938 | #if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) |
| 6939 | if (_finite(value)) |
| 6940 | return (value == 0) ? PUGIXML_TEXT("0") : 0; |
| 6941 | if (_isnan(value)) |
| 6942 | return PUGIXML_TEXT("NaN"); |
| 6943 | return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); |
| 6944 | #elif defined(fpclassify) && defined(FP_NAN) && defined(FP_INFINITE) && defined(FP_ZERO) |
| 6945 | switch (fpclassify(value)) |
| 6946 | { |
| 6947 | case FP_NAN: return PUGIXML_TEXT("NaN"); |
| 6948 | |
| 6949 | case FP_INFINITE: return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); |
| 6950 | |
| 6951 | case FP_ZERO: return PUGIXML_TEXT("0"); |
| 6952 | |
| 6953 | default: return 0; |
| 6954 | } |
| 6955 | #else |
| 6956 | // fallback |
| 6957 | const volatile double v = value; |
| 6958 | |
| 6959 | if (v == 0) |
| 6960 | return PUGIXML_TEXT("0"); |
| 6961 | if (v != v) |
| 6962 | return PUGIXML_TEXT("NaN"); |
| 6963 | if (v * 2 == v) |
| 6964 | return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); |
| 6965 | return 0; |
| 6966 | #endif |
| 6967 | } |
| 6968 | |
| 6969 | PUGI__FN bool convert_number_to_boolean(double value) |
| 6970 | { |
no outgoing calls
no test coverage detected