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 #include <stdio.h>
00028
00029 #include <Inventor/system/inttypes.h>
00030 #include <Inventor/SbBasic.h>
00031 #include <Inventor/SbString.h>
00032
00033
00034
00035 #ifdef max
00036 #define SBTIME_UNDEF_MAX
00037 #undef max
00038 #endif // max
00039
00040
00041 class COIN_DLL_API SbTime {
00042 public:
00043 SbTime(void);
00044 SbTime(const double sec);
00045 SbTime(const int32_t sec, const long usec);
00046 SbTime(const struct timeval * const tv);
00047 static SbTime getTimeOfDay(void);
00048 void setToTimeOfDay(void);
00049 static SbTime zero(void);
00050
00051 static SbTime max(void);
00052 static SbTime maxTime(void);
00053 void setValue(const double sec);
00054 void setValue(const int32_t sec, const long usec);
00055 void setValue(const struct timeval * const tv);
00056 void setMsecValue(const unsigned long msec);
00057 double getValue(void) const;
00058 void getValue(time_t & sec, long & usec) const;
00059 void getValue(struct timeval * tv) const;
00060 unsigned long getMsecValue(void) const;
00061 SbString format(const char * const fmt = "%S.%i") const;
00062 SbString formatDate(const char * const fmt = NULL) const;
00063 SbBool parsedate(const char * const date);
00064 friend COIN_DLL_API SbTime operator +(const SbTime & t0, const SbTime & t1);
00065 friend COIN_DLL_API SbTime operator -(const SbTime & t0, const SbTime & t1);
00066 SbTime & operator +=(const SbTime & tm);
00067 SbTime & operator -=(const SbTime & tm);
00068 SbTime operator-(void) const;
00069 friend COIN_DLL_API SbTime operator *(const double s, const SbTime & tm);
00070 friend COIN_DLL_API SbTime operator *(const SbTime & tm, const double s);
00071 friend COIN_DLL_API SbTime operator /(const SbTime & tm, const double s);
00072 SbTime & operator *=(const double s);
00073 SbTime & operator /=(const double s);
00074 double operator /(const SbTime & tm) const;
00075 SbTime operator %(const SbTime & tm) const;
00076 int operator ==(const SbTime & tm) const;
00077 int operator !=(const SbTime & tm) const;
00078 SbBool operator <(const SbTime & tm) const;
00079 SbBool operator >(const SbTime & tm) const;
00080 SbBool operator <=(const SbTime & tm) const;
00081 SbBool operator >=(const SbTime & tm) const;
00082
00083 void print(FILE * fp) const;
00084
00085 private:
00086 double dtime;
00087 void addToString(SbString & str, const double val) const;
00088 };
00089
00090 COIN_DLL_API SbTime operator +(const SbTime & t0, const SbTime & t1);
00091 COIN_DLL_API SbTime operator -(const SbTime & t0, const SbTime & t1);
00092 COIN_DLL_API SbTime operator *(const double s, const SbTime & tm);
00093 COIN_DLL_API SbTime operator *(const SbTime & tm, const double s);
00094 COIN_DLL_API SbTime operator /(const SbTime & tm, const double s);
00095
00096
00097
00098
00099 #ifdef SBTIME_UNDEF_MAX
00100 #define max(a,b) (((a) > (b)) ? (a) : (b))
00101 #undef SBTIME_UNDEF_MAX
00102 #endif // SBTIME_UNDEF_MAX
00103
00104 #endif // !COIN_SBTIME_H