cpl_time.h
Go to the documentation of this file.00001
00002
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 #ifndef _CPL_TIME_H_
00030 #define _CPL_TIME_H_
00031
00032
00033
00034
00035 #include <time.h>
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef USE_YWEEK_U
00044 # ifndef USE_YWEEK_V
00045 # ifndef USE_YWEEK_W
00046 # define USE_YWEEK_W
00047 # endif
00048 # endif
00049 #endif
00050
00051 #define is_leap_year(yyyy) ((((yyyy)%400))?(((yyyy)%100)?(((yyyy)%4)?0:1):0):1)
00052
00053
00054 typedef struct _ac_maxval
00055 {
00056 int yweek;
00057 int yday;
00058 int ywday;
00059 int mweek;
00060 int mday;
00061 int mwday;
00062 } ac_maxval_t, *ac_maxval_p;
00063
00064 typedef struct _ac_tm
00065 {
00066 time_t time;
00067 struct tm t;
00068 int mweek;
00069 int yweek;
00070 int ywday;
00071 int mwday;
00072 ac_maxval_p mv;
00073 } ac_tm_t, *ac_tm_p;
00074
00075 ac_tm_p ac_tm_new(void);
00076
00077 int ac_tm_set_time(ac_tm_p, time_t);
00078
00079 int ac_tm_reset(ac_tm_p);
00080 int ac_tm_free(ac_tm_p);
00081
00082 int ac_get_mweek(struct tm*);
00083 int ac_get_yweek(struct tm*);
00084 ac_maxval_p ac_get_maxval(ac_tm_p);
00085 int ac_get_wkst(void);
00086
00087 int ac_print(ac_tm_p);
00088
00089
00090
00091
00092
00093
00094
00095 #define FREQ_NOFREQ 0
00096 #define FREQ_YEARLY 1
00097 #define FREQ_MONTHLY 2
00098 #define FREQ_WEEKLY 3
00099 #define FREQ_DAILY 4
00100
00101 #define WDAY_SU 0
00102 #define WDAY_MO 1
00103 #define WDAY_TU 2
00104 #define WDAY_WE 3
00105 #define WDAY_TH 4
00106 #define WDAY_FR 5
00107 #define WDAY_SA 6
00108 #define WDAY_NU 7
00109
00110 #define TSW_TSET 1
00111 #define TSW_RSET 2
00112
00113 typedef struct _tr_byxxx
00114 {
00115 int nr;
00116 int *xxx;
00117 int *req;
00118 } tr_byxxx_t, *tr_byxxx_p;
00119
00120 typedef struct _tmrec
00121 {
00122 time_t dtstart;
00123 struct tm ts;
00124 time_t dtend;
00125 time_t duration;
00126 time_t until;
00127 int freq;
00128 int interval;
00129 tr_byxxx_p byday;
00130 tr_byxxx_p bymday;
00131 tr_byxxx_p byyday;
00132 tr_byxxx_p bymonth;
00133 tr_byxxx_p byweekno;
00134 int wkst;
00135 } tmrec_t, *tmrec_p;
00136
00137 typedef struct _tr_res
00138 {
00139 int flag;
00140 time_t rest;
00141 } tr_res_t, *tr_res_p;
00142
00143 tr_byxxx_p tr_byxxx_new(void);
00144 int tr_byxxx_init(tr_byxxx_p, int);
00145 int tr_byxxx_free(tr_byxxx_p);
00146
00147 tmrec_p tmrec_new(void);
00148 int tmrec_free(tmrec_p);
00149
00150 int tr_parse_dtstart(tmrec_p, char*);
00151 int tr_parse_dtend(tmrec_p, char*);
00152 int tr_parse_duration(tmrec_p, char*);
00153 int tr_parse_until(tmrec_p, char*);
00154 int tr_parse_freq(tmrec_p, char*);
00155 int tr_parse_interval(tmrec_p, char*);
00156 int tr_parse_byday(tmrec_p, char*);
00157 int tr_parse_bymday(tmrec_p, char*);
00158 int tr_parse_byyday(tmrec_p, char*);
00159 int tr_parse_bymonth(tmrec_p, char*);
00160 int tr_parse_byweekno(tmrec_p, char*);
00161 int tr_parse_wkst(tmrec_p, char*);
00162
00163 int tr_print(tmrec_p);
00164 time_t ic_parse_datetime(char*,struct tm*);
00165 time_t ic_parse_duration(char*);
00166
00167 tr_byxxx_p ic_parse_byday(char*);
00168 tr_byxxx_p ic_parse_byxxx(char*);
00169 int ic_parse_wkst(char*);
00170
00171 int check_tmrec(tmrec_p, ac_tm_p, tr_res_p);
00172
00173
00174 #endif
00175