30 #include "teca_config.h"
32 #define CALCALCS_VERSION_NUMBER 1.0
44 int ndays_reg, ndays_leap;
46 int (*c_isleap) ( int,
int * );
47 int (*c_date2jday) ( int, int, int,
int * );
48 int (*c_jday2date) ( int,
int *,
int *,
int * );
49 int (*c_dpm) ( int, int,
int * );
57 struct cccalendar *early_cal, *late_cal;
58 int year_x, month_x, day_x;
59 int year_px, month_px, day_px;
67 char *code, *longname;
71 typedef struct cccalendar calcalcs_cal;
72 typedef struct ccs_ccode ccs_country_code;
88 calcalcs_cal *ccs_init_calendar(
const char *calname );
93 void ccs_free_calendar( calcalcs_cal *calendar );
102 int ccs_date2jday( calcalcs_cal *calendar,
int year,
int month,
int day,
int *jday );
107 int ccs_jday2date( calcalcs_cal *calendar,
int jday,
int *year,
int *month,
int *day );
113 int ccs_isleap( calcalcs_cal *calendar,
int year,
int *leap );
120 int ccs_dpm( calcalcs_cal *calendar,
int year,
int month,
int *dpm );
126 int ccs_date2doy( calcalcs_cal *calendar,
int year,
int month,
int day,
int *doy );
132 int ccs_doy2date( calcalcs_cal *calendar,
int year,
int doy,
int *month,
int *day );
141 int ccs_dayssince( calcalcs_cal *calendar_orig,
int year_orig,
int month_orig,
142 int day_orig,
int ndays_since, calcalcs_cal *calendar_new,
143 int *year_new,
int *month_new,
int *day_new );
202 int ccs_set_xition_date( calcalcs_cal *calendar,
int year,
int month,
int day );
203 int ccs_get_xition_date(
const char *country_code,
int *year,
int *month,
int *day );
208 char *ccs_err_str(
int ccs_errno);
210 #define CALCALCS_ERR_NO_YEAR_ZERO -10
211 #define CALCALCS_ERR_DATE_NOT_IN_CALENDAR -11
212 #define CALCALCS_ERR_INVALID_DAY_OF_YEAR -12
213 #define CALCALCS_ERR_NOT_A_MIXED_CALENDAR -13
214 #define CALCALCS_ERR_UNKNOWN_COUNTRY_CODE -14
215 #define CALCALCS_ERR_OUT_OF_RANGE -15
216 #define CALCALCS_ERR_NULL_CALENDAR -16
217 #define CALCALCS_ERR_INVALID_CALENDAR -17
223 #define UT_ENOINIT -10
224 #define UT_EINVALID -11
240 int is_leap_year(
const char *calendar,
const char *units,
241 int year,
int &leap );
251 int year,
int month,
int &dpm );
257 int date(
double val,
int *year,
int *month,
int *day,
int *hour,
258 int *minute,
double *second,
const char *dataunits,
259 const char *calendar_name );
266 int coordinate(
int year,
int month,
int day,
int hour,
int minute,
267 double second,
const char *user_unit,
const char *calendar_name,