1 /************************************************************************
2  *  Copyright (c) 2004, Arabeyes, Nadim Shaikli
3  *
4  *  A Hijri (Islamic) to/from Gregorian (Christian) date conversion library.
5  *  This file contains various structures/prototypes to be used within the
6  *  library itself.  Some of these structs are of interest to the user others
7  *  shouldn't be.
8  *
9  * (www.arabeyes.org - under LGPL license - see COPYING file)
10  ************************************************************************/
11 
12 #ifndef _HIJRI_H
13 #define _HIJRI_H
14 
15 /* User-viewable Date structure */
16 typedef struct
17 {
18     int day;		/* Day */
19     int month;		/* Month */
20     int year;		/* Year */
21     int weekday;        /* Day of the week (0:Sunday, 1:Monday...) */
22     int frm_numdays;    /* Number of days in specified input  month */
23     int to_numdays;     /* Number of days in resulting output month */
24     int to_numdays2;    /* Number of days in resulting output month+1 */
25     char *units;	/* Units used to denote before/after epoch */
26     char *frm_dname;	/* Converting from - Name of day */
27     char *frm_mname;	/* Converting from - Name of month */
28     char *frm_dname_sh;	/* Converting from - Name of day   in short format */
29     char *frm_mname_sh;	/* Converting from - Name of month in short format */
30     char *to_dname;	/* Converting to   - Name of day */
31     char *to_mname;	/* Converting to   - Name of month */
32     char *to_mname2;	/* Converting to   - Name of month+1 */
33     char *to_dname_sh;	/* Converting to   - Name of day   in short format */
34     char *to_mname_sh;	/* Converting to   - Name of month in short format */
35     char **event;	/* Important event pertaining to date at hand */
36 } sDate;
37 
38 /* Table populated structure */
39 typedef struct
40 {
41     int day;
42     int month;
43     char *event;
44 } sEvent;
45 
46 /* Prototypes */
47 
48 int h_date(sDate *cdate, int day, int month, int year);
49 int g_date(sDate *cdate, int day, int month, int year);
50 
51 int G2H(sDate *cdate, int yg, int mg, int dg);
52 int H2G(sDate *cdate, int yh, int mh, int dh);
53 
54 int g_absolute(int day, int month, int year);
55 int g_numdays(int month, int year);
56 
57 int fill_datestruct(sDate *fdate, int weekday, int frm_month_num,
58 		int to_month_num, char *frm_day[], char *frm_day_short[],
59 		char *frm_month[], char *frm_month_short[], char *to_day[],
60 		char *to_day_short[], char *to_month[], char *to_month_short[],
61 		sEvent *farr_table, int farr_size);
62 
63 #endif  /* _HIJRI_H */
64