From 8df11d518b803177392aba6dc114df2479fa8c95 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 1 Oct 2015 13:20:37 -0400 Subject: [PATCH] json_writer: improve isfinite support on *nix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on a patches to CMake by: Ådne Hovda : commit 7b1cdb00279908cacabada92f8a53e4986465423 jsoncpp: Provide 'isfinite' implementation on older AIX and HP-UX Newer AIX and HP-UX platforms provide 'isfinite' as a macro. Older versions do not, so add the definition if it is not provided. Michael Scott : commit 9217b678b305d7df7471ba476a81bf28961fdfa3 jsoncpp: Provide 'isfinite' impl on more HP-UX versions (#15576) Some versions of HP-UX do not define 'isfinite' or 'finite' in math.h for Itanium when preprocessing with C++, so we have to add the definition ourselves instead to map to the internal version. Joerg Sonnenberger : commit 75644dafe54c21902f14cfe58cb8338b553b69d8 jsoncpp: Fix compilation as C99 on Solaris In C99 mode, Solaris variants may already define isfinite, so check for the existence first. --- src/lib_json/json_writer.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index c85907aa2..1975189fe 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -20,8 +20,25 @@ #include #define isfinite _finite #elif defined(__sun) && defined(__SVR4) //Solaris +#if !defined(isfinite) #include #define isfinite finite +#endif +#elif defined(_AIX) +#if !defined(isfinite) +#include +#define isfinite finite +#endif +#elif defined(__hpux) +#if !defined(isfinite) +#if defined(__ia64) && !defined(finite) +#define isfinite(x) ((sizeof(x) == sizeof(float) ? \ + _Isfinitef(x) : _IsFinite(x))) +#else +#include +#define isfinite finite +#endif +#endif #else #include #define isfinite std::isfinite