]> Pileus Git - lackey/blob - src/util.h
Add day and week view
[lackey] / src / util.h
1 /* Macros */
2 #define MIN(a,b) ((a) < (b) ? (a) : (b))
3 #define MAX(a,b) ((a) > (b) ? (a) : (b))
4 #define ROUND(x) ((int)((x)+0.5))
5 #define N_ELEMENTS(x) (sizeof(x)/sizeof((x)[0]))
6
7 /* Time types */
8 typedef int year_t;
9 typedef int day_t;
10
11 typedef enum {
12         JAN =  0,
13         FEB =  1,
14         MAR =  2,
15         APR =  3,
16         MAY =  4,
17         JUN =  5,
18         JUL =  6,
19         AUG =  7,
20         SEP =  8,
21         OCT =  9,
22         NOV = 10,
23         DEC = 11,
24 } month_t;
25
26 typedef enum {
27         SUN = 0,
28         MON = 1,
29         TUE = 2,
30         WED = 3,
31         THU = 4,
32         FRI = 5,
33         SAT = 6,
34 } wday_t;
35
36 /* Time functions */
37 int is_leap_year(year_t year);
38 int days_in_year(year_t year);
39 int days_in_month(year_t year, month_t month);
40 int weeks_in_month(year_t year, month_t month);
41 wday_t day_of_week(year_t year, month_t month, day_t day);
42 wday_t start_of_month(year_t year, month_t month);
43 day_t start_of_week(year_t year, month_t month, day_t day);
44 void add_days(year_t *year, month_t *month, day_t *day, int days);
45
46 /* Time to string functions */
47 const char *month_to_str(month_t month);
48 const char *month_to_string(month_t month);
49 const char *day_to_st(wday_t day);
50 const char *day_to_str(wday_t day);
51 const char *day_to_string(wday_t day);
52
53 /* Tests */
54 void test_time(void);