## ECalComponent ECalComponent |

## Synopsis

                        ECalComponent;
                        ECalComponentId;
    enum                ECalComponentVType;
    enum                ECalComponentField;
    enum                ECalComponentClassification;
                        ECalComponentDateTime;
    enum                ECalComponentPeriodType;
                        ECalComponentPeriod;
    enum                ECalComponentRangeType;
                        ECalComponentRange;
                        ECalComponentText;
    enum                ECalComponentTransparency;
                        ECalComponentAttendee;
                        ECalComponentOrganizer;
    char *              e_cal_component_gen_uid             (void);
    ECalComponent *     e_cal_component_new                 (void);
    ECalComponent *     e_cal_component_new_from_string     (const char *calobj);
    ECalComponent *     e_cal_component_clone               (ECalComponent *comp);
    void                e_cal_component_set_new_vtype       (ECalComponent *comp,
                                                             ECalComponentVType type);
    gboolean            e_cal_component_set_icalcomponent   (ECalComponent *comp,
                                                             icalcomponent *icalcomp);
    icalcomponent *     e_cal_component_get_icalcomponent   (ECalComponent *comp);
    void                e_cal_component_rescan              (ECalComponent *comp);
    void                e_cal_component_strip_errors        (ECalComponent *comp);
    ECalComponentVType  e_cal_component_get_vtype           (ECalComponent *comp);
    char *              e_cal_component_get_as_string       (ECalComponent *comp);
    void                e_cal_component_commit_sequence     (ECalComponent *comp);
    void                e_cal_component_abort_sequence      (ECalComponent *comp);
    void                e_cal_component_get_uid             (ECalComponent *comp,
                                                             const char **uid);
    void                e_cal_component_set_uid             (ECalComponent *comp,
                                                             const char *uid);
    ECalComponentId *   e_cal_component_get_id              (ECalComponent *comp);
    void                e_cal_component_free_id             (ECalComponentId *id);
    void                e_cal_component_get_categories      (ECalComponent *comp,
                                                             const char **categories);
    void                e_cal_component_set_categories      (ECalComponent *comp,
                                                             const char *categories);
    void                e_cal_component_get_categories_list (ECalComponent *comp,
                                                             GSList **categ_list);
    void                e_cal_component_set_categories_list (ECalComponent *comp,
                                                             GSList *categ_list);
    void                e_cal_component_get_classification  (ECalComponent *comp,
                                                             ECalComponentClassification *classif);
    void                e_cal_component_set_classification  (ECalComponent *comp,
                                                             ECalComponentClassification classif);
    void                e_cal_component_get_comment_list    (ECalComponent *comp,
                                                             GSList **text_list);
    void                e_cal_component_set_comment_list    (ECalComponent *comp,
                                                             GSList *text_list);
    void                e_cal_component_get_completed       (ECalComponent *comp,
                                                             struct icaltimetype **t);
    void                e_cal_component_set_completed       (ECalComponent *comp,
                                                             struct icaltimetype *t);
    void                e_cal_component_get_contact_list    (ECalComponent *comp,
                                                             GSList **text_list);
    void                e_cal_component_set_contact_list    (ECalComponent *comp,
                                                             GSList *text_list);
    void                e_cal_component_get_created         (ECalComponent *comp,
                                                             struct icaltimetype **t);
    void                e_cal_component_set_created         (ECalComponent *comp,
                                                             struct icaltimetype *t);
    void                e_cal_component_get_description_list
                                                            (ECalComponent *comp,
                                                             GSList **text_list);
    void                e_cal_component_set_description_list
                                                            (ECalComponent *comp,
                                                             GSList *text_list);
    void                e_cal_component_get_dtend           (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);
    void                e_cal_component_set_dtend           (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);
    void                e_cal_component_get_dtstamp         (ECalComponent *comp,
                                                             struct icaltimetype *t);
    void                e_cal_component_set_dtstamp         (ECalComponent *comp,
                                                             struct icaltimetype *t);
    void                e_cal_component_get_dtstart         (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);
    void                e_cal_component_set_dtstart         (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);
    void                e_cal_component_get_due             (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);
    void                e_cal_component_set_due             (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);
    void                e_cal_component_get_exdate_list     (ECalComponent *comp,
                                                             GSList **exdate_list);
    void                e_cal_component_set_exdate_list     (ECalComponent *comp,
                                                             GSList *exdate_list);
    gboolean            e_cal_component_has_exdates         (ECalComponent *comp);
    void                e_cal_component_get_exrule_list     (ECalComponent *comp,
                                                             GSList **recur_list);
    void                e_cal_component_get_exrule_property_list
                                                            (ECalComponent *comp,
                                                             GSList **recur_list);
    void                e_cal_component_set_exrule_list     (ECalComponent *comp,
                                                             GSList *recur_list);
    gboolean            e_cal_component_has_exrules         (ECalComponent *comp);
    gboolean            e_cal_component_has_exceptions      (ECalComponent *comp);
    void                e_cal_component_get_geo             (ECalComponent *comp,
                                                             struct icalgeotype **geo);
    void                e_cal_component_set_geo             (ECalComponent *comp,
                                                             struct icalgeotype *geo);
    void                e_cal_component_get_last_modified   (ECalComponent *comp,
                                                             struct icaltimetype **t);
    void                e_cal_component_set_last_modified   (ECalComponent *comp,
                                                             struct icaltimetype *t);
    void                e_cal_component_get_organizer       (ECalComponent *comp,
                                                             ECalComponentOrganizer *organizer);
    void                e_cal_component_set_organizer       (ECalComponent *comp,
                                                             ECalComponentOrganizer *organizer);
    gboolean            e_cal_component_has_organizer       (ECalComponent *comp);
    void                e_cal_component_get_percent         (ECalComponent *comp,
                                                             int **percent);
    void                e_cal_component_set_percent         (ECalComponent *comp,
                                                             int *percent);
    void                e_cal_component_get_priority        (ECalComponent *comp,
                                                             int **priority);
    void                e_cal_component_set_priority        (ECalComponent *comp,
                                                             int *priority);
    void                e_cal_component_get_recurid         (ECalComponent *comp,
                                                             ECalComponentRange *recur_id);
    char *              e_cal_component_get_recurid_as_string
                                                            (ECalComponent *comp);
    void                e_cal_component_set_recurid         (ECalComponent *comp,
                                                             ECalComponentRange *recur_id);
    void                e_cal_component_get_rdate_list      (ECalComponent *comp,
                                                             GSList **period_list);
    void                e_cal_component_set_rdate_list      (ECalComponent *comp,
                                                             GSList *period_list);
    gboolean            e_cal_component_has_rdates          (ECalComponent *comp);
    void                e_cal_component_get_rrule_list      (ECalComponent *comp,
                                                             GSList **recur_list);
    void                e_cal_component_get_rrule_property_list
                                                            (ECalComponent *comp,
                                                             GSList **recur_list);
    void                e_cal_component_set_rrule_list      (ECalComponent *comp,
                                                             GSList *recur_list);
    gboolean            e_cal_component_has_rrules          (ECalComponent *comp);
    gboolean            e_cal_component_has_recurrences     (ECalComponent *comp);
    gboolean            e_cal_component_has_simple_recurrence
                                                            (ECalComponent *comp);
    gboolean            e_cal_component_is_instance         (ECalComponent *comp);
    void                e_cal_component_get_sequence        (ECalComponent *comp,
                                                             int **sequence);
    void                e_cal_component_set_sequence        (ECalComponent *comp,
                                                             int *sequence);
    void                e_cal_component_get_status          (ECalComponent *comp,
                                                             icalproperty_status *status);
    void                e_cal_component_set_status          (ECalComponent *comp,
                                                             icalproperty_status status);
    void                e_cal_component_get_summary         (ECalComponent *comp,
                                                             ECalComponentText *summary);
    void                e_cal_component_set_summary         (ECalComponent *comp,
                                                             ECalComponentText *summary);
    void                e_cal_component_get_transparency    (ECalComponent *comp,
                                                             ECalComponentTransparency *transp);
    void                e_cal_component_set_transparency    (ECalComponent *comp,
                                                             ECalComponentTransparency transp);
    void                e_cal_component_get_url             (ECalComponent *comp,
                                                             const char **url);
    void                e_cal_component_set_url             (ECalComponent *comp,
                                                             const char *url);
    void                e_cal_component_get_attendee_list   (ECalComponent *comp,
                                                             GSList **attendee_list);
    void                e_cal_component_set_attendee_list   (ECalComponent *comp,
                                                             GSList *attendee_list);
    gboolean            e_cal_component_has_attendees       (ECalComponent *comp);
    void                e_cal_component_get_location        (ECalComponent *comp,
                                                             const char **location);
    void                e_cal_component_set_location        (ECalComponent *comp,
                                                             const char *location);
    void                e_cal_component_get_attachment_list (ECalComponent *comp,
                                                             GSList **attachment_list);
    void                e_cal_component_set_attachment_list (ECalComponent *comp,
                                                             GSList *attachment_list);
    gboolean            e_cal_component_has_attachments     (ECalComponent *comp);
    int                 e_cal_component_get_num_attachments (ECalComponent *comp);
    gboolean            e_cal_component_event_dates_match   (ECalComponent *comp1,
                                                             ECalComponent *comp2);
    void                e_cal_component_free_categories_list
                                                            (GSList *categ_list);
    void                e_cal_component_free_datetime       (ECalComponentDateTime *dt);
    void                e_cal_component_free_range          (ECalComponentRange *range);
    void                e_cal_component_free_exdate_list    (GSList *exdate_list);
    void                e_cal_component_free_geo            (struct icalgeotype *geo);
    void                e_cal_component_free_icaltimetype   (struct icaltimetype *t);
    void                e_cal_component_free_percent        (int *percent);
    void                e_cal_component_free_priority       (int *priority);
    void                e_cal_component_free_period_list    (GSList *period_list);
    void                e_cal_component_free_recur_list     (GSList *recur_list);
    void                e_cal_component_free_sequence       (int *sequence);
    void                e_cal_component_free_text_list      (GSList *text_list);
    void                e_cal_component_free_attendee_list  (GSList *attendee_list);
                        ECalComponentAlarm;
                        ECalComponentAlarmInstance;
                        ECalComponentAlarms;
    enum                ECalComponentAlarmAction;
    enum                ECalComponentAlarmTriggerType;
                        ECalComponentAlarmTrigger;
                        ECalComponentAlarmRepeat;
    gboolean            e_cal_component_has_alarms          (ECalComponent *comp);
    void                e_cal_component_add_alarm           (ECalComponent *comp,
                                                             ECalComponentAlarm *alarm);
    void                e_cal_component_remove_alarm        (ECalComponent *comp,
                                                             const char *auid);
    void                e_cal_component_remove_all_alarms   (ECalComponent *comp);
    GList *             e_cal_component_get_alarm_uids      (ECalComponent *comp);
    ECalComponentAlarm * e_cal_component_get_alarm          (ECalComponent *comp,
                                                             const char *auid);
    void                e_cal_component_alarms_free         (ECalComponentAlarms *alarms);
    ECalComponentAlarm * e_cal_component_alarm_new          (void);
    ECalComponentAlarm * e_cal_component_alarm_clone        (ECalComponentAlarm *alarm);
    void                e_cal_component_alarm_free          (ECalComponentAlarm *alarm);
    const char *        e_cal_component_alarm_get_uid       (ECalComponentAlarm *alarm);
    void                e_cal_component_alarm_get_action    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmAction *action);
    void                e_cal_component_alarm_set_action    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmAction action);
    void                e_cal_component_alarm_get_attach    (ECalComponentAlarm *alarm,
                                                             icalattach **attach);
    void                e_cal_component_alarm_set_attach    (ECalComponentAlarm *alarm,
                                                             icalattach *attach);
    void                e_cal_component_alarm_get_description
                                                            (ECalComponentAlarm *alarm,
                                                             ECalComponentText *description);
    void                e_cal_component_alarm_set_description
                                                            (ECalComponentAlarm *alarm,
                                                             ECalComponentText *description);
    void                e_cal_component_alarm_get_repeat    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmRepeat *repeat);
    void                e_cal_component_alarm_set_repeat    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmRepeat repeat);
    void                e_cal_component_alarm_get_trigger   (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmTrigger *trigger);
    void                e_cal_component_alarm_set_trigger   (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmTrigger trigger);
    void                e_cal_component_alarm_get_attendee_list
                                                            (ECalComponentAlarm *alarm,
                                                             GSList **attendee_list);
    void                e_cal_component_alarm_set_attendee_list
                                                            (ECalComponentAlarm *alarm,
                                                             GSList *attendee_list);
    gboolean            e_cal_component_alarm_has_attendees (ECalComponentAlarm *alarm);
    icalcomponent *     e_cal_component_alarm_get_icalcomponent
                                                            (ECalComponentAlarm *alarm);

## Object Hierarchy

      GObject
       +----ECalComponent

## Description

## Details

### ECalComponent

    typedef struct _ECalComponent ECalComponent;

### ECalComponentId

    typedef struct {
    	char *uid;
    	char *rid;
    } ECalComponentId;

### enum ECalComponentVType

    typedef enum {
    	E_CAL_COMPONENT_NO_TYPE,
    	E_CAL_COMPONENT_EVENT,
    	E_CAL_COMPONENT_TODO,
    	E_CAL_COMPONENT_JOURNAL,
    	E_CAL_COMPONENT_FREEBUSY,
    	E_CAL_COMPONENT_TIMEZONE
    } ECalComponentVType;

### enum ECalComponentField

    typedef enum {
    	E_CAL_COMPONENT_FIELD_CATEGORIES,		/* concatenation of the categories list */
    	E_CAL_COMPONENT_FIELD_CLASSIFICATION,
    	E_CAL_COMPONENT_FIELD_COMPLETED,
    	E_CAL_COMPONENT_FIELD_DTEND,
    	E_CAL_COMPONENT_FIELD_DTSTART,
    	E_CAL_COMPONENT_FIELD_DUE,
    	E_CAL_COMPONENT_FIELD_GEO,
    	E_CAL_COMPONENT_FIELD_PERCENT,
    	E_CAL_COMPONENT_FIELD_PRIORITY,
    	E_CAL_COMPONENT_FIELD_SUMMARY,
    	E_CAL_COMPONENT_FIELD_TRANSPARENCY,
    	E_CAL_COMPONENT_FIELD_URL,
    	E_CAL_COMPONENT_FIELD_HAS_ALARMS,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_ICON,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_COMPLETE,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_RECURRING,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_OVERDUE,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_COLOR,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_STATUS,
    	E_CAL_COMPONENT_FIELD_COMPONENT,		/* not a real field */
    	E_CAL_COMPONENT_FIELD_LOCATION,
    	E_CAL_COMPONENT_FIELD_NUM_FIELDS
    } ECalComponentField;

### enum ECalComponentClassification

    typedef enum {
    	E_CAL_COMPONENT_CLASS_NONE,
    	E_CAL_COMPONENT_CLASS_PUBLIC,
    	E_CAL_COMPONENT_CLASS_PRIVATE,
    	E_CAL_COMPONENT_CLASS_CONFIDENTIAL,
    	E_CAL_COMPONENT_CLASS_UNKNOWN
    } ECalComponentClassification;

### ECalComponentDateTime

    typedef struct {
    	/* Actual date/time value */
    	struct icaltimetype *value;

    	/* Timezone ID */
    	const char *tzid;
    } ECalComponentDateTime;

### enum ECalComponentPeriodType

    typedef enum {
    	E_CAL_COMPONENT_PERIOD_DATETIME,
    	E_CAL_COMPONENT_PERIOD_DURATION
    } ECalComponentPeriodType;

### ECalComponentPeriod

    typedef struct {
    	ECalComponentPeriodType type;

    	struct icaltimetype start;

    	union {
    		struct icaltimetype end;
    		struct icaldurationtype duration;
    	} u;
    } ECalComponentPeriod;

### enum ECalComponentRangeType

    typedef enum {
    	E_CAL_COMPONENT_RANGE_SINGLE,
    	E_CAL_COMPONENT_RANGE_THISPRIOR,
    	E_CAL_COMPONENT_RANGE_THISFUTURE
    } ECalComponentRangeType;

### ECalComponentRange

    typedef struct {
    	ECalComponentRangeType type;

    	ECalComponentDateTime datetime;
    } ECalComponentRange;

### ECalComponentText

    typedef struct {
    	/* Description string */
    	const char *value;

    	/* Alternate representation URI */
    	const char *altrep;
    } ECalComponentText;

### enum ECalComponentTransparency

    typedef enum {
    	E_CAL_COMPONENT_TRANSP_NONE,
    	E_CAL_COMPONENT_TRANSP_TRANSPARENT,
    	E_CAL_COMPONENT_TRANSP_OPAQUE,
    	E_CAL_COMPONENT_TRANSP_UNKNOWN
    } ECalComponentTransparency;

### ECalComponentAttendee

    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;
    } ECalComponentAttendee;

### ECalComponentOrganizer

    typedef struct {
    	const char *value;
    	const char *sentby;
    	const char *cn;
    	const char *language;
    } ECalComponentOrganizer;

### e_cal_component_gen_uid ()

    char *              e_cal_component_gen_uid             (void);

Generates a unique identifier suitable for calendar components.

Returns : | A unique identifier string. Every time this function is called a different string is returned.

### e_cal_component_new ()

    ECalComponent *     e_cal_component_new                 (void);

Creates a new empty calendar component object. Once created, you should set it from an existing icalcomponent structure by using `e_cal_component_set_icalcomponent()` or with a new empty component type by using `e_cal_component_set_new_vtype()`.

Returns : | A newly-created calendar component object.

### e_cal_component_new_from_string ()

    ECalComponent *     e_cal_component_new_from_string     (const char *calobj);

Creates a new calendar component object from the given iCalendar string.

`calobj` : | A string representation of an iCalendar component.
Returns : | A calendar component representing the given iCalendar string on success, NULL if there was an error.

### e_cal_component_clone ()

    ECalComponent *     e_cal_component_clone               (ECalComponent *comp);

Creates a new calendar component object by copying the information from another one.

`comp` : | A calendar component object.
Returns : | A newly-created calendar component with the same values as the original one.

### e_cal_component_set_new_vtype ()

    void                e_cal_component_set_new_vtype       (ECalComponent *comp,
                                                             ECalComponentVType type);

Clears any existing component data from a calendar component object and creates a new icalcomponent of the specified type for it. The only property that will be set in the new component will be its unique identifier.

`comp` : | A calendar component object.
`type` : | Type of calendar component to create.

### e_cal_component_set_icalcomponent ()

    gboolean            e_cal_component_set_icalcomponent   (ECalComponent *comp,
                                                             icalcomponent *icalcomp);

Sets the contents of a calendar component object from an icalcomponent structure. If the `comp` already had an icalcomponent set into it, it will will be freed automatically if the icalcomponent does not have a parent component itself.

Supported component types are VEVENT, VTODO, VJOURNAL, VFREEBUSY, and VTIMEZONE.

`comp` : | A calendar component object.
`icalcomp` : | An icalcomponent.
Returns : | TRUE on success, FALSE if `icalcomp` is an unsupported component type.

### e_cal_component_get_icalcomponent ()

    icalcomponent *     e_cal_component_get_icalcomponent   (ECalComponent *comp);

Queries the icalcomponent structure that a calendar component object is wrapping.

`comp` : | A calendar component object.
Returns : | An icalcomponent structure, or NULL if the `comp` has no icalcomponent set to it.

### e_cal_component_rescan ()

    void                e_cal_component_rescan              (ECalComponent *comp);

Rescans the icalcomponent being wrapped by the given calendar component. This would replace any value that was changed in the wrapped icalcomponent.

`comp` : | A calendar component object.

### e_cal_component_strip_errors ()

    void                e_cal_component_strip_errors        (ECalComponent *comp);

Strips all error messages from the calendar component. Those error messages are added to the iCalendar string representation whenever an invalid is used for one of its fields.

`comp` : | A calendar component object.

### e_cal_component_get_vtype ()

    ECalComponentVType  e_cal_component_get_vtype           (ECalComponent *comp);

Queries the type of a calendar component object.

`comp` : | A calendar component object.
Returns : | The type of the component, as defined by RFC 2445.

### e_cal_component_get_as_string ()

    char *              e_cal_component_get_as_string       (ECalComponent *comp);

Gets the iCalendar string representation of a calendar component. You should call `e_cal_component_commit_sequence()` before this function to ensure that the component's sequence number is consistent with the state of the object.

`comp` : | A calendar component.
Returns : | String representation of the calendar component according to RFC 2445.

### e_cal_component_commit_sequence ()

    void                e_cal_component_commit_sequence     (ECalComponent *comp);

Increments the sequence number property in a calendar component object if it needs it. This needs to be done when any of a number of properties listed in RFC 2445 change values, such as the start and end dates of a component.

This function must be called before calling `e_cal_component_get_as_string()` to ensure that the component is fully consistent.

`comp` : | A calendar component object.

### e_cal_component_abort_sequence ()

    void                e_cal_component_abort_sequence      (ECalComponent *comp);

Aborts the sequence change needed in the given calendar component, which means it will not require a sequence commit (via e_cal_component_commit_sequence) even if the changes done require a sequence increment.

`comp` : | A calendar component object.

### e_cal_component_get_uid ()

    void                e_cal_component_get_uid             (ECalComponent *comp,
                                                             const char **uid);

Queries the unique identifier of a calendar component object.

`comp` : | A calendar component object.
`uid` : | Return value for the UID string.

### e_cal_component_set_uid ()

    void                e_cal_component_set_uid             (ECalComponent *comp,
                                                             const char *uid);

Sets the unique identifier string of a calendar component object.

`comp` : | A calendar component object.
`uid` : | Unique identifier.

### e_cal_component_get_id ()

    ECalComponentId *   e_cal_component_get_id              (ECalComponent *comp);

Get the ID of the component as a ECalComponentId. The return value should be freed with `e_cal_component_free_id()` when you have finished with it.

`comp` : | A calendar component object.
Returns : | the id of the component

### e_cal_component_free_id ()

    void                e_cal_component_free_id             (ECalComponentId *id);

Frees the id.

`id` : | Component ID

### e_cal_component_get_categories ()

    void                e_cal_component_get_categories      (ECalComponent *comp,
                                                             const char **categories);

Queries the categories of the given calendar component. The categories are returned in the `categories` argument, which, on success, will contain a comma-separated list of all categories set in the component.

`comp` : | A calendar component object.
`categories` : | Return holder for the categories.

### e_cal_component_set_categories ()

    void                e_cal_component_set_categories      (ECalComponent *comp,
                                                             const char *categories);

Sets the list of categories for a calendar component.

`comp` : | A calendar component object.
`categories` : | Comma-separated list of categories.

### e_cal_component_get_categories_list ()

    void                e_cal_component_get_categories_list (ECalComponent *comp,
                                                             GSList **categ_list);

Queries the list of categories of a calendar component object. Each element in the returned categ_list is a string with the corresponding category.

`comp` : | A calendar component object.
`categ_list` : | Return value for the list of strings, where each string is a category. This should be freed using `e_cal_component_free_categories_list()`.

### e_cal_component_set_categories_list ()

    void                e_cal_component_set_categories_list (ECalComponent *comp,
                                                             GSList *categ_list);

Sets the list of categories of a calendar component object.

`comp` : | A calendar component object.
`categ_list` : | List of strings, one for each category.

### e_cal_component_get_classification ()

    void                e_cal_component_get_classification  (ECalComponent *comp,
                                                             ECalComponentClassification *classif);

Queries the classification of a calendar component object. If the classification property is not set on this component, this function returns E_CAL_COMPONENT_CLASS_NONE.

`comp` : | A calendar component object.
`classif` : | Return value for the classification.

### e_cal_component_set_classification ()

    void                e_cal_component_set_classification  (ECalComponent *comp,
                                                             ECalComponentClassification classif);

Sets the classification property of a calendar component object. To unset the property, specify E_CAL_COMPONENT_CLASS_NONE for `classif`.

`comp` : | A calendar component object.
`classif` : | Classification to use.

### e_cal_component_get_comment_list ()

    void                e_cal_component_get_comment_list    (ECalComponent *comp,
                                                             GSList **text_list);

Queries the comments of a calendar component object. The comment property can appear several times inside a calendar component, and so a list of ECalComponentText is returned.

`comp` : | A calendar component object.
`text_list` : | Return value for the comment properties and their parameters, as a list of ECalComponentText structures. This should be freed using the `e_cal_component_free_text_list()` function.

### e_cal_component_set_comment_list ()

    void                e_cal_component_set_comment_list    (ECalComponent *comp,
                                                             GSList *text_list);

Sets the comments of a calendar component object. The comment property can appear several times inside a calendar component, and so a list of ECalComponentText structures is used.

`comp` : | A calendar component object.
`text_list` : | List of ECalComponentText structures.

### e_cal_component_get_completed ()

    void                e_cal_component_get_completed       (ECalComponent *comp,
                                                             struct icaltimetype **t);

Queries the date at which a calendar compoment object was completed.

`comp` : | A calendar component object.
`t` : | Return value for the completion date. This should be freed using the `e_cal_component_free_icaltimetype()` function.

### e_cal_component_set_completed ()

    void                e_cal_component_set_completed       (ECalComponent *comp,
                                                             struct icaltimetype *t);

Sets the date at which a calendar component object was completed.

`comp` : | A calendar component object.
`t` : | Value for the completion date.

### e_cal_component_get_contact_list ()

    void                e_cal_component_get_contact_list    (ECalComponent *comp,
                                                             GSList **text_list);

Queries the contact of a calendar component object. The contact property can appear several times inside a calendar component, and so a list of ECalComponentText is returned.

`comp` : | A calendar component object.
`text_list` : | Return value for the contact properties and their parameters, as a list of ECalComponentText structures. This should be freed using the `e_cal_component_free_text_list()` function.

### e_cal_component_set_contact_list ()

    void                e_cal_component_set_contact_list    (ECalComponent *comp,
                                                             GSList *text_list);

Sets the contact of a calendar component object. The contact property can appear several times inside a calendar component, and so a list of ECalComponentText structures is used.

`comp` : | A calendar component object.
`text_list` : | List of ECalComponentText structures.

### e_cal_component_get_created ()

    void                e_cal_component_get_created         (ECalComponent *comp,
                                                             struct icaltimetype **t);

Queries the date in which a calendar component object was created in the calendar store.

`comp` : | A calendar component object.
`t` : | Return value for the creation date. This should be freed using the `e_cal_component_free_icaltimetype()` function.

### e_cal_component_set_created ()

    void                e_cal_component_set_created         (ECalComponent *comp,
                                                             struct icaltimetype *t);

Sets the date in which a calendar component object is created in the calendar store. This should only be used inside a calendar store application, i.e. not by calendar user agents.

`comp` : | A calendar component object.
`t` : | Value for the creation date.

### e_cal_component_get_description_list ()

    void                e_cal_component_get_description_list
                                                            (ECalComponent *comp,
                                                             GSList **text_list);

Queries the description of a calendar component object. Journal components may have more than one description, and as such this function returns a list of ECalComponentText structures. All other types of components can have at most one description.

`comp` : | A calendar component object.
`text_list` : | Return value for the description properties and their parameters, as a list of ECalComponentText structures. This should be freed using the `e_cal_component_free_text_list()` function.

### e_cal_component_set_description_list ()

    void                e_cal_component_set_description_list
                                                            (ECalComponent *comp,
                                                             GSList *text_list);

Sets the description of a calendar component object. Journal components may have more than one description, and as such this function takes in a list of ECalComponentDescription structures. All other types of components can have at most one description.

`comp` : | A calendar component object.
`text_list` : | List of ECalComponentSummary structures.

### e_cal_component_get_dtend ()

    void                e_cal_component_get_dtend           (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);

Queries the date/time end of a calendar component object.

`comp` : | A calendar component object.
`dt` : | Return value for the date/time end. This should be freed with the `e_cal_component_free_datetime()` function.

### e_cal_component_set_dtend ()

    void                e_cal_component_set_dtend           (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);

Sets the date/time end property of a calendar component object.

`comp` : | A calendar component object.
`dt` : | End date/time.

### e_cal_component_get_dtstamp ()

    void                e_cal_component_get_dtstamp         (ECalComponent *comp,
                                                             struct icaltimetype *t);

Queries the date/timestamp property of a calendar component object, which is the last time at which the object was modified by a calendar user agent.

`comp` : | A calendar component object.
`t` : | A value for the date/timestamp.

### e_cal_component_set_dtstamp ()

    void                e_cal_component_set_dtstamp         (ECalComponent *comp,
                                                             struct icaltimetype *t);

Sets the date/timestamp of a calendar component object. This should be called whenever a calendar user agent makes a change to a component's properties.

`comp` : | A calendar component object.
`t` : | Date/timestamp value.

### e_cal_component_get_dtstart ()

    void                e_cal_component_get_dtstart         (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);

Queries the date/time start of a calendar component object.

`comp` : | A calendar component object.
`dt` : | Return value for the date/time start. This should be freed with the `e_cal_component_free_datetime()` function.

### e_cal_component_set_dtstart ()

    void                e_cal_component_set_dtstart         (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);

Sets the date/time start property of a calendar component object.

`comp` : | A calendar component object.
`dt` : | Start date/time.

### e_cal_component_get_due ()

    void                e_cal_component_get_due             (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);

Queries the due date/time of a calendar component object.

`comp` : | A calendar component object.
`dt` : | Return value for the due date/time. This should be freed with the `e_cal_component_free_datetime()` function.

### e_cal_component_set_due ()

    void                e_cal_component_set_due             (ECalComponent *comp,
                                                             ECalComponentDateTime *dt);

Sets the due date/time property of a calendar component object.

`comp` : | A calendar component object.
`dt` : | End date/time.

### e_cal_component_get_exdate_list ()

    void                e_cal_component_get_exdate_list     (ECalComponent *comp,
                                                             GSList **exdate_list);

Queries the list of exception date properties in a calendar component object.

`comp` : | A calendar component object.
`exdate_list` : | Return value for the list of exception dates, as a list of ECalComponentDateTime structures. This should be freed using the `e_cal_component_free_exdate_list()` function.

### e_cal_component_set_exdate_list ()

    void                e_cal_component_set_exdate_list     (ECalComponent *comp,
                                                             GSList *exdate_list);

Sets the list of exception dates in a calendar component object.

`comp` : | A calendar component object.
`exdate_list` : | List of ECalComponentDateTime structures.

### e_cal_component_has_exdates ()

    gboolean            e_cal_component_has_exdates         (ECalComponent *comp);

Queries whether a calendar component object has any exception dates defined for it.

`comp` : | A calendar component object.
Returns : | TRUE if the component has exception dates, FALSE otherwise.

### e_cal_component_get_exrule_list ()

    void                e_cal_component_get_exrule_list     (ECalComponent *comp,
                                                             GSList **recur_list);

Queries the list of exception rule properties of a calendar component object.

`comp` : | A calendar component object.
`recur_list` : | List of exception rules as struct icalrecurrencetype structures. This should be freed using the `e_cal_component_free_recur_list()` function.

### e_cal_component_get_exrule_property_list ()

    void                e_cal_component_get_exrule_property_list
                                                            (ECalComponent *comp,
                                                             GSList **recur_list);

Queries the list of exception rule properties of a calendar component object.

`comp` : | A calendar component object.
`recur_list` : | Returns a list of exception rule properties.

### e_cal_component_set_exrule_list ()

    void                e_cal_component_set_exrule_list     (ECalComponent *comp,
                                                             GSList *recur_list);

Sets the list of exception rules in a calendar component object.

`comp` : | A calendar component object.
`recur_list` : | List of struct icalrecurrencetype structures.

### e_cal_component_has_exrules ()

    gboolean            e_cal_component_has_exrules         (ECalComponent *comp);

Queries whether a calendar component object has any exception rules defined for it.

`comp` : | A calendar component object.
Returns : | TRUE if the component has exception rules, FALSE otherwise.

### e_cal_component_has_exceptions ()

    gboolean            e_cal_component_has_exceptions      (ECalComponent *comp);

Queries whether a calendar component object has any exception dates or exception rules.

`comp` : | A calendar component object
Returns : | TRUE if the component has exceptions, FALSE otherwise.

### e_cal_component_get_geo ()

    void                e_cal_component_get_geo             (ECalComponent *comp,
                                                             struct icalgeotype **geo);

Gets the geographic position property of a calendar component object.

`comp` : | A calendar component object.
`geo` : | Return value for the geographic position property. This should be freed using the `e_cal_component_free_geo()` function.

### e_cal_component_set_geo ()

    void                e_cal_component_set_geo             (ECalComponent *comp,
                                                             struct icalgeotype *geo);

Sets the geographic position property on a calendar component object.

`comp` : | A calendar component object.
`geo` : | Value for the geographic position property.

### e_cal_component_get_last_modified ()

    void                e_cal_component_get_last_modified   (ECalComponent *comp,
                                                             struct icaltimetype **t);

Queries the time at which a calendar component object was last modified in the calendar store.

`comp` : | A calendar component object.
`t` : | Return value for the last modified time value.

### e_cal_component_set_last_modified ()

    void                e_cal_component_set_last_modified   (ECalComponent *comp,
                                                             struct icaltimetype *t);

Sets the time at which a calendar component object was last stored in the calendar store. This should not be called by plain calendar user agents.

`comp` : | A calendar component object.
`t` : | Value for the last time modified.

### e_cal_component_get_organizer ()

    void                e_cal_component_get_organizer       (ECalComponent *comp,
                                                             ECalComponentOrganizer *organizer);

Queries the organizer property of a calendar component object

`comp` : | A calendar component object
`organizer` : | A value for the organizer

### e_cal_component_set_organizer ()

    void                e_cal_component_set_organizer       (ECalComponent *comp,
                                                             ECalComponentOrganizer *organizer);

Sets the organizer of a calendar component object

`comp` : | A calendar component object.
`organizer` : | Value for the organizer property

### e_cal_component_has_organizer ()

    gboolean            e_cal_component_has_organizer       (ECalComponent *comp);

Check whether a calendar component object has an organizer or not.

`comp` : | A calendar component object.
Returns : | TRUE if there is an organizer, FALSE otherwise.

### e_cal_component_get_percent ()

    void                e_cal_component_get_percent         (ECalComponent *comp,
                                                             int **percent);

Queries the percent-complete property of a calendar component object.

`comp` : | A calendar component object.
`percent` : | Return value for the percent-complete property. This should be freed using the `e_cal_component_free_percent()` function.

### e_cal_component_set_percent ()

    void                e_cal_component_set_percent         (ECalComponent *comp,
                                                             int *percent);

Sets the percent-complete property of a calendar component object.

`comp` : | A calendar component object.
`percent` : | Value for the percent-complete property.

### e_cal_component_get_priority ()

    void                e_cal_component_get_priority        (ECalComponent *comp,
                                                             int **priority);

Queries the priority property of a calendar component object.

`comp` : | A calendar component object.
`priority` : | Return value for the priority property. This should be freed using the `e_cal_component_free_priority()` function.

### e_cal_component_set_priority ()

    void                e_cal_component_set_priority        (ECalComponent *comp,
                                                             int *priority);

Sets the priority property of a calendar component object.

`comp` : | A calendar component object.
`priority` : | Value for the priority property.

### e_cal_component_get_recurid ()

    void                e_cal_component_get_recurid         (ECalComponent *comp,
                                                             ECalComponentRange *recur_id);

Queries the recurrence id property of a calendar component object.

`comp` : | A calendar component object.
`recur_id` : | Return value for the recurrence id property

### e_cal_component_get_recurid_as_string ()

    char *              e_cal_component_get_recurid_as_string
                                                            (ECalComponent *comp);

Gets the recurrence ID property as a string.

`comp` : | A calendar component object.
Returns : | the recurrence ID as a string.

### e_cal_component_set_recurid ()

    void                e_cal_component_set_recurid         (ECalComponent *comp,
                                                             ECalComponentRange *recur_id);

Sets the recurrence id property of a calendar component object.

`comp` : | A calendar component object.
`recur_id` : | Value for the recurrence id property.

### e_cal_component_get_rdate_list ()

    void                e_cal_component_get_rdate_list      (ECalComponent *comp,
                                                             GSList **period_list);

Queries the list of recurrence date properties in a calendar component object.

`comp` : | A calendar component object.
`period_list` : | Return value for the list of recurrence dates, as a list of ECalComponentPeriod structures. This should be freed using the `e_cal_component_free_period_list()` function.

### e_cal_component_set_rdate_list ()

    void                e_cal_component_set_rdate_list      (ECalComponent *comp,
                                                             GSList *period_list);

Sets the list of recurrence dates in a calendar component object.

`comp` : | A calendar component object.
`period_list` : | List of ECalComponentPeriod structures.

### e_cal_component_has_rdates ()

    gboolean            e_cal_component_has_rdates          (ECalComponent *comp);

Queries whether a calendar component object has any recurrence dates defined for it.

`comp` : | A calendar component object.
Returns : | TRUE if the component has recurrence dates, FALSE otherwise.

### e_cal_component_get_rrule_list ()

    void                e_cal_component_get_rrule_list      (ECalComponent *comp,
                                                             GSList **recur_list);

Queries the list of recurrence rule properties of a calendar component object.

`comp` : | A calendar component object.
`recur_list` : | List of recurrence rules as struct icalrecurrencetype structures. This should be freed using the `e_cal_component_free_recur_list()` function.

### e_cal_component_get_rrule_property_list ()

    void                e_cal_component_get_rrule_property_list
                                                            (ECalComponent *comp,
                                                             GSList **recur_list);

Queries a list of recurrence rule properties of a calendar component object.

`comp` : | A calendar component object.
`recur_list` : | Returns a list of recurrence rule properties.

### e_cal_component_set_rrule_list ()

    void                e_cal_component_set_rrule_list      (ECalComponent *comp,
                                                             GSList *recur_list);

Sets the list of recurrence rules in a calendar component object.

`comp` : | A calendar component object.
`recur_list` : | List of struct icalrecurrencetype structures.

### e_cal_component_has_rrules ()

    gboolean            e_cal_component_has_rrules          (ECalComponent *comp);

Queries whether a calendar component object has any recurrence rules defined for it.

`comp` : | A calendar component object.
Returns : | TRUE if the component has recurrence rules, FALSE otherwise.

### e_cal_component_has_recurrences ()

    gboolean            e_cal_component_has_recurrences     (ECalComponent *comp);

Queries whether a calendar component object has any recurrence dates or recurrence rules.

`comp` : | A calendar component object
Returns : | TRUE if the component has recurrences, FALSE otherwise.

### e_cal_component_has_simple_recurrence ()

    gboolean            e_cal_component_has_simple_recurrence
                                                            (ECalComponent *comp);

Checks whether the given calendar component object has simple recurrence rules or more complicated ones.

`comp` : | A calendar component object.
Returns : | TRUE if it has a simple recurrence rule, FALSE otherwise.

### e_cal_component_is_instance ()

    gboolean            e_cal_component_is_instance         (ECalComponent *comp);

Checks whether a calendar component object is an instance of a recurring event.

`comp` : | A calendar component object.
Returns : | TRUE if it is an instance, FALSE if not.

### e_cal_component_get_sequence ()

    void                e_cal_component_get_sequence        (ECalComponent *comp,
                                                             int **sequence);

Queries the sequence number of a calendar component object.

`comp` : | A calendar component object.
`sequence` : | Return value for the sequence number. This should be freed using `e_cal_component_free_sequence()`.

### e_cal_component_set_sequence ()

    void                e_cal_component_set_sequence        (ECalComponent *comp,
                                                             int *sequence);

Sets the sequence number of a calendar component object. Normally this function should not be called, since the sequence number is incremented automatically at the proper times.

`comp` : | A calendar component object.
`sequence` : | Sequence number value.

### e_cal_component_get_status ()

    void                e_cal_component_get_status          (ECalComponent *comp,
                                                             icalproperty_status *status);

Queries the status property of a calendar component object.

`comp` : | A calendar component object.
`status` : | Return value for the status value. It is set to ICAL_STATUS_NONE if the component has no status property.

### e_cal_component_set_status ()

    void                e_cal_component_set_status          (ECalComponent *comp,
                                                             icalproperty_status status);

Sets the status property of a calendar component object.

`comp` : | A calendar component object.
`status` : | Status value. You should use ICAL_STATUS_NONE if you want to unset this property.

### e_cal_component_get_summary ()

    void                e_cal_component_get_summary         (ECalComponent *comp,
                                                             ECalComponentText *summary);

Queries the summary of a calendar component object.

`comp` : | A calendar component object.
`summary` : | Return value for the summary property and its parameters.

### e_cal_component_set_summary ()

    void                e_cal_component_set_summary         (ECalComponent *comp,
                                                             ECalComponentText *summary);

Sets the summary of a calendar component object.

`comp` : | A calendar component object.
`summary` : | Summary property and its parameters.

### e_cal_component_get_transparency ()

    void                e_cal_component_get_transparency    (ECalComponent *comp,
                                                             ECalComponentTransparency *transp);

Queries the time transparency of a calendar component object.

`comp` : | A calendar component object.
`transp` : | Return value for the time transparency.

### e_cal_component_set_transparency ()

    void                e_cal_component_set_transparency    (ECalComponent *comp,
                                                             ECalComponentTransparency transp);

Sets the time transparency of a calendar component object.

`comp` : | A calendar component object.
`transp` : | Time transparency value.

### e_cal_component_get_url ()

    void                e_cal_component_get_url             (ECalComponent *comp,
                                                             const char **url);

Queries the uniform resource locator property of a calendar component object.

`comp` : | A calendar component object.
`url` : | Return value for the URL.

### e_cal_component_set_url ()

    void                e_cal_component_set_url             (ECalComponent *comp,
                                                             const char *url);

Sets the uniform resource locator property of a calendar component object.

`comp` : | A calendar component object.
`url` : | URL value.

### e_cal_component_get_attendee_list ()

    void                e_cal_component_get_attendee_list   (ECalComponent *comp,
                                                             GSList **attendee_list);

Queries the attendee properties of the calendar component object

`comp` : | A calendar component object.
`attendee_list` : | Return value for the attendee property. This should be freed using the `e_cal_component_free_attendee_list()` function.

### e_cal_component_set_attendee_list ()

    void                e_cal_component_set_attendee_list   (ECalComponent *comp,
                                                             GSList *attendee_list);

Sets the attendees of a calendar component object

`comp` : | A calendar component object.
`attendee_list` : | Values for attendee properties

### e_cal_component_has_attendees ()

    gboolean            e_cal_component_has_attendees       (ECalComponent *comp);

Queries a calendar component object for the existence of attendees.

`comp` : | A calendar component object.
Returns : | TRUE if there are attendees, FALSE if not.

### e_cal_component_get_location ()

    void                e_cal_component_get_location        (ECalComponent *comp,
                                                             const char **location);

Queries the location property of a calendar component object.

`comp` : | A calendar component object
`location` : | Return value for the location.

### e_cal_component_set_location ()

    void                e_cal_component_set_location        (ECalComponent *comp,
                                                             const char *location);

Sets the location property of a calendar component object.

`comp` : | A calendar component object.
`location` : | Location value.

### e_cal_component_get_attachment_list ()

    void                e_cal_component_get_attachment_list (ECalComponent *comp,
                                                             GSList **attachment_list);

Queries the attachment properties of the calendar component object. When done, the `attachment_list` should be freed by calling g_slist_free.

`comp` : | A calendar component object.
`attachment_list` : | Return list of URLS to attachments.

### e_cal_component_set_attachment_list ()

    void                e_cal_component_set_attachment_list (ECalComponent *comp,
                                                             GSList *attachment_list);

This currently handles only attachments that are urls in the file system - not inline binaries.

Sets the attachments of a calendar component object

`comp` : | A calendar component object.
`attachment_list` : | list of urls to attachment pointers.

### e_cal_component_has_attachments ()

    gboolean            e_cal_component_has_attachments     (ECalComponent *comp);

Queries the component to see if it has attachments.

`comp` : | A calendar component object.
Returns : | TRUE if there are attachments, FALSE otherwise.

### e_cal_component_get_num_attachments ()

    int                 e_cal_component_get_num_attachments (ECalComponent *comp);

Get the number of attachments to this calendar component object.

`comp` : | A calendar component object.
Returns : | the number of attachments.

### e_cal_component_event_dates_match ()

    gboolean            e_cal_component_event_dates_match   (ECalComponent *comp1,
                                                             ECalComponent *comp2);

Checks if the DTSTART and DTEND properties of the 2 components match. Note that the events may have different recurrence properties which are not taken into account here.

`comp1` : | A calendar component object.
`comp2` : | A calendar component object.
Returns : | TRUE if the DTSTART and DTEND properties of the 2 components match.

### e_cal_component_free_categories_list ()

    void                e_cal_component_free_categories_list
                                                            (GSList *categ_list);

Frees a list of category strings.

`categ_list` : | List of category strings.

### e_cal_component_free_datetime ()

    void                e_cal_component_free_datetime       (ECalComponentDateTime *dt);

Frees a date/time structure.

`dt` : | A date/time structure.

### e_cal_component_free_range ()

    void                e_cal_component_free_range          (ECalComponentRange *range);

Frees an ECalComponentRange structure.

`range` : | A ECalComponentRange.

### e_cal_component_free_exdate_list ()

    void                e_cal_component_free_exdate_list    (GSList *exdate_list);

Frees a list of ECalComponentDateTime structures as returned by the `e_cal_component_get_exdate_list()` function.

`exdate_list` : | List of ECalComponentDateTime structures.

### e_cal_component_free_geo ()

    void                e_cal_component_free_geo            (struct icalgeotype *geo);

Frees a struct icalgeotype structure as returned by the calendar component functions.

`geo` : | An icalgeotype structure.

### e_cal_component_free_icaltimetype ()

    void                e_cal_component_free_icaltimetype   (struct icaltimetype *t);

Frees a struct icaltimetype value as returned by the calendar component functions.

`t` : | An icaltimetype structure.

### e_cal_component_free_percent ()

    void                e_cal_component_free_percent        (int *percent);

Frees a percent value as returned by the `e_cal_component_get_percent()` function.

`percent` : | Percent value.

### e_cal_component_free_priority ()

    void                e_cal_component_free_priority       (int *priority);

Frees a priority value as returned by the `e_cal_component_get_priority()` function.

`priority` : | Priority value.

### e_cal_component_free_period_list ()

    void                e_cal_component_free_period_list    (GSList *period_list);

Frees a list of ECalComponentPeriod structures.

`period_list` : | List of ECalComponentPeriod structures.

### e_cal_component_free_recur_list ()

    void                e_cal_component_free_recur_list     (GSList *recur_list);

Frees a list of struct icalrecurrencetype structures.

`recur_list` : | List of struct icalrecurrencetype structures.

### e_cal_component_free_sequence ()

    void                e_cal_component_free_sequence       (int *sequence);

Frees a sequence number value.

`sequence` : | Sequence number value.

### e_cal_component_free_text_list ()

    void                e_cal_component_free_text_list      (GSList *text_list);

Frees a list of ECalComponentText structures. This function should only be used to free lists of text values as returned by the other getter functions of ECalComponent.

`text_list` : | List of ECalComponentText structures.

### e_cal_component_free_attendee_list ()

    void                e_cal_component_free_attendee_list  (GSList *attendee_list);

Frees a list of ECalComponentAttendee structures.

`attendee_list` : | List of attendees.

### ECalComponentAlarm

    typedef struct _ECalComponentAlarm ECalComponentAlarm;

### ECalComponentAlarmInstance

    typedef struct {
    	/* UID of the alarm that triggered */
    	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;
    } ECalComponentAlarmInstance;

### ECalComponentAlarms

    typedef struct {
    	/* The actual component */
    	ECalComponent *comp;

    	/* List of ECalComponentAlarmInstance structures */
    	GSList *alarms;
    } ECalComponentAlarms;

### enum ECalComponentAlarmAction

    typedef enum {
    	E_CAL_COMPONENT_ALARM_NONE,
    	E_CAL_COMPONENT_ALARM_AUDIO,
    	E_CAL_COMPONENT_ALARM_DISPLAY,
    	E_CAL_COMPONENT_ALARM_EMAIL,
    	E_CAL_COMPONENT_ALARM_PROCEDURE,
    	E_CAL_COMPONENT_ALARM_UNKNOWN
    } ECalComponentAlarmAction;

### enum ECalComponentAlarmTriggerType

    typedef enum {
    	E_CAL_COMPONENT_ALARM_TRIGGER_NONE,
    	E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START,
    	E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_END,
    	E_CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE
    } ECalComponentAlarmTriggerType;

### ECalComponentAlarmTrigger

    typedef struct {
    	ECalComponentAlarmTriggerType type;

    	union {
    		struct icaldurationtype rel_duration;
    		struct icaltimetype abs_time;
    	} u;
    } ECalComponentAlarmTrigger;

### ECalComponentAlarmRepeat

    typedef struct {
    	/* Number of extra repetitions, zero for none */
    	int repetitions;

    	/* Interval between repetitions */
    	struct icaldurationtype duration;
    } ECalComponentAlarmRepeat;

### e_cal_component_has_alarms ()

    gboolean            e_cal_component_has_alarms          (ECalComponent *comp);

Checks whether the component has any alarms.

`comp` : | A calendar component object.
Returns : | TRUE if the component has any alarms.

### e_cal_component_add_alarm ()

    void                e_cal_component_add_alarm           (ECalComponent *comp,
                                                             ECalComponentAlarm *alarm);

Adds an alarm subcomponent to a calendar component. You should have created the `alarm` by using `e_cal_component_alarm_new()`; it is invalid to use a ECalComponentAlarm structure that came from `e_cal_component_get_alarm()`. After adding the alarm, the `alarm` structure is no longer valid because the internal structures may change and you should get rid of it by using `e_cal_component_alarm_free()`.

`comp` : | A calendar component.
`alarm` : | An alarm.

### e_cal_component_remove_alarm ()

    void                e_cal_component_remove_alarm        (ECalComponent *comp,
                                                             const char *auid);

Removes an alarm subcomponent from a calendar component. If the alarm that corresponds to the specified `auid` had been fetched with `e_cal_component_get_alarm()`, then those alarm structures will be invalid; you should get rid of them with `e_cal_component_alarm_free()` before using this function.

`comp` : | A calendar component.
`auid` : | UID of the alarm to remove.

### e_cal_component_remove_all_alarms ()

    void                e_cal_component_remove_all_alarms   (ECalComponent *comp);

Remove all alarms from the calendar component

`comp` : | A calendar component

### e_cal_component_get_alarm_uids ()

    GList *             e_cal_component_get_alarm_uids      (ECalComponent *comp);

Builds a list of the unique identifiers of the alarm subcomponents inside a calendar component.

`comp` : | A calendar component.
Returns : | List of unique identifiers for alarms. This should be freed using `cal_obj_uid_list_free()`.

### e_cal_component_get_alarm ()

    ECalComponentAlarm * e_cal_component_get_alarm          (ECalComponent *comp,
                                                             const char *auid);

Queries a particular alarm subcomponent of a calendar component.

`comp` : | A calendar component.
`auid` : | Unique identifier for the sought alarm subcomponent.
Returns : | The alarm subcomponent that corresponds to the specified `auid`, or NULL if no alarm exists with that UID. This should be freed using `e_cal_component_alarm_free()`.

### e_cal_component_alarms_free ()

    void                e_cal_component_alarms_free         (ECalComponentAlarms *alarms);

Frees a ECalComponentAlarms structure.

`alarms` : | Component alarms structure.

### e_cal_component_alarm_new ()

    ECalComponentAlarm * e_cal_component_alarm_new          (void);

Create a new alarm object.

Returns : | a new alarm component

### e_cal_component_alarm_clone ()

    ECalComponentAlarm * e_cal_component_alarm_clone        (ECalComponentAlarm *alarm);

Creates a new alarm subcomponent by copying the information from another one.

`alarm` : | An alarm subcomponent.
Returns : | A newly-created alarm subcomponent with the same values as the original one. Should be freed with `e_cal_component_alarm_free()`.

### e_cal_component_alarm_free ()

    void                e_cal_component_alarm_free          (ECalComponentAlarm *alarm);

Frees an alarm structure.

`alarm` : | A calendar alarm.

### e_cal_component_alarm_get_uid ()

    const char *        e_cal_component_alarm_get_uid       (ECalComponentAlarm *alarm);

Queries the unique identifier of an alarm subcomponent.

`alarm` : | An alarm subcomponent.
Returns : | UID of the alarm.

### e_cal_component_alarm_get_action ()

    void                e_cal_component_alarm_get_action    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmAction *action);

Queries the action type of an alarm.

`alarm` : | An alarm.
`action` : | Return value for the alarm's action type.

### e_cal_component_alarm_set_action ()

    void                e_cal_component_alarm_set_action    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmAction action);

Sets the action type for an alarm.

`alarm` : | An alarm.
`action` : | Action type.

### e_cal_component_alarm_get_attach ()

    void                e_cal_component_alarm_get_attach    (ECalComponentAlarm *alarm,
                                                             icalattach **attach);

Queries the attachment property of an alarm.

`alarm` : | An alarm.
`attach` : | Return value for the attachment; should be freed using `icalattach_unref()`.

### e_cal_component_alarm_set_attach ()

    void                e_cal_component_alarm_set_attach    (ECalComponentAlarm *alarm,
                                                             icalattach *attach);

Sets the attachment property of an alarm.

`alarm` : | An alarm.
`attach` : | Attachment property or NULL to remove an existing property.

### e_cal_component_alarm_get_description ()

    void                e_cal_component_alarm_get_description
                                                            (ECalComponentAlarm *alarm,
                                                             ECalComponentText *description);

Queries the description property of an alarm.

`alarm` : | An alarm.
`description` : | Return value for the description property and its parameters.

### e_cal_component_alarm_set_description ()

    void                e_cal_component_alarm_set_description
                                                            (ECalComponentAlarm *alarm,
                                                             ECalComponentText *description);

Sets the description property of an alarm.

`alarm` : | An alarm.
`description` : | Description property and its parameters, or NULL for no description.

### e_cal_component_alarm_get_repeat ()

    void                e_cal_component_alarm_get_repeat    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmRepeat *repeat);

Queries the repeat/duration properties of an alarm.

`alarm` : | An alarm.
`repeat` : | Return value for the repeat/duration properties.

### e_cal_component_alarm_set_repeat ()

    void                e_cal_component_alarm_set_repeat    (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmRepeat repeat);

Sets the repeat/duration values for an alarm.

`alarm` : | An alarm.
`repeat` : | Repeat/duration values. To remove any repetitions from the alarm, set the `repeat.repetitions` to 0.

### e_cal_component_alarm_get_trigger ()

    void                e_cal_component_alarm_get_trigger   (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmTrigger *trigger);

Queries the trigger time for an alarm.

`alarm` : | An alarm.
`trigger` : | Return value for the trigger time.

### e_cal_component_alarm_set_trigger ()

    void                e_cal_component_alarm_set_trigger   (ECalComponentAlarm *alarm,
                                                             ECalComponentAlarmTrigger trigger);

Sets the trigger time of an alarm.

`alarm` : | An alarm.
`trigger` : | Trigger time structure.

### e_cal_component_alarm_get_attendee_list ()

    void                e_cal_component_alarm_get_attendee_list
                                                            (ECalComponentAlarm *alarm,
                                                             GSList **attendee_list);

Gets the list of attendees associated with an alarm.

`alarm` : | An alarm.
`attendee_list` : | Return value for the list of attendees.

### e_cal_component_alarm_set_attendee_list ()

    void                e_cal_component_alarm_set_attendee_list
                                                            (ECalComponentAlarm *alarm,
                                                             GSList *attendee_list);

Sets the list of attendees for an alarm.

`alarm` : | An alarm.
`attendee_list` : | List of attendees.

### e_cal_component_alarm_has_attendees ()

    gboolean            e_cal_component_alarm_has_attendees (ECalComponentAlarm *alarm);

Queries an alarm to see if it has attendees associated with it.

`alarm` : | An alarm.
Returns : | TRUE if there are attendees in the alarm, FALSE if not.

### e_cal_component_alarm_get_icalcomponent ()

    icalcomponent *     e_cal_component_alarm_get_icalcomponent
                                                            (ECalComponentAlarm *alarm);

Get the icalcomponent associated with the given ECalComponentAlarm.

`alarm` : | An alarm.
Returns : | the icalcomponent.