From: curt Date: Sat, 5 Dec 1998 14:21:28 +0000 (+0000) Subject: Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d671446a3546fea144b237b4eae67ee6c06b8e53;p=flightgear.git Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition to it's own file, timestamp.hxx. --- diff --git a/Time/event.hxx b/Time/event.hxx index c514fd28c..c795b79a7 100644 --- a/Time/event.hxx +++ b/Time/event.hxx @@ -56,6 +56,7 @@ using namespace std; #endif #include "fg_time.hxx" +#include "timestamp.hxx" class fgEVENT @@ -169,6 +170,10 @@ extern fgEVENT_MGR global_events; // $Log$ +// Revision 1.14 1998/12/05 14:21:28 curt +// Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition +// to it's own file, timestamp.hxx. +// // Revision 1.13 1998/12/04 01:32:47 curt // Converted "struct fg_timestamp" to "class fgTIMESTAMP" and added some // convenience inline operators. diff --git a/Time/fg_time.cxx b/Time/fg_time.cxx index d872690f8..a8b20400c 100644 --- a/Time/fg_time.cxx +++ b/Time/fg_time.cxx @@ -97,61 +97,6 @@ void fgTimeInit(fgTIME *t) { } -/* -// Portability wrap to get current time. -void timestamp(fg_timestamp *timestamp) { -#if defined( WIN32 ) - unsigned int t; - t = timeGetTime(); - timestamp->seconds = 0; - timestamp->millis = t; -#elif defined( HAVE_GETTIMEOFDAY ) - struct timeval current; - struct timezone tz; - // fg_timestamp currtime; - gettimeofday(¤t, &tz); - timestamp->seconds = current.tv_sec; - timestamp->millis = current.tv_usec / 1000; -#elif defined( HAVE_GETLOCALTIME ) - SYSTEMTIME current; - GetLocalTime(¤t); - timestamp->seconds = current.wSecond; - timestamp->millis = current.wMilliseconds; -#elif defined( HAVE_FTIME ) - struct timeb current; - ftime(¤t); - timestamp->seconds = current.time; - timestamp->millis = current.millitm; -#else -# error Port me -#endif -} - - -// Return duration in millis from first to last -long timediff(fg_timestamp *first, fg_timestamp *last) { -#if defined( WIN32 ) - return (last->millis - first->millis); -#else - return ( 1000 * (last->seconds - first->seconds) + - (last->millis - first->millis) ); -#endif -} - - -// Return new timestamp given a time stamp and an interval to add in -void timesum(fg_timestamp *res, fg_timestamp *start, long millis) { -#ifdef WIN32 - res->seconds = 0; - res->millis = ( start->millis + millis ); -#else - res->seconds = start->seconds + - ( start->millis + millis ) / 1000; - res->millis = ( start->millis + millis ) % 1000; -#endif -} -*/ - // given a date in months, mn, days, dy, years, yr, return the // modified Julian date (number of days elapsed since 1900 jan 0.5), // mjd. Adapted from Xephem. @@ -453,6 +398,10 @@ void fgTimeUpdate(fgFLIGHT *f, fgTIME *t) { // $Log$ +// Revision 1.25 1998/12/05 14:21:30 curt +// Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition +// to it's own file, timestamp.hxx. +// // Revision 1.24 1998/12/04 01:32:49 curt // Converted "struct fg_timestamp" to "class fgTIMESTAMP" and added some // convenience inline operators. diff --git a/Time/fg_time.hxx b/Time/fg_time.hxx index e14e1292e..60ffd8341 100644 --- a/Time/fg_time.hxx +++ b/Time/fg_time.hxx @@ -43,16 +43,6 @@ #include #include -#ifdef HAVE_SYS_TIMEB_H -# include // for ftime() and struct timeb -#endif -#ifdef HAVE_UNISTD_H -# include // for gettimeofday() -#endif -#ifdef HAVE_SYS_TIME_H -# include // for get/setitimer, gettimeofday, struct timeval -#endif - #include @@ -97,109 +87,6 @@ typedef struct { extern fgTIME cur_time_params; -class fgTIMESTAMP { - -private: - - long seconds; - long millis; - -public: - - fgTIMESTAMP(); - fgTIMESTAMP( const long s, const long m ); - ~fgTIMESTAMP(); - - // Set time to current time - void stamp(); - - fgTIMESTAMP& operator = ( const fgTIMESTAMP& t ); - - friend fgTIMESTAMP operator + (const fgTIMESTAMP& t, const long& m); - friend long operator - (const fgTIMESTAMP& a, const fgTIMESTAMP& b); - - inline long get_seconds() const { return seconds; } - inline long get_millis() const { return millis; } -}; - -inline fgTIMESTAMP::fgTIMESTAMP() { -} - -inline fgTIMESTAMP::fgTIMESTAMP( const long s, const long m ) { - seconds = s; - millis = m; -} - -inline fgTIMESTAMP::~fgTIMESTAMP() { -} - -inline fgTIMESTAMP& fgTIMESTAMP::operator = (const fgTIMESTAMP& t) -{ - seconds = t.seconds; - millis = t.millis; - return *this; -} - -inline void fgTIMESTAMP::stamp() { -#if defined( WIN32 ) - unsigned int t; - t = timeGetTime(); - seconds = 0; - millis = t; -#elif defined( HAVE_GETTIMEOFDAY ) - struct timeval current; - struct timezone tz; - // fg_timestamp currtime; - gettimeofday(¤t, &tz); - seconds = current.tv_sec; - millis = current.tv_usec / 1000; -#elif defined( HAVE_GETLOCALTIME ) - SYSTEMTIME current; - GetLocalTime(¤t); - seconds = current.wSecond; - millis = current.wMilliseconds; -#elif defined( HAVE_FTIME ) - struct timeb current; - ftime(¤t); - seconds = current.time; - millis = current.millitm; -#else -# error Port me -#endif -} - -// difference between time stamps in milliseconds -inline fgTIMESTAMP operator + (const fgTIMESTAMP& t, const long& m) { -#ifdef WIN32 - return fgTIMESTAMP( 0, t.millis + m ); -#else - return fgTIMESTAMP( t.seconds + ( t.millis + m ) / 1000, - ( t.millis + m ) % 1000 ); -#endif -} - -// difference between time stamps in milliseconds -inline long operator - (const fgTIMESTAMP& a, const fgTIMESTAMP& b) -{ -#if defined( WIN32 ) - return a.millis - b.millis; -#else - return 1000 * (a.seconds - b.seconds) + (a.millis - b.millis); -#endif -} - -// Portability wrap to get current time. -// void timestamp(fg_timestamp *timestamp); - - -// Return duration in millis from first to last -// long timediff(fg_timestamp *first, fg_timestamp *last); - - -// Return new timestamp given a time stamp and an interval to add in -// void timesum(fg_timestamp *res, fg_timestamp *start, long millis); - - // Update time variables such as gmt, julian date, and sidereal time void fgTimeInit(fgTIME *t); @@ -212,6 +99,10 @@ void fgTimeUpdate(fgFLIGHT *f, fgTIME *t); // $Log$ +// Revision 1.10 1998/12/05 14:21:31 curt +// Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition +// to it's own file, timestamp.hxx. +// // Revision 1.9 1998/12/04 01:32:50 curt // Converted "struct fg_timestamp" to "class fgTIMESTAMP" and added some // convenience inline operators. diff --git a/Time/fg_timer.cxx b/Time/fg_timer.cxx index f42cc110d..c77cda5bf 100644 --- a/Time/fg_timer.cxx +++ b/Time/fg_timer.cxx @@ -1,46 +1,45 @@ -/************************************************************************** - * fg_timer.c -- time handling routines - * - * Written by Curtis Olson, started June 1997. - * - * 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 program 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. - * - * 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. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ +// fg_timer.cxx -- time handling routines +// +// Written by Curtis Olson, started June 1997. +// +// 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 program 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. +// +// 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. +// +// $Id$ +// (Log is kept at end of this file) #ifdef HAVE_CONFIG_H # include #endif -#include /* for timer routines */ -#include /* for printf() */ +#include // for timer routines +#include // for printf() #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SYS_TIME_H -# include /* for get/setitimer, gettimeofday, struct timeval */ +# include // for get/setitimer, gettimeofday, struct timeval #endif #include "fg_time.hxx" #include "fg_timer.hxx" +#include "timestamp.hxx" unsigned long int fgSimTime; @@ -50,28 +49,28 @@ unsigned long int fgSimTime; static void (*callbackfunc)(int multi_loop); -/* This routine catches the SIGALRM */ +// This routine catches the SIGALRM void fgTimerCatch( int dummy ) { int warning_avoider; // get past a compiler warning warning_avoider = dummy; - /* ignore any SIGALRM's until we come back from our EOM iteration */ + // ignore any SIGALRM's until we come back from our EOM iteration signal(SIGALRM, SIG_IGN); - /* printf("In fgTimerCatch()\n"); */ + // printf("In fgTimerCatch()\n"); - /* -1 tells the routine to use default interval rather than something - dynamically calculated based on frame rate */ + // -1 tells the routine to use default interval rather than + // something dynamically calculated based on frame rate callbackfunc(-1); signal(SIGALRM, fgTimerCatch); } -/* this routine initializes the interval timer to generate a SIGALRM after - * the specified interval (dt) */ +// this routine initializes the interval timer to generate a SIGALRM +// after the specified interval (dt) void fgTimerInit(float dt, void (*f)( int )) { int terr; int isec; @@ -86,19 +85,19 @@ void fgTimerInit(float dt, void (*f)( int )) { t.it_interval.tv_usec = usec; t.it_value.tv_sec = isec; t.it_value.tv_usec = usec; - /* printf("fgTimerInit() called\n"); */ - fgTimerCatch(0); /* set up for SIGALRM signal catch */ + // printf("fgTimerInit() called\n"); + fgTimerCatch(0); // set up for SIGALRM signal catch terr = setitimer( ITIMER_REAL, &t, &ot ); if (terr) { printf("Error returned from setitimer"); exit(0); } } -#endif /* HAVE_SETITIMER */ +#endif // HAVE_SETITIMER -/* This function returns the number of milleseconds since the last - time it was called. */ +// This function returns the number of milleseconds since the last +// time it was called. int fgGetTimeInterval( void ) { int interval; static int inited = 0; @@ -119,66 +118,70 @@ int fgGetTimeInterval( void ) { } -/* $Log$ -/* Revision 1.4 1998/12/04 01:32:51 curt -/* Converted "struct fg_timestamp" to "class fgTIMESTAMP" and added some -/* convenience inline operators. -/* - * Revision 1.3 1998/04/28 01:22:18 curt - * Type-ified fgTIME and fgVIEW. - * - * Revision 1.2 1998/04/25 20:24:03 curt - * Cleaned up initialization sequence to eliminate interdependencies - * between sun position, lighting, and view position. This creates a - * valid single pass initialization path. - * - * Revision 1.1 1998/04/24 00:52:29 curt - * Wrapped "#include " in "#ifdef HAVE_CONFIG_H" - * Fog color fixes. - * Separated out lighting calcs into their own file. - * - * Revision 1.12 1998/04/21 17:01:44 curt - * Fixed a problems where a pointer to a function was being passed around. In - * one place this functions arguments were defined as ( void ) while in another - * place they were defined as ( int ). The correct answer was ( int ). - * - * Prepairing for C++ integration. - * - * Revision 1.11 1998/04/03 22:12:56 curt - * Converting to Gnu autoconf system. - * Centralized time handling differences. - * - * Revision 1.10 1998/01/31 00:43:45 curt - * Added MetroWorks patches from Carmen Volpe. - * - * Revision 1.9 1998/01/19 19:27:21 curt - * Merged in make system changes from Bob Kuehne - * This should simplify things tremendously. - * - * Revision 1.8 1998/01/19 18:40:39 curt - * Tons of little changes to clean up the code and to remove fatal errors - * when building with the c++ compiler. - * - * Revision 1.7 1997/12/30 13:06:58 curt - * A couple lighting tweaks ... - * - * Revision 1.6 1997/07/12 02:13:04 curt - * Add ftime() support for those that don't have gettimeofday() - * - * Revision 1.5 1997/06/26 19:08:38 curt - * Restructuring make, adding automatic "make dep" support. - * - * Revision 1.4 1997/06/25 15:39:49 curt - * Minor changes to compile with rsxnt/win32. - * - * Revision 1.3 1997/06/17 16:52:04 curt - * Timer interval stuff now uses gettimeofday() instead of ftime() - * - * Revision 1.2 1997/06/17 03:41:10 curt - * Nonsignal based interval timing is now working. - * This would be a good time to look at cleaning up the code structure a bit. - * - * Revision 1.1 1997/06/16 19:24:20 curt - * Initial revision. - * - */ +// $Log$ +// Revision 1.5 1998/12/05 14:21:32 curt +// Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition +// to it's own file, timestamp.hxx. +// +// Revision 1.4 1998/12/04 01:32:51 curt +// Converted "struct fg_timestamp" to "class fgTIMESTAMP" and added some +// convenience inline operators. +// +// Revision 1.3 1998/04/28 01:22:18 curt +// Type-ified fgTIME and fgVIEW. +// +// Revision 1.2 1998/04/25 20:24:03 curt +// Cleaned up initialization sequence to eliminate interdependencies +// between sun position, lighting, and view position. This creates a +// valid single pass initialization path. +// +// Revision 1.1 1998/04/24 00:52:29 curt +// Wrapped "#include " in "#ifdef HAVE_CONFIG_H" +// Fog color fixes. +// Separated out lighting calcs into their own file. +// +// Revision 1.12 1998/04/21 17:01:44 curt +// Fixed a problems where a pointer to a function was being passed around. In +// one place this functions arguments were defined as ( void ) while in another +// place they were defined as ( int ). The correct answer was ( int ). +// +// Prepairing for C++ integration. +// +// Revision 1.11 1998/04/03 22:12:56 curt +// Converting to Gnu autoconf system. +// Centralized time handling differences. +// +// Revision 1.10 1998/01/31 00:43:45 curt +// Added MetroWorks patches from Carmen Volpe. +// +// Revision 1.9 1998/01/19 19:27:21 curt +// Merged in make system changes from Bob Kuehne +// This should simplify things tremendously. +// +// Revision 1.8 1998/01/19 18:40:39 curt +// Tons of little changes to clean up the code and to remove fatal errors +// when building with the c++ compiler. +// +// Revision 1.7 1997/12/30 13:06:58 curt +// A couple lighting tweaks ... +// +// Revision 1.6 1997/07/12 02:13:04 curt +// Add ftime() support for those that don't have gettimeofday() +// +// Revision 1.5 1997/06/26 19:08:38 curt +// Restructuring make, adding automatic "make dep" support. +// +// Revision 1.4 1997/06/25 15:39:49 curt +// Minor changes to compile with rsxnt/win32. +// +// Revision 1.3 1997/06/17 16:52:04 curt +// Timer interval stuff now uses gettimeofday() instead of ftime() +// +// Revision 1.2 1997/06/17 03:41:10 curt +// Nonsignal based interval timing is now working. +// This would be a good time to look at cleaning up the code structure a bit. +// +// Revision 1.1 1997/06/16 19:24:20 curt +// Initial revision. +// + diff --git a/Time/timestamp.hxx b/Time/timestamp.hxx new file mode 100644 index 000000000..43f0685aa --- /dev/null +++ b/Time/timestamp.hxx @@ -0,0 +1,155 @@ +// +// timestamp.hxx -- class for managing a timestamp (seconds & milliseconds.) +// +// Written by Curtis Olson, started December 1998. +// +// Copyright (C) 1998 Curtis L. Olson - curt@flightgear.org +// +// 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 program 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. +// +// 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. +// +// $Id$ +// (Log is kept at end of this file) + + +#ifndef _TIMESTAMP_HXX +#define _TIMESTAMP_HXX + + +#ifndef __cplusplus +# error This library requires C++ +#endif + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_WINDOWS_H +# include +#endif + +#include + +#ifdef HAVE_SYS_TIMEB_H +# include // for ftime() and struct timeb +#endif +#ifdef HAVE_UNISTD_H +# include // for gettimeofday() +#endif +#ifdef HAVE_SYS_TIME_H +# include // for get/setitimer, gettimeofday, struct timeval +#endif + + +class fgTIMESTAMP { + +private: + + long seconds; + long millis; + +public: + + fgTIMESTAMP(); + fgTIMESTAMP( const long s, const long m ); + ~fgTIMESTAMP(); + + // Set time to current time + void stamp(); + + fgTIMESTAMP& operator = ( const fgTIMESTAMP& t ); + + friend fgTIMESTAMP operator + (const fgTIMESTAMP& t, const long& m); + friend long operator - (const fgTIMESTAMP& a, const fgTIMESTAMP& b); + + inline long get_seconds() const { return seconds; } + inline long get_millis() const { return millis; } +}; + +inline fgTIMESTAMP::fgTIMESTAMP() { +} + +inline fgTIMESTAMP::fgTIMESTAMP( const long s, const long m ) { + seconds = s; + millis = m; +} + +inline fgTIMESTAMP::~fgTIMESTAMP() { +} + +inline fgTIMESTAMP& fgTIMESTAMP::operator = (const fgTIMESTAMP& t) +{ + seconds = t.seconds; + millis = t.millis; + return *this; +} + +inline void fgTIMESTAMP::stamp() { +#if defined( WIN32 ) + unsigned int t; + t = timeGetTime(); + seconds = 0; + millis = t; +#elif defined( HAVE_GETTIMEOFDAY ) + struct timeval current; + struct timezone tz; + // fg_timestamp currtime; + gettimeofday(¤t, &tz); + seconds = current.tv_sec; + millis = current.tv_usec / 1000; +#elif defined( HAVE_GETLOCALTIME ) + SYSTEMTIME current; + GetLocalTime(¤t); + seconds = current.wSecond; + millis = current.wMilliseconds; +#elif defined( HAVE_FTIME ) + struct timeb current; + ftime(¤t); + seconds = current.time; + millis = current.millitm; +#else +# error Port me +#endif +} + +// difference between time stamps in milliseconds +inline fgTIMESTAMP operator + (const fgTIMESTAMP& t, const long& m) { +#ifdef WIN32 + return fgTIMESTAMP( 0, t.millis + m ); +#else + return fgTIMESTAMP( t.seconds + ( t.millis + m ) / 1000, + ( t.millis + m ) % 1000 ); +#endif +} + +// difference between time stamps in milliseconds +inline long operator - (const fgTIMESTAMP& a, const fgTIMESTAMP& b) +{ +#if defined( WIN32 ) + return a.millis - b.millis; +#else + return 1000 * (a.seconds - b.seconds) + (a.millis - b.millis); +#endif +} + + +#endif // _TIMESTAMP_HXX + + +// $Log$ +// Revision 1.1 1998/12/05 14:21:33 curt +// Moved struct fg_timestamp to class fgTIMESTAMP and moved it's definition +// to it's own file, timestamp.hxx. +//