<MACRO>
<NAME>CAL_COMPONENT_TYPE</NAME>
#define CAL_COMPONENT_TYPE            (cal_component_get_type ())
</MACRO>
<MACRO>
<NAME>CAL_COMPONENT</NAME>
#define CAL_COMPONENT(obj)            (GTK_CHECK_CAST ((obj), CAL_COMPONENT_TYPE, CalComponent))
</MACRO>
<MACRO>
<NAME>CAL_COMPONENT_CLASS</NAME>
#define CAL_COMPONENT_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), CAL_COMPONENT_TYPE,	\
				       CalComponentClass))
</MACRO>
<MACRO>
<NAME>IS_CAL_COMPONENT</NAME>
#define IS_CAL_COMPONENT(obj)         (GTK_CHECK_TYPE ((obj), CAL_COMPONENT_TYPE))
</MACRO>
<MACRO>
<NAME>IS_CAL_COMPONENT_CLASS</NAME>
#define IS_CAL_COMPONENT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_COMPONENT_TYPE))
</MACRO>
<ENUM>
<NAME>CalComponentVType</NAME>
typedef enum {
	CAL_COMPONENT_NO_TYPE,
	CAL_COMPONENT_EVENT,
	CAL_COMPONENT_TODO,
	CAL_COMPONENT_JOURNAL,
	CAL_COMPONENT_FREEBUSY,
	CAL_COMPONENT_TIMEZONE
} CalComponentVType;
</ENUM>
<ENUM>
<NAME>CalComponentField</NAME>
typedef enum {
	CAL_COMPONENT_FIELD_CATEGORIES,		/* concatenation of the categories list */
	CAL_COMPONENT_FIELD_CLASSIFICATION,
	CAL_COMPONENT_FIELD_COMPLETED,
	CAL_COMPONENT_FIELD_DTEND,
	CAL_COMPONENT_FIELD_DTSTART,
	CAL_COMPONENT_FIELD_DUE,
	CAL_COMPONENT_FIELD_GEO,
	CAL_COMPONENT_FIELD_PERCENT,
	CAL_COMPONENT_FIELD_PRIORITY,
	CAL_COMPONENT_FIELD_SUMMARY,
	CAL_COMPONENT_FIELD_TRANSPARENCY,
	CAL_COMPONENT_FIELD_URL,
	CAL_COMPONENT_FIELD_HAS_ALARMS,		/* not a real field */
	CAL_COMPONENT_FIELD_ICON,		/* not a real field */
	CAL_COMPONENT_FIELD_COMPLETE,		/* not a real field */
	CAL_COMPONENT_FIELD_RECURRING,		/* not a real field */
	CAL_COMPONENT_FIELD_OVERDUE,		/* not a real field */
	CAL_COMPONENT_FIELD_COLOR,		/* not a real field */
	CAL_COMPONENT_FIELD_NUM_FIELDS
} CalComponentField;
</ENUM>
<ENUM>
<NAME>CalComponentClassification</NAME>
typedef enum {
	CAL_COMPONENT_CLASS_NONE,
	CAL_COMPONENT_CLASS_PUBLIC,
	CAL_COMPONENT_CLASS_PRIVATE,
	CAL_COMPONENT_CLASS_CONFIDENTIAL,
	CAL_COMPONENT_CLASS_UNKNOWN
} CalComponentClassification;
</ENUM>
<TYPEDEF>
<NAME>CalComponentDateTime</NAME>
typedef struct {
	/* Actual date/time value */
	struct icaltimetype *value;

	/* Timezone ID */
	const char *tzid;
} CalComponentDateTime;
</TYPEDEF>
<ENUM>
<NAME>CalComponentPeriodType</NAME>
typedef enum {
	CAL_COMPONENT_PERIOD_DATETIME,
	CAL_COMPONENT_PERIOD_DURATION
} CalComponentPeriodType;
</ENUM>
<TYPEDEF>
<NAME>CalComponentPeriod</NAME>
typedef struct {
	CalComponentPeriodType type;

	struct icaltimetype start;

	union {
		struct icaltimetype end;
		struct icaldurationtype duration;
	} u;
} CalComponentPeriod;
</TYPEDEF>
<TYPEDEF>
<NAME>CalComponentText</NAME>
typedef struct {
	/* Description string */
	const char *value;

	/* Alternate representation URI */
	const char *altrep;
} CalComponentText;
</TYPEDEF>
<ENUM>
<NAME>CalComponentTransparency</NAME>
typedef enum {
	CAL_COMPONENT_TRANSP_NONE,
	CAL_COMPONENT_TRANSP_TRANSPARENT,
	CAL_COMPONENT_TRANSP_OPAQUE,
	CAL_COMPONENT_TRANSP_UNKNOWN
} CalComponentTransparency;
</ENUM>
<STRUCT>
<NAME>CalComponentAlarm</NAME>
</STRUCT>
<STRUCT>
<NAME>CalComponent</NAME>
</STRUCT>
<STRUCT>
<NAME>CalComponentClass</NAME>
</STRUCT>
<STRUCT>
<NAME>CalComponentPrivate</NAME>
</STRUCT>
<STRUCT>
<NAME>CalComponent</NAME>
struct CalComponent {
	GtkObject object;

	/* Private data */
	CalComponentPrivate *priv;
};
</STRUCT>
<FUNCTION>
<NAME>cal_component_get_type</NAME>
<RETURNS>GtkType  </RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>cal_component_gen_uid</NAME>
<RETURNS>char  *</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>cal_component_new</NAME>
<RETURNS>CalComponent  *</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>cal_component_clone</NAME>
<RETURNS>CalComponent  *</RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_new_vtype</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentVType type
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_icalcomponent</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp, icalcomponent *icalcomp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_icalcomponent</NAME>
<RETURNS>icalcomponent  *</RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_vtype</NAME>
<RETURNS>CalComponentVType  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_as_string</NAME>
<RETURNS>char  *</RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_commit_sequence</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_uid</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char **uid
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_uid</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char *uid
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_categories_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **categ_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_categories_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *categ_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_classification</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentClassification *classif
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_classification</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentClassification classif
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_comment_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **text_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_comment_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *text_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_completed</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype **t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_completed</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype *t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_created</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype **t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_created</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype *t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_description_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **text_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_description_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *text_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_dtend</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_dtend</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_dtstamp</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype *t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_dtstamp</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype *t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_dtstart</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_dtstart</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_due</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_due</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_exdate_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **exdate_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_exdate_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *exdate_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_exrule_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **recur_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_exrule_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *recur_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_geo</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icalgeotype **geo
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_geo</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icalgeotype *geo
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_last_modified</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype **t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_last_modified</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, struct icaltimetype *t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_percent</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, int **percent
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_percent</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, int *percent
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_priority</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, int **priority
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_priority</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, int *priority
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_rdate_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **period_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_rdate_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *period_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_has_rdates</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_rrule_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **recur_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_rrule_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *recur_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_has_rrules</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_sequence</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, int **sequence
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_sequence</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, int *sequence
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_summary</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentText *summary
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_summary</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentText *summary
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_transparency</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentTransparency *transp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_transparency</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentTransparency transp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_url</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char **url
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_url</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char *url
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_pilot_id</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, unsigned long *pilot_id
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_pilot_id</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, unsigned long pilot_id
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_pilot_status</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, unsigned long *pilot_status
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_pilot_status</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, unsigned long pilot_status
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_categories_list</NAME>
<RETURNS>void  </RETURNS>
GSList *categ_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_datetime</NAME>
<RETURNS>void  </RETURNS>
CalComponentDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_exdate_list</NAME>
<RETURNS>void  </RETURNS>
GSList *exdate_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_geo</NAME>
<RETURNS>void  </RETURNS>
struct icalgeotype *geo
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_icaltimetype</NAME>
<RETURNS>void  </RETURNS>
struct icaltimetype *t
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_percent</NAME>
<RETURNS>void  </RETURNS>
int *percent
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_priority</NAME>
<RETURNS>void  </RETURNS>
int *priority
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_period_list</NAME>
<RETURNS>void  </RETURNS>
GSList *period_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_recur_list</NAME>
<RETURNS>void  </RETURNS>
GSList *recur_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_sequence</NAME>
<RETURNS>void  </RETURNS>
int *sequence
</FUNCTION>
<FUNCTION>
<NAME>cal_component_free_text_list</NAME>
<RETURNS>void  </RETURNS>
GSList *text_list
</FUNCTION>
<ENUM>
<NAME>CalComponentAlarmAction</NAME>
typedef enum {
	CAL_COMPONENT_ALARM_NONE,
	CAL_COMPONENT_ALARM_AUDIO,
	CAL_COMPONENT_ALARM_DISPLAY,
	CAL_COMPONENT_ALARM_EMAIL,
	CAL_COMPONENT_ALARM_PROCEDURE,
	CAL_COMPONENT_ALARM_UNKNOWN
} CalComponentAlarmAction;
</ENUM>
<ENUM>
<NAME>CalComponentAlarmTriggerType</NAME>
typedef enum {
	CAL_COMPONENT_ALARM_TRIGGER_RELATIVE,
	CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE
} CalComponentAlarmTriggerType;
</ENUM>
<ENUM>
<NAME>CalComponentAlarmTriggerRelated</NAME>
typedef enum {
	CAL_COMPONENT_ALARM_TRIGGER_RELATED_START,
	CAL_COMPONENT_ALARM_TRIGGER_RELATED_END
} CalComponentAlarmTriggerRelated;
</ENUM>
<TYPEDEF>
<NAME>CalComponentAlarmTrigger</NAME>
typedef struct {
	CalComponentAlarmTriggerType type;

	union {
		struct {
			struct icaldurationtype duration;
			CalComponentAlarmTriggerRelated related;
		} relative;

		struct icaltimetype absolute;
	} u;
} CalComponentAlarmTrigger;
</TYPEDEF>
<FUNCTION>
<NAME>cal_component_get_first_alarm</NAME>
<RETURNS>CalComponentAlarm  *</RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_next_alarm</NAME>
<RETURNS>CalComponentAlarm  *</RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_free</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_action</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalComponentAlarmAction *action
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_action</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalComponentAlarmAction action
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_trigger</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalComponentAlarmTrigger **trigger
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_trigger</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalComponentAlarmTrigger *trigger
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_free_trigger</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarmTrigger *trigger
</FUNCTION>
<ENUM>
<NAME>CalRecurType</NAME>
typedef enum {
	CAL_RECUR_YEARLY,
	CAL_RECUR_MONTHLY,
	CAL_RECUR_WEEKLY,
	CAL_RECUR_DAILY,
	CAL_RECUR_HOURLY,
	CAL_RECUR_MINUTELY,
	CAL_RECUR_SECONDLY
} CalRecurType;
</ENUM>
<TYPEDEF>
<NAME>CalRecurrence</NAME>
typedef struct {
	CalRecurType   type;

	int            interval;

	/* Specifies the end of the recurrence. No occurrences are generated
	   after this date. If it is 0, the event recurs forever. */
	time_t         enddate;

	/* WKST property - the week start day: 0 = Monday to 6 = Sunday. */
	gint	       week_start_day;


	/* NOTE: I've used GList's here, but it doesn't matter if we use
	   other data structures like arrays. The code should be easy to
	   change. So long as it is easy to see if the modifier is set. */

	/* For BYMONTH modifier. A list of GINT_TO_POINTERs, 0-11. */
	GList	      *bymonth;

	/* For BYWEEKNO modifier. A list of GINT_TO_POINTERs, [+-]1-53. */
	GList	      *byweekno;

	/* For BYYEARDAY modifier. A list of GINT_TO_POINTERs, [+-]1-366. */
	GList	      *byyearday;

	/* For BYMONTHDAY modifier. A list of GINT_TO_POINTERs, [+-]1-31. */
	GList	      *bymonthday;

	/* For BYDAY modifier. A list of GINT_TO_POINTERs, in pairs.
	   The first of each pair is the weekday, 0 = Monday to 6 = Sunday.
	   The second of each pair is the week number [+-]0-53. */
	GList	      *byday;

	/* For BYHOUR modifier. A list of GINT_TO_POINTERs, 0-23. */
	GList	      *byhour;

	/* For BYMINUTE modifier. A list of GINT_TO_POINTERs, 0-59. */
	GList	      *byminute;

	/* For BYSECOND modifier. A list of GINT_TO_POINTERs, 0-60. */
	GList	      *bysecond;

	/* For BYSETPOS modifier. A list of GINT_TO_POINTERs, +ve or -ve. */
	GList	      *bysetpos;
} CalRecurrence;
</TYPEDEF>
<STRUCT>
<NAME>CalObjTime</NAME>
</STRUCT>
<STRUCT>
<NAME>CalObjTime</NAME>
struct CalObjTime {
	guint16 year;
	guint8 month;		/* 0 - 11 */
	guint8 day;		/* 1 - 31 */
	guint8 hour;		/* 0 - 23 */
	guint8 minute;		/* 0 - 59 */
	guint8 second;		/* 0 - 59 (maybe 60 for leap second) */
};
</STRUCT>
<USER_FUNCTION>
<NAME>CalRecurInstanceFn</NAME>
<RETURNS>gboolean </RETURNS>
CalComponent *comp,
					 time_t        instance_start,
					 time_t        instace_end,
					 gpointer      data
</USER_FUNCTION>
<FUNCTION>
<NAME>cal_recur_generate_instances</NAME>
<RETURNS>void 	</RETURNS>
CalComponent		*comp,time_t			 start,time_t			 end,CalRecurInstanceFn	 cb,gpointer                cb_data
</FUNCTION>
<FUNCTION>
<NAME>cal_recur_from_icalrecurrencetype</NAME>
<RETURNS>CalRecurrence  *</RETURNS>
struct icalrecurrencetype *ir
</FUNCTION>
<FUNCTION>
<NAME>cal_recur_free</NAME>
<RETURNS>void  </RETURNS>
CalRecurrence *r
</FUNCTION>
<TYPEDEF>
<NAME>CalObjInstance</NAME>
typedef struct {
	char *uid;			/* UID of the object */
	time_t start;			/* Start time of instance */
	time_t end;			/* End time of instance */
} CalObjInstance;
</TYPEDEF>
<FUNCTION>
<NAME>cal_obj_instance_list_free</NAME>
<RETURNS>void  </RETURNS>
GList *list
</FUNCTION>
<TYPEDEF>
<NAME>CalAlarmInstance</NAME>
typedef struct {
	char *uid;			/* UID of object */
#if 0
	enum AlarmType type;		/* Type of alarm */
#endif
	time_t trigger;			/* Alarm trigger time */
	time_t occur;			/* Occurrence time */
} CalAlarmInstance;
</TYPEDEF>
<FUNCTION>
<NAME>cal_alarm_instance_list_free</NAME>
<RETURNS>void  </RETURNS>
GList *list
</FUNCTION>
<ENUM>
<NAME>CalObjType</NAME>
typedef enum {
	CALOBJ_TYPE_EVENT   = 1 << 0,
	CALOBJ_TYPE_TODO    = 1 << 1,
	CALOBJ_TYPE_JOURNAL = 1 << 2,
	CALOBJ_TYPE_ANY     = 0x07
} CalObjType;
</ENUM>
<FUNCTION>
<NAME>cal_obj_uid_list_free</NAME>
<RETURNS>void  </RETURNS>
GList *list
</FUNCTION>
<FUNCTION>
<NAME>time_from_icaltimetype</NAME>
<RETURNS>time_t  </RETURNS>
struct icaltimetype itt
</FUNCTION>
<FUNCTION>
<NAME>time_from_isodate</NAME>
<RETURNS>time_t  </RETURNS>
char *str
</FUNCTION>
<FUNCTION>
<NAME>time_from_start_duration</NAME>
<RETURNS>time_t  </RETURNS>
time_t start, char *duration
</FUNCTION>
<FUNCTION>
<NAME>isodate_from_time_t</NAME>
<RETURNS>char    *</RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>get_time_t_hour</NAME>
<RETURNS>int  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>isodiff_to_secs</NAME>
<RETURNS>int  </RETURNS>
char *str
</FUNCTION>
<FUNCTION>
<NAME>isodiff_from_secs</NAME>
<RETURNS>char    *</RETURNS>
int secs
</FUNCTION>
<FUNCTION>
<NAME>time_add_minutes</NAME>
<RETURNS>time_t  </RETURNS>
time_t time, int minutes
</FUNCTION>
<FUNCTION>
<NAME>time_add_day</NAME>
<RETURNS>time_t  </RETURNS>
time_t time, int days
</FUNCTION>
<FUNCTION>
<NAME>time_add_week</NAME>
<RETURNS>time_t  </RETURNS>
time_t time, int weeks
</FUNCTION>
<FUNCTION>
<NAME>time_add_month</NAME>
<RETURNS>time_t  </RETURNS>
time_t time, int months
</FUNCTION>
<FUNCTION>
<NAME>time_add_year</NAME>
<RETURNS>time_t  </RETURNS>
time_t time, int years
</FUNCTION>
<FUNCTION>
<NAME>format_simple_hour</NAME>
<RETURNS>char  *</RETURNS>
int hour, int use_am_pm
</FUNCTION>
<FUNCTION>
<NAME>time_days_in_month</NAME>
<RETURNS>int  </RETURNS>
int year, int month
</FUNCTION>
<FUNCTION>
<NAME>time_from_day</NAME>
<RETURNS>time_t  </RETURNS>
int year, int month, int day
</FUNCTION>
<FUNCTION>
<NAME>time_day_hour</NAME>
<RETURNS>time_t  </RETURNS>
time_t t, int hour
</FUNCTION>
<FUNCTION>
<NAME>time_year_begin</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_year_end</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_month_begin</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_month_end</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_week_begin</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_week_end</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_day_begin</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_day_end</NAME>
<RETURNS>time_t  </RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>parse_date</NAME>
<RETURNS>time_t  </RETURNS>
char *str
</FUNCTION>
<FUNCTION>
<NAME>print_time_t</NAME>
<RETURNS>void  </RETURNS>
time_t t
</FUNCTION>
