]> git.mxchange.org Git - simgear.git/blobdiff - simgear/timing/sg_time.cxx
Merge branch 'next' of git://gitorious.org/fg/simgear into next
[simgear.git] / simgear / timing / sg_time.cxx
index fb3f30c81c19ee5283e0737658f058c9a522879d..d32302ee1eef9c5575a5595f82ea612ea1ce734d 100644 (file)
@@ -32,6 +32,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <ctime>
+#include <cstring>
 
 #include <string>
 
@@ -58,6 +59,7 @@
 #define DEGHR(x)        ((x)/15.)
 #define RADHR(x)        DEGHR(x*SGD_RADIANS_TO_DEGREES)
 
+using std::string;
 
 static const double MJD0    = 2415020.0;
 static const double J2000   = 2451545.0 - MJD0;
@@ -88,9 +90,8 @@ void SGTime::init( double lon_rad, double lat_rad,
         SG_LOG( SG_EVENT, SG_INFO, "Reading timezone info from: "
                 << zone.str() );
         tzContainer = new SGTimeZoneContainer( zone.c_str() );
-
-        SGGeoCoord location( SGD_RADIANS_TO_DEGREES * lat_rad, SGD_RADIANS_TO_DEGREES * lon_rad );
-        SGGeoCoord* nearestTz = tzContainer->getNearest(location);
+        SGGeod location(SGGeod::fromRad(lon_rad, lat_rad));
+        SGTimeZone* nearestTz = tzContainer->getNearest(location);
 
         SGPath name( root );
         name.append( nearestTz->getDescription() );
@@ -122,11 +123,7 @@ SGTime::SGTime() {
 
 SGTime::~SGTime()
 {
-    if ( tzContainer != NULL ) {
-        SGTimeZoneContainer *tmp = tzContainer;
-        tzContainer = NULL;
-       delete tmp;
-    }
+    delete tzContainer;
 }
 
 
@@ -195,9 +192,9 @@ void SGTime::update( double lon_rad, double lat_rad,
 {
     double gst_precise, gst_course;
 
-#if defined(_MSC_VER) || defined(__MINGW32__)
+
     tm * gmt = &m_gmt;
-#endif
+
 
     SG_LOG( SG_EVENT, SG_DEBUG, "Updating time" );
 
@@ -213,11 +210,8 @@ void SGTime::update( double lon_rad, double lat_rad,
            << "  warp = " << warp );
 
     // get GMT break down for current time
-#if defined(_MSC_VER) || defined(__MINGW32__)
+
     memcpy( gmt, gmtime(&cur_time), sizeof(tm) );
-#else
-    gmt = gmtime(&cur_time);
-#endif
     SG_LOG( SG_EVENT, SG_DEBUG, 
            "  Current GMT = " << gmt->tm_mon+1 << "/" 
            << gmt->tm_mday << "/" << (1900 + gmt->tm_year) << " "
@@ -290,9 +284,8 @@ void SGTime::updateLocal( double lon_rad, double lat_rad, const string& root ) {
     }
     time_t currGMT;
     time_t aircraftLocalTime;
-    SGGeoCoord location( SGD_RADIANS_TO_DEGREES * lat_rad,
-                         SGD_RADIANS_TO_DEGREES * lon_rad );
-    SGGeoCoord* nearestTz = tzContainer->getNearest(location);
+    SGGeod location(SGGeod::fromRad(lon_rad, lat_rad));
+    SGTimeZone* nearestTz = tzContainer->getNearest(location);
     SGPath zone( root );
     zone.append ( nearestTz->getDescription() );
     zonename = zone.str();
@@ -367,12 +360,8 @@ double sgTimeCalcMJD(int mn, double dy, int yr) {
 // since 1900 jan 0.5), mjd.
 double sgTimeCurrentMJD( time_t ct, long int warp ) {
 
-#if defined(_MSC_VER) || defined(__MINGW32__)
     struct tm m_gmt;    // copy of system gmtime(&time_t) structure
     struct tm *gmt = &m_gmt;
-#else
-    struct tm *gmt;
-#endif
 
     // get current Unix calendar time (in seconds)
     // warp += warp_delta;
@@ -387,11 +376,7 @@ double sgTimeCurrentMJD( time_t ct, long int warp ) {
            << "  warp = " << warp );
 
     // get GMT break down for current time
-#if defined(_MSC_VER) || defined(__MINGW32__)
     memcpy( gmt, gmtime(&cur_time), sizeof(tm) );
-#else
-    gmt = gmtime(&cur_time);
-#endif
     SG_LOG( SG_EVENT, SG_DEBUG, 
            "  Current GMT = " << gmt->tm_mon+1 << "/" 
            << gmt->tm_mday << "/" << (1900 + gmt->tm_year) << " "