1 /* Copyright(c) 1994  Danny Sadinoff
2   See section COPYING for conditions for redistribution
3 */
4 #ifndef __GREG__
5 #define __GREG__
6 
7 #define LEAP(x) (!((x) % 4) && ( ((x) % 100) || !((x) % 400)))
8 #define DAYS_IN(x) (LEAP((x))?366:365)
9 
10 #define JAN 1
11 #define FEB 2
12 #define MAR 3
13 #define APR 4
14 #define MAY 5
15 #define JUN 6
16 #define JUL 7
17 #define AUG 8
18 #define SEP 9
19 #define OCT 10
20 #define NOV 11
21 #define DEC 12
22 
23 #define SUN 0
24 #define MON 1
25 #define TUE 2
26 #define WED 3
27 #define THU 4
28 #define FRI 5
29 #define SAT 6
30 
31 extern const char * eMonths[];
32 extern int MonthLengths[][13] ;
33 extern const char * DayNames[] ;
34 extern const char * ShortDayNames[];
35 
36 typedef struct dateStruct {
37     int mm;	/* months: jan=1, DEC = 12 */
38     int dd;	/* day of month 1,31 */
39     int yy;	/* years since year 1 BCE i.e. -1 = 2 BCE */
40 } date_t;
41 
42 int dayOfYear( date_t );
43 long greg2abs( date_t );
44 date_t abs2greg(long);
45 void decDate(date_t *, long);
46 void incDate(date_t *, long);
47 int dayOfWeek(date_t);
48 void setDate(date_t *);
49 long day_on_or_before(int,long);
50 #endif
51