00001 #ifndef COIN_SBTIME_H
00002 #define COIN_SBTIME_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <time.h>
00033 #ifdef _WIN32
00034 #include <sys/timeb.h>
00035
00036 struct timeval;
00037 #else
00038
00039 #include <sys/time.h>
00040 #endif // ! WIN32
00041
00042 #include <stdio.h>
00043
00044 #include <Inventor/system/inttypes.h>
00045 #include <Inventor/SbBasic.h>
00046 #include <Inventor/SbString.h>
00047
00048
00049 class COIN_DLL_API SbTime {
00050 public:
00051 SbTime(void);
00052 SbTime(const double sec);
00053 SbTime(const int32_t sec, const long usec);
00054 SbTime(const struct timeval * const tv);
00055 static SbTime getTimeOfDay(void);
00056 void setToTimeOfDay(void);
00057 static SbTime zero(void);
00058
00059
00060
00061 #ifndef _WIN32 // FIXME: #ifdef'ing on system is bad design. 20011019 mortene.
00062 static SbTime max(void);
00063 #endif // _WIN32
00064
00065 static SbTime maxTime(void);
00066 void setValue(const double sec);
00067 void setValue(const int32_t sec, const long usec);
00068 void setValue(const struct timeval * const tv);
00069 void setMsecValue(const unsigned long msec);
00070 double getValue(void) const;
00071 void getValue(time_t & sec, long & usec) const;
00072 void getValue(struct timeval * tv) const;
00073 unsigned long getMsecValue(void) const;
00074 SbString format(const char * const fmt = "%S.%i") const;
00075 #ifndef _WIN32 // FIXME: #ifdef'ing on system is bad design. 20011019 mortene.
00076 SbString formatDate(const char * const fmt = "%A, %D %r") const;
00077 #else // _WIN32
00078 SbString formatDate(const char * const fmt = "%#c") const;
00079 #endif // _WIN32
00080 SbBool parsedate(const char * const date);
00081 friend COIN_DLL_API SbTime operator +(const SbTime & t0, const SbTime & t1);
00082 friend COIN_DLL_API SbTime operator -(const SbTime & t0, const SbTime & t1);
00083 SbTime & operator +=(const SbTime & tm);
00084 SbTime & operator -=(const SbTime & tm);
00085 SbTime operator-(void) const;
00086 friend COIN_DLL_API SbTime operator *(const double s, const SbTime & tm);
00087 friend COIN_DLL_API SbTime operator *(const SbTime & tm, const double s);
00088 friend COIN_DLL_API SbTime operator /(const SbTime & tm, const double s);
00089 SbTime & operator *=(const double s);
00090 SbTime & operator /=(const double s);
00091 double operator /(const SbTime & tm) const;
00092 SbTime operator %(const SbTime & tm) const;
00093 int operator ==(const SbTime & tm) const;
00094 int operator !=(const SbTime & tm) const;
00095 SbBool operator <(const SbTime & tm) const;
00096 SbBool operator >(const SbTime & tm) const;
00097 SbBool operator <=(const SbTime & tm) const;
00098 SbBool operator >=(const SbTime & tm) const;
00099
00100 void print(FILE * fp) const;
00101
00102 private:
00103 double dtime;
00104 void addToString(SbString & str, const double val) const;
00105 };
00106
00107 COIN_DLL_API SbTime operator +(const SbTime & t0, const SbTime & t1);
00108 COIN_DLL_API SbTime operator -(const SbTime & t0, const SbTime & t1);
00109 COIN_DLL_API SbTime operator *(const double s, const SbTime & tm);
00110 COIN_DLL_API SbTime operator *(const SbTime & tm, const double s);
00111 COIN_DLL_API SbTime operator /(const SbTime & tm, const double s);
00112
00113 #endif // !COIN_SBTIME_H