X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Ftiming%2Fsg_time.hxx;h=78d04863811f9b3dff0ae01a57d8eb5e8be40903;hb=1f585d67199896749f5f532657d17afe586f6615;hp=24175e2e569e22e73a141b5f5ecbc810b34e4d9d;hpb=f196d3bab86056af0732a826ef1757ed219a0b5d;p=simgear.git diff --git a/simgear/timing/sg_time.hxx b/simgear/timing/sg_time.hxx index 24175e2e..78d04863 100644 --- a/simgear/timing/sg_time.hxx +++ b/simgear/timing/sg_time.hxx @@ -17,10 +17,9 @@ // 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$ @@ -29,22 +28,21 @@ #define _SG_TIME_HXX -#ifndef __cplusplus +#ifndef __cplusplus # error This library requires C++ -#endif +#endif #include -#ifdef SG_HAVE_STD_INCLUDES -# include -#else -# include -#endif - -#include - +#include +#include // for std::auto_ptr +#include +// forward decls +class SGPath; +class SGGeod; + /** * A class to calculate and manage a variety of time parameters. * The SGTime class provides many real-world time values. It @@ -68,21 +66,15 @@ class SGTime { private: - // tzContainer stores all the current Timezone control points/ - 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; @@ -105,7 +97,7 @@ private: double gst_diff; /** init common constructor code */ - void init( double lon_rad, double lat_rad, const string& root, + void init( const SGGeod& location, const SGPath& root, time_t init_time ); public: @@ -129,14 +121,14 @@ 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, - time_t init_time ); + SGTime( const SGGeod& location, const SGPath& 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 SGPath& root ); /** Destructor */ ~SGTime(); @@ -154,7 +146,7 @@ public: clock time * @param warp an optional time offset specified in seconds. This * allows us to advance or rewind "time" if we choose to. */ - void update( double lon_rad, double lat_rad, time_t ct, long int warp ); + void update( const SGGeod& location, time_t ct, long int warp ); /** * Given lon/lat, update timezone information and local_offset @@ -166,7 +158,7 @@ public: * @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( const SGGeod& location, const std::string& root ); /** @return current system/unix time in seconds */ inline time_t get_cur_time() const { return cur_time; }; @@ -175,11 +167,7 @@ public: 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; }; @@ -192,6 +180,9 @@ public: /** @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; }; };