## e-cal-recur

e-cal-recur — Functions to expand recurrences for recurrent appointments.

## Synopsis

    gboolean    (*ECalRecurInstanceFn)          (ECalComponent *comp,
                                                 time_t instance_start,
                                                 time_t instance_end,
                                                 gpointer data);
    icaltimezone* (*ECalRecurResolveTimezoneFn) (const char *tzid,
                                                 gpointer data);
    void        e_cal_recur_generate_instances  (ECalComponent *comp,
                                                 time_t start,
                                                 time_t end,
                                                 ECalRecurInstanceFn cb,
                                                 gpointer cb_data,
                                                 ECalRecurResolveTimezoneFn tz_cb,
                                                 gpointer tz_cb_data,
                                                 icaltimezone *default_timezone);

## Description

## Details

### ECalRecurInstanceFn ()

    gboolean    (*ECalRecurInstanceFn)          (ECalComponent *comp,
                                                 time_t instance_start,
                                                 time_t instance_end,
                                                 gpointer data);

`comp` : |
`instance_start` : |
`instance_end` : |
`data` : |
Returns : |

### ECalRecurResolveTimezoneFn ()

    icaltimezone* (*ECalRecurResolveTimezoneFn) (const char *tzid,
                                                 gpointer data);

`tzid` : |
`data` : |
Returns : |

### e_cal_recur_generate_instances ()

    void        e_cal_recur_generate_instances  (ECalComponent *comp,
                                                 time_t start,
                                                 time_t end,
                                                 ECalRecurInstanceFn cb,
                                                 gpointer cb_data,
                                                 ECalRecurResolveTimezoneFn tz_cb,
                                                 gpointer tz_cb_data,
                                                 icaltimezone *default_timezone);

Calls the given callback function for each occurrence of the event that intersects the range between the given `start` and `end` times (the end time is not included). Note that the occurrences may start before the given start time.

If the callback routine returns FALSE the occurrence generation stops.

Both start and end can be -1, in which case we start at the events first instance and continue until it ends, or forever if it has no enddate.

The tz_cb is used to resolve references to timezones. It is passed a TZID and should return the icaltimezone* corresponding to that TZID. We need to do this as we access timezones in different ways on the client & server.

The default_timezone argument is used for DTSTART or DTEND properties that are DATE values or do not have a TZID (i.e. floating times).

`comp` : | A calendar component object.
`start` : | Range start time.
`end` : | Range end time.
`cb` : | Callback function.
`cb_data` : | Closure data for the callback function.
`tz_cb` : | Callback for retrieving timezones.
`tz_cb_data` : | Closure data for the timezone callback.
`default_timezone` : | Default timezone to use when a timezone cannot be found.