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