cal-recur

Name

cal-recur -- 

Synopsis



enum        CalRecurType;
typedef     CalRecurrence;
struct      CalObjTime;
gboolean    (*CalRecurInstanceFn)           (CalComponent *comp,
                                             time_t instance_start,
                                             time_t instace_end,
                                             gpointer data);
void        cal_recur_generate_instances    (CalComponent *comp,
                                             time_t start,
                                             time_t end,
                                             CalRecurInstanceFn cb,
                                             gpointer cb_data);
CalRecurrence* cal_recur_from_icalrecurrencetype
                                            (struct icalrecurrencetype *ir);
void        cal_recur_free                  (CalRecurrence *r);

Description

Details

enum CalRecurType

typedef enum {
	CAL_RECUR_YEARLY,
	CAL_RECUR_MONTHLY,
	CAL_RECUR_WEEKLY,
	CAL_RECUR_DAILY,
	CAL_RECUR_HOURLY,
	CAL_RECUR_MINUTELY,
	CAL_RECUR_SECONDLY
} CalRecurType;


CalRecurrence

typedef struct {
	CalRecurType   type;

	int            interval;

	/* Specifies the end of the recurrence. No occurrences are generated
	   after this date. If it is 0, the event recurs forever. */
	time_t         enddate;

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


	/* NOTE: I've used GList's here, but it doesn't matter if we use
	   other data structures like arrays. The code should be easy to
	   change. So long as it is easy to see if the modifier is set. */

	/* For BYMONTH modifier. A list of GINT_TO_POINTERs, 0-11. */
	GList	      *bymonth;

	/* For BYWEEKNO modifier. A list of GINT_TO_POINTERs, [+-]1-53. */
	GList	      *byweekno;

	/* For BYYEARDAY modifier. A list of GINT_TO_POINTERs, [+-]1-366. */
	GList	      *byyearday;

	/* For BYMONTHDAY modifier. A list of GINT_TO_POINTERs, [+-]1-31. */
	GList	      *bymonthday;

	/* For BYDAY modifier. A list of GINT_TO_POINTERs, in pairs.
	   The first of each pair is the weekday, 0 = Monday to 6 = Sunday.
	   The second of each pair is the week number [+-]0-53. */
	GList	      *byday;

	/* For BYHOUR modifier. A list of GINT_TO_POINTERs, 0-23. */
	GList	      *byhour;

	/* For BYMINUTE modifier. A list of GINT_TO_POINTERs, 0-59. */
	GList	      *byminute;

	/* For BYSECOND modifier. A list of GINT_TO_POINTERs, 0-60. */
	GList	      *bysecond;

	/* For BYSETPOS modifier. A list of GINT_TO_POINTERs, +ve or -ve. */
	GList	      *bysetpos;
} CalRecurrence;


struct CalObjTime

struct CalObjTime {
	guint16 year;
	guint8 month;		/* 0 - 11 */
	guint8 day;		/* 1 - 31 */
	guint8 hour;		/* 0 - 23 */
	guint8 minute;		/* 0 - 59 */
	guint8 second;		/* 0 - 59 (maybe 60 for leap second) */
};


CalRecurInstanceFn ()

gboolean    (*CalRecurInstanceFn)           (CalComponent *comp,
                                             time_t instance_start,
                                             time_t instace_end,
                                             gpointer data);

comp : 
instance_start : 
instace_end : 
data : 
Returns : 


cal_recur_generate_instances ()

void        cal_recur_generate_instances    (CalComponent *comp,
                                             time_t start,
                                             time_t end,
                                             CalRecurInstanceFn cb,
                                             gpointer cb_data);

comp : 
start : 
end : 
cb : 
cb_data : 


cal_recur_from_icalrecurrencetype ()

CalRecurrence* cal_recur_from_icalrecurrencetype
                                            (struct icalrecurrencetype *ir);

ir : 
Returns : 


cal_recur_free ()

void        cal_recur_free                  (CalRecurrence *r);

Frees a CalRecurrence structure.

r : A CalRecurrence structure.