123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- #ifndef ICALRECUR_H
- #define ICALRECUR_H
- #include "libical_ical_export.h"
- #include "icalarray.h"
- #include "icaltime.h"
- typedef enum icalrecurrencetype_frequency
- {
-
- ICAL_SECONDLY_RECURRENCE = 0,
- ICAL_MINUTELY_RECURRENCE = 1,
- ICAL_HOURLY_RECURRENCE = 2,
- ICAL_DAILY_RECURRENCE = 3,
- ICAL_WEEKLY_RECURRENCE = 4,
- ICAL_MONTHLY_RECURRENCE = 5,
- ICAL_YEARLY_RECURRENCE = 6,
- ICAL_NO_RECURRENCE = 7
- } icalrecurrencetype_frequency;
- typedef enum icalrecurrencetype_weekday
- {
- ICAL_NO_WEEKDAY,
- ICAL_SUNDAY_WEEKDAY,
- ICAL_MONDAY_WEEKDAY,
- ICAL_TUESDAY_WEEKDAY,
- ICAL_WEDNESDAY_WEEKDAY,
- ICAL_THURSDAY_WEEKDAY,
- ICAL_FRIDAY_WEEKDAY,
- ICAL_SATURDAY_WEEKDAY
- } icalrecurrencetype_weekday;
- typedef enum icalrecurrencetype_skip
- {
- ICAL_SKIP_BACKWARD = 0,
- ICAL_SKIP_FORWARD,
- ICAL_SKIP_OMIT,
- ICAL_SKIP_UNDEFINED
- } icalrecurrencetype_skip;
- enum icalrecurrence_array_max_values
- {
- ICAL_RECURRENCE_ARRAY_MAX = 0x7f7f,
- ICAL_RECURRENCE_ARRAY_MAX_BYTE = 0x7f
- };
- LIBICAL_ICAL_EXPORT icalrecurrencetype_frequency icalrecur_string_to_freq(const char *str);
- LIBICAL_ICAL_EXPORT const char *icalrecur_freq_to_string(icalrecurrencetype_frequency kind);
- LIBICAL_ICAL_EXPORT icalrecurrencetype_skip icalrecur_string_to_skip(const char *str);
- LIBICAL_ICAL_EXPORT const char *icalrecur_skip_to_string(icalrecurrencetype_skip kind);
- LIBICAL_ICAL_EXPORT const char *icalrecur_weekday_to_string(icalrecurrencetype_weekday kind);
- LIBICAL_ICAL_EXPORT icalrecurrencetype_weekday icalrecur_string_to_weekday(const char *str);
- #define ICAL_BY_SECOND_SIZE 62
- #define ICAL_BY_MINUTE_SIZE 61
- #define ICAL_BY_HOUR_SIZE 25
- #define ICAL_BY_MONTH_SIZE 14
- #define ICAL_BY_MONTHDAY_SIZE 32
- #define ICAL_BY_WEEKNO_SIZE 56
- #define ICAL_BY_YEARDAY_SIZE 386
- #define ICAL_BY_SETPOS_SIZE ICAL_BY_YEARDAY_SIZE
- #define ICAL_BY_DAY_SIZE 7*(ICAL_BY_WEEKNO_SIZE-1)+1
- struct icalrecurrencetype
- {
- icalrecurrencetype_frequency freq;
-
- struct icaltimetype until;
- int count;
- short interval;
- icalrecurrencetype_weekday week_start;
-
- short by_second[ICAL_BY_SECOND_SIZE];
- short by_minute[ICAL_BY_MINUTE_SIZE];
- short by_hour[ICAL_BY_HOUR_SIZE];
- short by_day[ICAL_BY_DAY_SIZE];
- short by_month_day[ICAL_BY_MONTHDAY_SIZE];
- short by_year_day[ICAL_BY_YEARDAY_SIZE];
- short by_week_no[ICAL_BY_WEEKNO_SIZE];
- short by_month[ICAL_BY_MONTH_SIZE];
- short by_set_pos[ICAL_BY_SETPOS_SIZE];
-
- char *rscale;
- icalrecurrencetype_skip skip;
- };
- LIBICAL_ICAL_EXPORT int icalrecurrencetype_rscale_is_supported(void);
- LIBICAL_ICAL_EXPORT icalarray *icalrecurrencetype_rscale_supported_calendars(void);
- LIBICAL_ICAL_EXPORT void icalrecurrencetype_clear(struct icalrecurrencetype *r);
- LIBICAL_ICAL_EXPORT enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week(short day);
- LIBICAL_ICAL_EXPORT int icalrecurrencetype_day_position(short day);
- LIBICAL_ICAL_EXPORT int icalrecurrencetype_month_is_leap(short month);
- LIBICAL_ICAL_EXPORT int icalrecurrencetype_month_month(short month);
- LIBICAL_ICAL_EXPORT struct icalrecurrencetype icalrecurrencetype_from_string(const char *str);
- LIBICAL_ICAL_EXPORT char *icalrecurrencetype_as_string(struct icalrecurrencetype *recur);
- LIBICAL_ICAL_EXPORT char *icalrecurrencetype_as_string_r(struct icalrecurrencetype *recur);
- typedef struct icalrecur_iterator_impl icalrecur_iterator;
- LIBICAL_ICAL_EXPORT icalrecur_iterator *icalrecur_iterator_new(struct icalrecurrencetype rule,
- struct icaltimetype dtstart);
- LIBICAL_ICAL_EXPORT struct icaltimetype icalrecur_iterator_next(icalrecur_iterator *);
- LIBICAL_ICAL_EXPORT void icalrecur_iterator_free(icalrecur_iterator *);
- LIBICAL_ICAL_EXPORT int icalrecur_expand_recurrence(char *rule, time_t start,
- int count, time_t * array);
- #endif
|