#ifndef _E_CAL_GLUE_RECUR_H_
#define _E_CAL_GLUE_RECUR_H_

#include <glib/gmacros.h>
#include <time.h>
#include <glib-object.h>
#include <libical/icalrecur.h>

typedef struct _ECalGlueRecurrence ECalGlueRecurrence;

struct _ECalGlueRecurrence {

  void* handle;

  /* Yearly/Monthly/Daily/Hourly/Minutely/Secondly */
  gint freq;
  
  /* Specifies the end of the recurrence, inclusive. No occurrences are
     generated after this date. If it is 0, the event recurs forever. 
  */
  time_t until;

  /* number of such recurrences
     NOTE:"until" and "count" cannot co-exist 
  */
  gint count;

  /* WKST property - the week start day: 0 = Monday to 6 = Sunday. */
  gint week_start_day;

  /* interval applied to freq */
  gshort interval;

  /* BY* parameters, according to RFC 2445 they all take a 
     list of values.
  */
    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]; /* Encoded value, see below */
    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];
};


void* e_cal_glue_recurrence_get_handle          (ECalGlueRecurrence* comp);
gint e_cal_glue_recurrence_get_frequency        (ECalGlueRecurrence* comp);
gint e_cal_glue_recurrence_get_count            (ECalGlueRecurrence* comp);
time_t e_cal_glue_recurrence_get_enddate        (ECalGlueRecurrence* comp);
gint e_cal_glue_recurrence_get_week_start_day   (ECalGlueRecurrence* comp);
gshort e_cal_glue_recurrence_get_interval       (ECalGlueRecurrence* comp);
short* e_cal_glue_recurrence_get_by_second      (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_minute      (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_hour        (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_day         (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_month_day   (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_year_day    (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_week_number (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_month       (ECalGlueRecurrence* comp, int* array_len);
short* e_cal_glue_recurrence_get_by_set_pos     (ECalGlueRecurrence* comp, int* array_len);

#endif


syntax highlighted by Code2HTML, v. 0.9.1