Libical API Documentation
3.0
|
Routines for dealing with recurring time. More...
Go to the source code of this file.
Data Structures | |
struct | icalrecurrencetype |
Macros | |
#define | ICAL_BY_DAY_SIZE 7*(ICAL_BY_WEEKNO_SIZE-1)+1 /* 1 to N */ |
#define | ICAL_BY_HOUR_SIZE 25 /* 0 to 23 */ |
#define | ICAL_BY_MINUTE_SIZE 61 /* 0 to 59 */ |
#define | ICAL_BY_MONTH_SIZE 14 /* 1 to 13 */ |
#define | ICAL_BY_MONTHDAY_SIZE 32 /* 1 to 31 */ |
#define | ICAL_BY_SECOND_SIZE 62 /* 0 to 60 */ |
#define | ICAL_BY_SETPOS_SIZE ICAL_BY_YEARDAY_SIZE /* 1 to N */ |
#define | ICAL_BY_WEEKNO_SIZE 56 /* 1 to 55 */ |
#define | ICAL_BY_YEARDAY_SIZE 386 /* 1 to 385 */ |
Typedefs | |
typedef struct icalrecur_iterator_impl | icalrecur_iterator |
typedef enum icalrecurrencetype_frequency | icalrecurrencetype_frequency |
typedef enum icalrecurrencetype_skip | icalrecurrencetype_skip |
typedef enum icalrecurrencetype_weekday | icalrecurrencetype_weekday |
Functions | |
int | icalrecur_expand_recurrence (const char *rule, time_t start, int count, time_t *array) |
const char * | icalrecur_freq_to_string (icalrecurrencetype_frequency kind) |
void | icalrecur_iterator_free (icalrecur_iterator *) |
icalrecur_iterator * | icalrecur_iterator_new (struct icalrecurrencetype rule, struct icaltimetype dtstart) |
struct icaltimetype | icalrecur_iterator_next (icalrecur_iterator *) |
int | icalrecur_iterator_set_start (icalrecur_iterator *impl, struct icaltimetype start) |
const char * | icalrecur_skip_to_string (icalrecurrencetype_skip kind) |
icalrecurrencetype_frequency | icalrecur_string_to_freq (const char *str) |
icalrecurrencetype_skip | icalrecur_string_to_skip (const char *str) |
icalrecurrencetype_weekday | icalrecur_string_to_weekday (const char *str) |
const char * | icalrecur_weekday_to_string (icalrecurrencetype_weekday kind) |
char * | icalrecurrencetype_as_string (struct icalrecurrencetype *recur) |
char * | icalrecurrencetype_as_string_r (struct icalrecurrencetype *recur) |
void | icalrecurrencetype_clear (struct icalrecurrencetype *r) |
enum icalrecurrencetype_weekday | icalrecurrencetype_day_day_of_week (short day) |
int | icalrecurrencetype_day_position (short day) |
struct icalrecurrencetype | icalrecurrencetype_from_string (const char *str) |
int | icalrecurrencetype_month_is_leap (short month) |
int | icalrecurrencetype_month_month (short month) |
int | icalrecurrencetype_rscale_is_supported (void) |
icalarray * | icalrecurrencetype_rscale_supported_calendars (void) |
Routines for dealing with recurring time.
How to use:
1) Get a rule and a start time from a component
Or, just make them up:
2) Create an iterator
3) Iterator over the occurrences
Note that that the time returned by icalrecur_iterator_next is in whatever timezone that dtstart is in.
#define ICAL_BY_SECOND_SIZE 62 /* 0 to 60 */ |
Recurrence type routines
typedef struct icalrecur_iterator_impl icalrecur_iterator |
Recurrence iteration routines
int icalrecur_expand_recurrence | ( | const char * | rule, |
time_t | start, | ||
int | count, | ||
time_t * | array | ||
) |
Fills array up with at most 'count' time_t values, each representing an occurrence time in seconds past the POSIX epoch
Fill an array with the 'count' number of occurrences generated by the rrule. Note that the times are returned in UTC, but the times are calculated in local time. YOu will have to convert the results back into local time before using them.
void icalrecur_iterator_free | ( | icalrecur_iterator * | ) |
Free the iterator
icalrecur_iterator* icalrecur_iterator_new | ( | struct icalrecurrencetype | rule, |
struct icaltimetype | dtstart | ||
) |
Create a new recurrence rule iterator, starting at DTSTART
struct icaltimetype icalrecur_iterator_next | ( | icalrecur_iterator * | ) |
Get the next occurrence from an iterator
int icalrecur_iterator_set_start | ( | icalrecur_iterator * | impl, |
struct icaltimetype | start | ||
) |
Set the date-time at which the iterator will start, where 'start' is a value between DTSTART and UNTIL.
NOTE: CAN NOT be used with RRULEs that contain COUNT.
enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week | ( | short | day | ) |
Array Encoding
The 'day' element of the by_day array is encoded to allow representation of both the day of the week ( Monday, Tueday), but also the Nth day of the week ( First tuesday of the month, last thursday of the year) These routines decode the day values1 == Monday, etc.
The 'day' element of icalrecurrencetype_weekday is encoded to allow representation of both the day of the week ( Monday, Tuesday), but also the Nth day of the week ( First tuesday of the month, last thursday of the year) These routines decode the day values.
The day's position in the period ( Nth-ness) and the numerical value of the day are encoded together as: pos*7 + dow
A position of 0 means 'any' or 'every'
int icalrecurrencetype_day_position | ( | short | day | ) |
0 == any of day of week. 1 == first, 2 = second, -2 == second to last, etc
struct icalrecurrencetype icalrecurrencetype_from_string | ( | const char * | str | ) |
Recurrance rule parser Convert between strings and recurrencetype structures.
int icalrecurrencetype_month_is_leap | ( | short | month | ) |
The 'month' element of the by_month array is encoded to allow representation of the "L" leap suffix (RFC 7529). These routines decode the month values.
The 'month' element of the by_month array is encoded to allow representation of the "L" leap suffix (RFC 7529). These routines decode the month values.
The "L" suffix is encoded by setting a high-order bit