X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Ftiming%2Fsg_time.cxx;h=0013d3b0e837c7ef3584b107466ef2b5d495d9e7;hb=4e23b3dff57d9de08e659c89c46e271d2f17fbc3;hp=a0353d4ec2ca142e36009c4e12a5ae5e1ac1237d;hpb=5c3b569e978733fb3d917d0cf3edda82a503d70d;p=simgear.git diff --git a/simgear/timing/sg_time.cxx b/simgear/timing/sg_time.cxx index a0353d4e..0013d3b0 100644 --- a/simgear/timing/sg_time.cxx +++ b/simgear/timing/sg_time.cxx @@ -4,19 +4,20 @@ // // Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. // -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. +// Library General Public License for more details. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. // // $Id$ @@ -62,68 +63,57 @@ #define RADHR(x) DEGHR(x*RAD_TO_DEG) -SGTime::SGTime( const string& root ) +SGTime::SGTime( double lon, double lat, const string& root ) { - FGPath zone( root ); - zone.append( "zone.tab" ); - - FG_LOG( FG_EVENT, FG_DEBUG, "Reading timezone info from: " << zone.str() ); - tzContainer = new TimezoneContainer( zone.c_str() ); - - zonename = NULL; -} - + FG_LOG( FG_EVENT, FG_INFO, "Initializing Time" ); -SGTime::~SGTime() -{ - delete tzContainer; + gst_diff = -9999.0; - if ( zonename != NULL ) { - delete zonename; + cur_time = time(NULL); + // cout << "Current greenwich mean time = " << asctime(gmtime(&cur_time)) + // << endl; + // cout << "Current local time = " + // << asctime(localtime(&cur_time)) << endl; + + if ( root != "" ) { + FGPath zone( root ); + zone.append( "zone.tab" ); + FG_LOG( FG_EVENT, FG_DEBUG, "Reading timezone info from: " + << zone.str() ); + tzContainer = new TimezoneContainer( zone.c_str() ); + + GeoCoord location( RAD_TO_DEG * lat, RAD_TO_DEG * lon ); + GeoCoord* nearestTz = tzContainer->getNearest(location); + + FGPath name( root ); + name.append( nearestTz->getDescription() ); + zonename = strdup( name.c_str() ); + // cout << "Using zonename = " << zonename << endl; + } else { + tzContainer = NULL; } } -// Initialize the time related variables -void SGTime::init( double lon, double lat, const string& root ) -{ - FG_LOG( FG_EVENT, FG_INFO, "Initializing Time" ); - gst_diff = -9999.0; - - // time_t currGMT; - // time_t systemLocalTime; - // time_t aircraftLocalTime; - - // would it be better to put these sanity checks in the options - // parsing code? (CLO) - - cur_time = time(NULL); - - // printf ("Current greenwich mean time = %24s", asctime(gmtime(&cur_time))); - // printf ("Current local time = %24s", asctime(localtime(&cur_time))); - // time_t tmp = cur_time; - GeoCoord location( RAD_TO_DEG * lat, RAD_TO_DEG * lon ); +SGTime::SGTime( const string& root ) { + SGTime( 0.0, 0.0, root ); +} - GeoCoord* nearestTz = tzContainer->getNearest(location); - FGPath zone( root ); - zone.append( nearestTz->getDescription() ); +SGTime::SGTime() { + SGTime( 0.0, 0.0, "" ); +} - // cout << "Using " << zone.str() << " for timezone information" << endl; - zonename = strdup( zone.c_str() ); - // cout << "zonename = " << zonename << endl; - //show( buffer.c_str(), cur_time, 1); - //printf ("Current greenwich mean time = %24s", asctime(gmtime(&cur_time))); - //printf ("Current local time = %24s", asctime(localtime(&cur_time))); - // currGMT = get_gmt( gmtime(&cur_time) ); - // cout << "currGMT = " << currGMT << endl; - // systemLocalTime = get_gmt( localtime(&cur_time) ); - // cout << "systemLocalTime = " << systemLocalTime << endl; +SGTime::~SGTime() +{ + if ( tzContainer != NULL ) { + delete tzContainer; + } - // aircraftLocalTime = get_gmt( fgLocaltime(&cur_time, zone.c_str()) ); - //printf ("Current greenwich mean time = %24s", asctime(gmtime(&cur_time))); - //printf ("Current local time = %24s", asctime(localtime(&cur_time))); + if ( zonename != NULL ) { + delete zonename; + } }