// Written by Curtis Olson, started August 1997.
//
-// Copyright (C) 1997 Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 1997 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Library General Public License for more details.
//
-// 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.
+// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
#define _SG_TIME_HXX
-#ifndef __cplusplus
+#ifndef __cplusplus
# error This library requires C++
-#endif
+#endif
#include <simgear/compiler.h>
-#ifdef SG_HAVE_STD_INCLUDES
-# include <ctime>
-#else
-# include <time.h>
-#endif
+#include <ctime>
#include <simgear/timing/timezone.h>
SGTimeZoneContainer* tzContainer;
// Points to the current local timezone name;
- string zonename;
+ std::string zonename;
// Unix "calendar" time in seconds
time_t cur_time;
// Break down of equivalent GMT time
-#if defined(_MSC_VER) || defined(__MINGW32__)
struct tm m_gmt; // copy of system gmtime(&time_t) structure
-#else
- struct tm *gmt;
-#endif
// offset of local time relative to GMT
time_t local_offset;
double gst_diff;
/** init common constructor code */
- void init( double lon_rad, double lat_rad, const string& root,
+ void init( double lon_rad, double lat_rad, const std::string& root,
time_t init_time );
public:
* @param root root path point to data file location (timezone, etc.)
* @param init_time provide an initialization time, 0 means use
current clock time */
- SGTime( double lon_rad, double lat_rad, const string& root,
+ SGTime( double lon_rad, double lat_rad, const std::string& root,
time_t init_time );
/**
* Create an instance given a data file path.
* @param root root path point to data file location (timezone, etc.)
*/
- SGTime( const string& root );
+ SGTime( const std::string& root );
/** Destructor */
~SGTime();
* @param lon_rad current longitude (radians)
* @param lat_rad current latitude (radians)
* @param root base path containing time zone directory */
- void updateLocal( double lon_rad, double lat_rad, const string& root );
+ void updateLocal( double lon_rad, double lat_rad, const std::string& root );
/** @return current system/unix time in seconds */
inline time_t get_cur_time() const { return cur_time; };
inline const char * get_zonename() const { return zonename.c_str(); }
/** @return GMT in a "brokent down" tm structure */
-#if defined(_MSC_VER) || defined(__MINGW32__)
inline struct tm* getGmt()const { return (struct tm *)&m_gmt; };
-#else
- inline struct tm* getGmt()const { return gmt; };
-#endif
/** @return julian date */
inline double getJD() const { return jd; };
/** @return grenich side real time (lst when longitude == 0) */
inline double getGst() const { return gst; };
+
+ /** @return offset in seconds to local timezone time */
+ inline time_t get_local_offset() const { return local_offset; };
};
/**
* \relates SGTime
- * Return unix time in seconds for the given data (relative to GMT)
+ * Return unix time in seconds for the given date (relative to GMT)
* @param year current GMT year
* @param month current GMT month
* @param day current GMT day