00001 #ifndef gCALENDAR_X_H
00002 #define gCALENDAR_X_H
00003
00004 #include <time.h>
00005 #include "gstorage.h"
00006
00007 class gDateTime : public gStorage {
00008 public:
00009 enum eKindTime {
00010 e_Now
00011 };
00012
00013 gDateTime (t_stamp aStamp=0) ;
00014 gDateTime (int iYear, int iMonth, int iDay,
00015 t_uint8 uHour=0, t_uint8 uMin=0, t_uint8 uSec=0) ;
00016 gDateTime (eKindTime aKind) ;
00017 virtual ~gDateTime ();
00018
00019
00020 int lastOpError;
00021 t_int16 year;
00022 t_uint8 month;
00023 t_uint8 day;
00024 t_uint8 hour, minu, sec;
00025 t_uint8 wday;
00026 t_uint16 yday;
00027 t_int8 isdst;
00028 static int minimumYear;
00029
00030
00031 virtual bool IsOk () ;
00032 virtual char* StorageName () ;
00033
00034
00035 virtual void Reset () ;
00036 virtual int SetError (int opError) ;
00037
00038
00039 virtual t_stamp GetTimeStamp () ;
00040 virtual bool SetTimeStamp (t_stamp aStamp) ;
00041 t_uint8 DaysOfMonth (int aYear, t_uint8 aMonth) ;
00042
00043
00044
00045 virtual gStorage* NewObject () ;
00046 virtual t_uchar* ToString (t_uchar* uBuf) ;
00047 virtual bool SaveGuts (FILE* f) ;
00048 virtual bool RestoreGuts (FILE* f) ;
00049
00050 protected:
00051 static const t_uint8 tblCalDurMonth[13];
00052
00053
00054 int thisCalCheck () ;
00055 int thisDateTimeCheck (gDateTime& aDtTm, int minYear) ;
00056 int thisDateCheck (int aYear, t_uint8 aMonth, t_uint8 aDay, int minYear) ;
00057 int thisTimeCheck (t_uint8 aHour, t_uint8 aMin, t_uint8 aSec) ;
00058
00059 int thisConvertFromStamp (t_stamp aStamp) ;
00060 int thisConvertToStamp (gDateTime& aDtTm, t_stamp& aStamp) ;
00061 int thisConvertTo_libc_tm (gDateTime& aDtTm, struct tm* pTM) ;
00062
00063 private:
00064
00065 gDateTime (gDateTime& ) ;
00066 gDateTime& operator= (gDateTime& ) ;
00067 };
00068
00069 class gTimeStamp : public gUInt {
00070 public:
00071 gTimeStamp (t_stamp aStamp=0) ;
00072 gTimeStamp (gDateTime& aDtTm) ;
00073 virtual ~gTimeStamp () ;
00074
00075
00076 short iValid;
00077
00078
00079 virtual bool IsOk () ;
00080
00081
00082
00083 bool SetStamp (t_stamp aStamp) ;
00084 virtual bool SetUInt (unsigned v) ;
00085
00086 private:
00087
00088 gTimeStamp (gTimeStamp& ) ;
00089 gTimeStamp& operator= (gTimeStamp& ) ;
00090 };
00091
00092 #endif //gCALENDAR_X_H
00093