summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
8f9482d)
Non-standard but widely support (json.py, qjson)
#ifdef _MSC_VER
# include <float.h>
# define isfinite _finite
#ifdef _MSC_VER
# include <float.h>
# define isfinite _finite
-# include <math.h> // isfinite
+# include <math.h> // isfinite, isnan
#endif
#include <iomanip>
#endif
#include <iomanip>
template<class T>
inline void writeNumber(T n) {
template<class T>
inline void writeNumber(T n) {
- if (!isfinite(n)) {
- // NaN/Inf
- writeNull();
+ separator();
+ if (isnan(n)) {
+ // NaN is non-standard but widely supported
+ os << "NaN";
+ } else if (!isfinite(n)) {
+ // Infinite is non-standard but widely supported
+ if (n < 0) {
+ os << '-';
+ }
+ os << "Infinity";
os << std::dec << std::setprecision(std::numeric_limits<T>::digits10 + 1) << n;
os << std::dec << std::setprecision(std::numeric_limits<T>::digits10 + 1) << n;
- value = true;
- space = ' ';
+ value = true;
+ space = ' ';
}
inline void writeStringMember(const char *name, const char *s) {
}
inline void writeStringMember(const char *name, const char *s) {