]> git.mxchange.org Git - simgear.git/commitdiff
Handle isnan at a more central place.
authorMathias Froehlich <Mathias.Froehlich@web.de>
Thu, 27 Sep 2012 16:39:18 +0000 (18:39 +0200)
committerMathias Froehlich <Mathias.Froehlich@web.de>
Thu, 27 Sep 2012 16:44:14 +0000 (18:44 +0200)
Do not distribute architecture specific
code across a lot of places.

CMakeLists.txt
simgear/math/SGGeod.hxx
simgear/math/SGMisc.hxx
simgear/simgear_config_cmake.h.in

index 328dfdd0b791b4fd2e09a6bb5400956c840e1051..61824342e6ffec623172d8179871e676026d4775 100644 (file)
@@ -232,6 +232,11 @@ check_cxx_source_compiles(
     void f() { isnan(0.0);} "
     HAVE_ISNAN)
 
+check_cxx_source_compiles(
+    "#include <cmath> 
+    void f() { std::isnan(0.0);} "
+    HAVE_STD_ISNAN)
+
 if(CMAKE_COMPILER_IS_GNUCXX)
     set(WARNING_FLAGS_CXX "-Wall")
     set(WARNING_FLAGS_C   "-Wall")
index 2ab2b1076c937925842e757b9c506992b516b962..8eddbe92ba5f10c2fb9f20765c96ad9085dd8cf6 100644 (file)
 
 #include <simgear/constants.h>
 
-#ifndef _MSC_VER
-using std::isnan;
-#endif
-
 // #define SG_GEOD_NATIVE_DEGREE
 
 /// Class representing a geodetic location
@@ -356,7 +352,10 @@ inline
 bool
 SGGeod::isValid() const
 {
-  if (isnan(_lon) || isnan(_lat)) return false;
+  if (SGMiscd::isNaN(_lon))
+      return false;
+  if (SGMiscd::isNaN(_lat))
+      return false;
 #ifdef SG_GEOD_NATIVE_DEGREE
   return (_lon >= -180.0) && (_lon <= 180.0) &&
   (_lat >= -90.0) && (_lat <= 90.0);
index 5e69077eab6c98c469ecd681a5f8c3b86cfd2168..8eaa124e27704eca149bf7f8c912fcd661670aba 100644 (file)
@@ -92,7 +92,6 @@ public:
   static S lerp(const S& val0, const S& val1, const T& t)
   { return val0*(T(1) - t) + val1*t; }
 
-#ifndef NDEBUG
   /// Returns true if v is a NaN value
   /// Use with care: allways code that you do not need to use that!
   static bool isNaN(const T& v)
@@ -109,7 +108,6 @@ public:
     return !(v == v);
 #endif
   }
-#endif
 };
 
 #endif
index a9d12392603150b601eece889341626e9f30cd63..c571af2dd820ac7ea942ec2abd7b1588b294345b 100644 (file)
@@ -10,6 +10,7 @@
 #cmakedefine HAVE_RINT
 #cmakedefine HAVE_TIMEGM
 #cmakedefine HAVE_ISNAN
+#cmakedefine HAVE_STD_ISNAN
 #cmakedefine HAVE_WINDOWS_H
 #cmakedefine HAVE_MKDTEMP