<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_STATUS,
	CAL_COMPONENT_FIELD_COMPONENT,		/* not a real field */
#if 0
	CAL_COMPONENT_FIELD_LOCATION,
#endif
	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>
<ENUM>
<NAME>CalComponentRangeType</NAME>
typedef enum {
	CAL_COMPONENT_RANGE_SINGLE,
	CAL_COMPONENT_RANGE_THISPRIOR,
	CAL_COMPONENT_RANGE_THISFUTURE,
} CalComponentRangeType;
</ENUM>
<TYPEDEF>
<NAME>CalComponentRange</NAME>
typedef struct {
	CalComponentRangeType type;
	
	CalComponentDateTime datetime;
} CalComponentRange;
</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>
<TYPEDEF>
<NAME>CalComponentAttendee</NAME>
typedef struct {
	const char *value;
	
	const char *member;
	icalparameter_cutype cutype;
	icalparameter_role role;
	icalparameter_partstat status;
	gboolean rsvp;
	
	const char *delto;
	const char *delfrom;
	const char *sentby;
	const char *cn;
	const char *language;
} CalComponentAttendee;
</TYPEDEF>
<TYPEDEF>
<NAME>CalComponentOrganizer</NAME>
typedef struct {
	const char *value;
	const char *sentby;
	const char *cn;
	const char *language;
} CalComponentOrganizer;
</TYPEDEF>
<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_rescan</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_strip_errors</NAME>
<RETURNS>void  </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_abort_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</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char **categories
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_categories</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char *categories
</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_contact_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **text_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_contact_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *text_list
</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_has_exdates</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_exrule_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **recur_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_exrule_property_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_has_exrules</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_has_exceptions</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</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_organizer</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentOrganizer *organizer
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_organizer</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentOrganizer *organizer
</FUNCTION>
<FUNCTION>
<NAME>cal_component_has_organizer</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</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_recurid</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentRange *recur_id
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_recurid</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentRange *recur_id
</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_get_rrule_property_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_has_recurrences</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_has_simple_recurrence</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_status</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, icalproperty_status *status
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_status</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, icalproperty_status status
</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_attendee_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList **attendee_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_attendee_list</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, GSList *attendee_list
</FUNCTION>
<FUNCTION>
<NAME>cal_component_has_attendees</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_location</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char **location
</FUNCTION>
<FUNCTION>
<NAME>cal_component_set_location</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char *location
</FUNCTION>
<FUNCTION>
<NAME>cal_component_event_dates_match</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp1, CalComponent *comp2
</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>
<FUNCTION>
<NAME>cal_component_free_attendee_list</NAME>
<RETURNS>void  </RETURNS>
GSList *attendee_list
</FUNCTION>
<STRUCT>
<NAME>CalComponentAlarm</NAME>
</STRUCT>
<TYPEDEF>
<NAME>CalAlarmInstance</NAME>
typedef struct {
	/* UID of the alarm that triggered */
	const char *auid;

	/* Trigger time, i.e. "5 minutes before the appointment" */
	time_t trigger;

	/* Actual event occurrence to which this trigger corresponds */
	time_t occur_start;
	time_t occur_end;
} CalAlarmInstance;
</TYPEDEF>
<TYPEDEF>
<NAME>CalComponentAlarms</NAME>
typedef struct {
	/* The actual component */
	CalComponent *comp;

	/* List of CalAlarmInstance structures */
	GSList *alarms;
} CalComponentAlarms;
</TYPEDEF>
<ENUM>
<NAME>CalAlarmAction</NAME>
typedef enum {
	CAL_ALARM_NONE,
	CAL_ALARM_AUDIO,
	CAL_ALARM_DISPLAY,
	CAL_ALARM_EMAIL,
	CAL_ALARM_PROCEDURE,
	CAL_ALARM_UNKNOWN
} CalAlarmAction;
</ENUM>
<ENUM>
<NAME>CalAlarmTriggerType</NAME>
typedef enum {
	CAL_ALARM_TRIGGER_NONE,
	CAL_ALARM_TRIGGER_RELATIVE_START,
	CAL_ALARM_TRIGGER_RELATIVE_END,
	CAL_ALARM_TRIGGER_ABSOLUTE
} CalAlarmTriggerType;
</ENUM>
<TYPEDEF>
<NAME>CalAlarmTrigger</NAME>
typedef struct {
	CalAlarmTriggerType type;

	union {
		struct icaldurationtype rel_duration;
		struct icaltimetype abs_time;
	} u;
} CalAlarmTrigger;
</TYPEDEF>
<TYPEDEF>
<NAME>CalAlarmRepeat</NAME>
typedef struct {
	/* Number of extra repetitions, zero for none */
	int repetitions;

	/* Interval between repetitions */
	struct icaldurationtype duration;
} CalAlarmRepeat;
</TYPEDEF>
<FUNCTION>
<NAME>cal_component_has_alarms</NAME>
<RETURNS>gboolean  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_add_alarm</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, CalComponentAlarm *alarm
</FUNCTION>
<FUNCTION>
<NAME>cal_component_remove_alarm</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp, const char *auid
</FUNCTION>
<FUNCTION>
<NAME>cal_component_remove_all_alarms</NAME>
<RETURNS>void  </RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_alarm_uids</NAME>
<RETURNS>GList  *</RETURNS>
CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>cal_component_get_alarm</NAME>
<RETURNS>CalComponentAlarm  *</RETURNS>
CalComponent *comp, const char *auid
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarms_free</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarms *alarms
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_new</NAME>
<RETURNS>CalComponentAlarm  *</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_clone</NAME>
<RETURNS>CalComponentAlarm  *</RETURNS>
CalComponentAlarm *alarm
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_free</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_uid</NAME>
<RETURNS>const char  *</RETURNS>
CalComponentAlarm *alarm
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_action</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalAlarmAction *action
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_action</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalAlarmAction action
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_attach</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, icalattach **attach
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_attach</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, icalattach *attach
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_description</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalComponentText *description
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_description</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalComponentText *description
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_repeat</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalAlarmRepeat *repeat
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_repeat</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalAlarmRepeat repeat
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_trigger</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalAlarmTrigger *trigger
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_set_trigger</NAME>
<RETURNS>void  </RETURNS>
CalComponentAlarm *alarm, CalAlarmTrigger trigger
</FUNCTION>
<FUNCTION>
<NAME>cal_component_alarm_get_icalcomponent</NAME>
<RETURNS>icalcomponent  *</RETURNS>
CalComponentAlarm *alarm
</FUNCTION>
<USER_FUNCTION>
<NAME>CalRecurInstanceFn</NAME>
<RETURNS>gboolean </RETURNS>
CalComponent *comp,
					 time_t        instance_start,
					 time_t        instance_end,
					 gpointer      data
</USER_FUNCTION>
<USER_FUNCTION>
<NAME>CalRecurResolveTimezoneFn</NAME>
<RETURNS>icaltimezone *</RETURNS>
const char   *tzid,
							 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,CalRecurResolveTimezoneFn tz_cb,gpointer		   tz_cb_data,icaltimezone		*default_timezone
</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>
<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>
<ENUM>
<NAME>CalMode</NAME>
typedef enum {
	CAL_MODE_INVALID = -1,
	CAL_MODE_LOCAL   = 1 << 0,
	CAL_MODE_REMOTE  = 1 << 1,
	CAL_MODE_ANY     = 0x07
} CalMode;
</ENUM>
<FUNCTION>
<NAME>cal_obj_uid_list_free</NAME>
<RETURNS>void  </RETURNS>
GList *list
</FUNCTION>
<FUNCTION>
<NAME>cal_util_new_top_level</NAME>
<RETURNS>icalcomponent  *</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>cal_util_generate_alarms_for_comp</NAME>
<RETURNS>CalComponentAlarms  *</RETURNS>
CalComponent *comp,time_t start,time_t end,CalRecurResolveTimezoneFn resolve_tzid,gpointer user_data,icaltimezone *default_timezone
</FUNCTION>
<FUNCTION>
<NAME>cal_util_generate_alarms_for_list</NAME>
<RETURNS>int  </RETURNS>
GList *comps,time_t start,time_t end,GSList **comp_alarms,CalRecurResolveTimezoneFn resolve_tzid,gpointer user_data,icaltimezone *default_timezone
</FUNCTION>
<FUNCTION>
<NAME>cal_util_resolve_tzid</NAME>
<RETURNS>icaltimezone  *</RETURNS>
const char *tzid, gpointer data
</FUNCTION>
<FUNCTION>
<NAME>cal_util_priority_to_string</NAME>
<RETURNS>char  *</RETURNS>
int priority
</FUNCTION>
<FUNCTION>
<NAME>cal_util_priority_from_string</NAME>
<RETURNS>int  </RETURNS>
const char *string
</FUNCTION>
<FUNCTION>
<NAME>cal_util_expand_uri</NAME>
<RETURNS>char  *</RETURNS>
char *uri, gboolean tasks
</FUNCTION>
<FUNCTION>
<NAME>cal_util_add_timezones_from_component</NAME>
<RETURNS>void  </RETURNS>
icalcomponent *vcal_comp,CalComponent *comp
</FUNCTION>
<FUNCTION>
<NAME>time_days_in_month</NAME>
<RETURNS>int 	</RETURNS>
int year, int month
</FUNCTION>
<FUNCTION>
<NAME>time_day_of_year</NAME>
<RETURNS>int 	</RETURNS>
int day, int month, int year
</FUNCTION>
<FUNCTION>
<NAME>time_day_of_week</NAME>
<RETURNS>int 	</RETURNS>
int day, int month, int year
</FUNCTION>
<FUNCTION>
<NAME>time_is_leap_year</NAME>
<RETURNS>gboolean  </RETURNS>
int year
</FUNCTION>
<FUNCTION>
<NAME>time_leap_years_up_to</NAME>
<RETURNS>int 	</RETURNS>
int year
</FUNCTION>
<FUNCTION>
<NAME>isodate_from_time_t</NAME>
<RETURNS>char    *</RETURNS>
time_t t
</FUNCTION>
<FUNCTION>
<NAME>time_from_isodate</NAME>
<RETURNS>time_t 	</RETURNS>
const char *str
</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_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>time_add_day_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, int days, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_add_week_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, int weeks, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_add_month_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, int months, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_year_begin_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_month_begin_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_week_begin_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, int week_start_day,icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_day_begin_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_day_end_with_zone</NAME>
<RETURNS>time_t 	</RETURNS>
time_t time, icaltimezone *zone
</FUNCTION>
<FUNCTION>
<NAME>time_to_gdate_with_zone</NAME>
<RETURNS>void  </RETURNS>
GDate *date, time_t time, icaltimezone *zone
</FUNCTION>
