diff options
Diffstat (limited to 'examples/access_components.c')
-rw-r--r-- | examples/access_components.c | 267 |
1 files changed, 130 insertions, 137 deletions
diff --git a/examples/access_components.c b/examples/access_components.c index 796ce475..be73ba6f 100644 --- a/examples/access_components.c +++ b/examples/access_components.c @@ -2,15 +2,9 @@ #include <libical/ical.h> -#include <assert.h> -#include <string.h> /* for strdup */ -#include <stdlib.h> /* for malloc */ -#include <stdio.h> /* for printf */ -#include <time.h> /* for time() */ - void do_something(icalcomponent *c); -/* Creating iCal Components +/* Creating iCal Components There are two ways to create new component in libical. You can build the component from primitive parts, or you can create it @@ -26,10 +20,10 @@ void do_something(icalcomponent *c); constructors, resulting in a compact, neatly formated way to create components. This style is shown in create_new_component_with_va_args() - - + + */ - + icalcomponent* create_new_component() { @@ -48,69 +42,69 @@ icalcomponent* create_new_component() /* Create calendar and add properties */ calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); - + /* Nearly every libical function call has the same general form. The first part of the name defines the 'class' for the function, and the first argument will be a pointer to a struct of that class. So, icalcomponent_ functions will all take icalcomponent* as their first argument. */ - /* The next call creates a new proeprty and immediately adds it to the - 'calendar' component. */ + /* The next call creates a new proeprty and immediately adds it to the + 'calendar' component. */ icalcomponent_add_property( - calendar, - icalproperty_new_version("2.0") - ); + calendar, + icalproperty_new_version("2.0") + ); - - /* Here is the short version of the memory rules: - If the routine name has "new" in it: - Caller owns the returned memory. - If you pass in a string, the routine takes the memory. + /* Here is the short version of the memory rules: + + If the routine name has "new" in it: + Caller owns the returned memory. + If you pass in a string, the routine takes the memory. If the routine name has "add" in it: - The routine takes control of the component, property, - parameter or value memory. + The routine takes control of the component, property, + parameter or value memory. If the routine returns a string ( "get" and "as_ical_string" ) - The library owns the returned memory. + The library owns the returned memory. - There are more rules, so refer to the documentation for more - details. + There are more rules, so refer to the documentation for more + details. */ icalcomponent_add_property( - calendar, - icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN") - ); - + calendar, + icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN") + ); + /* Add an event */ event = icalcomponent_new(ICAL_VEVENT_COMPONENT); icalcomponent_add_property( - event, - icalproperty_new_dtstamp(atime) - ); + event, + icalproperty_new_dtstamp(atime) + ); - /* In the previous call, atime is a struct, and it is passed in by value. + /* In the previous call, atime is a struct, and it is passed in by value. This is how all compound types of values are handled. */ icalcomponent_add_property( - event, - icalproperty_new_uid("guid-1.host1.com") - ); + event, + icalproperty_new_uid("guid-1.host1.com") + ); /* add a property that has parameters */ property = icalproperty_new_organizer("mailto:mrbig@host.com"); - + icalproperty_add_parameter( - property, - icalparameter_new_role(ICAL_ROLE_CHAIR) - ); + property, + icalparameter_new_role(ICAL_ROLE_CHAIR) + ); icalcomponent_add_property(event,property); @@ -120,21 +114,21 @@ icalcomponent* create_new_component() /* add another property that has parameters */ property = icalproperty_new_attendee("mailto:employee-A@host.com"); - + icalproperty_add_parameter( - property, - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT) - ); + property, + icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT) + ); icalproperty_add_parameter( - property, - icalparameter_new_rsvp(1) - ); + property, + icalparameter_new_rsvp(1) + ); icalproperty_add_parameter( - property, - icalparameter_new_cutype(ICAL_CUTYPE_GROUP) - ); + property, + icalparameter_new_cutype(ICAL_CUTYPE_GROUP) + ); icalcomponent_add_property(event,property); @@ -142,53 +136,53 @@ icalcomponent* create_new_component() /* more properties */ icalcomponent_add_property( - event, - icalproperty_new_description("Project XYZ Review Meeting") - ); + event, + icalproperty_new_description("Project XYZ Review Meeting") + ); icalcomponent_add_property( - event, - icalproperty_new_categories("MEETING") - ); + event, + icalproperty_new_categories("MEETING") + ); icalcomponent_add_property( - event, - icalproperty_new_class(ICAL_CLASS_PUBLIC) - ); - + event, + icalproperty_new_class(ICAL_CLASS_PUBLIC) + ); + icalcomponent_add_property( - event, - icalproperty_new_created(atime) - ); + event, + icalproperty_new_created(atime) + ); icalcomponent_add_property( - event, - icalproperty_new_summary("XYZ Project Review") - ); + event, + icalproperty_new_summary("XYZ Project Review") + ); property = icalproperty_new_dtstart(atime); - + icalproperty_add_parameter( - property, - icalparameter_new_tzid("US-Eastern") - ); + property, + icalparameter_new_tzid("US-Eastern") + ); icalcomponent_add_property(event,property); property = icalproperty_new_dtend(atime); - + icalproperty_add_parameter( - property, - icalparameter_new_tzid("US-Eastern") - ); + property, + icalparameter_new_tzid("US-Eastern") + ); icalcomponent_add_property(event,property); icalcomponent_add_property( - event, - icalproperty_new_location("1CP Conference Room 4350") - ); + event, + icalproperty_new_location("1CP Conference Room 4350") + ); icalcomponent_add_component(calendar,event); @@ -206,7 +200,7 @@ icalcomponent* create_new_component_with_va_args() icalcomponent* calendar; struct icaltimetype atime = icaltime_from_timet( time(0),0); struct icalperiodtype rtime; - + rtime.start = icaltime_from_timet( time(0),0); rtime.end = icaltime_from_timet( time(0),0); rtime.end.hour++; @@ -217,50 +211,50 @@ icalcomponent* create_new_component_with_va_args() values and add each of them to the parent property or component. */ - calendar = - icalcomponent_vanew( - ICAL_VCALENDAR_COMPONENT, - icalproperty_new_version("2.0"), - icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), - icalcomponent_vanew( - ICAL_VEVENT_COMPONENT, - icalproperty_new_dtstamp(atime), - icalproperty_new_uid("guid-1.host1.com"), - icalproperty_vanew_organizer( - "mailto:mrbig@host.com", - icalparameter_new_role(ICAL_ROLE_CHAIR), - 0 - ), - icalproperty_vanew_attendee( - "mailto:employee-A@host.com", - icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), - icalparameter_new_rsvp(1), - icalparameter_new_cutype(ICAL_CUTYPE_GROUP), - 0 - ), - icalproperty_new_description("Project XYZ Review Meeting"), - - icalproperty_new_categories("MEETING"), - icalproperty_new_class(ICAL_CLASS_PUBLIC), - icalproperty_new_created(atime), - icalproperty_new_summary("XYZ Project Review"), - icalproperty_vanew_dtstart( - atime, - icalparameter_new_tzid("US-Eastern"), - 0 - ), - icalproperty_vanew_dtend( - atime, - icalparameter_new_tzid("US-Eastern"), - 0 - ), - icalproperty_new_location("1CP Conference Room 4350"), - 0 - ), - 0 - ); - - + calendar = + icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_version("2.0"), + icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstamp(atime), + icalproperty_new_uid("guid-1.host1.com"), + icalproperty_vanew_organizer( + "mailto:mrbig@host.com", + icalparameter_new_role(ICAL_ROLE_CHAIR), + 0 + ), + icalproperty_vanew_attendee( + "mailto:employee-A@host.com", + icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), + icalparameter_new_rsvp(1), + icalparameter_new_cutype(ICAL_CUTYPE_GROUP), + 0 + ), + icalproperty_new_description("Project XYZ Review Meeting"), + + icalproperty_new_categories("MEETING"), + icalproperty_new_class(ICAL_CLASS_PUBLIC), + icalproperty_new_created(atime), + icalproperty_new_summary("XYZ Project Review"), + icalproperty_vanew_dtstart( + atime, + icalparameter_new_tzid("US-Eastern"), + 0 + ), + icalproperty_vanew_dtend( + atime, + icalparameter_new_tzid("US-Eastern"), + 0 + ), + icalproperty_new_location("1CP Conference Room 4350"), + 0 + ), + 0 + ); + + /* Note that properties with no parameters can use the regular 'new' constructor, while those with parameters use the 'vanew' constructor. And, be sure that the last argument in the 'vanew' @@ -273,24 +267,24 @@ icalcomponent* create_new_component_with_va_args() void find_sub_components(icalcomponent* comp) { icalcomponent *c; - + /* The second parameter to icalcomponent_get_first_component indicates the type of component to search for. This will iterate through all sub-components */ for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ + c != 0; + c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ - do_something(c); + do_something(c); } /* This will iterate only though VEVENT sub-components */ for(c = icalcomponent_get_first_component(comp,ICAL_VEVENT_COMPONENT); - c != 0; - c = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT)){ + c != 0; + c = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT)){ - do_something(c); + do_something(c); } } @@ -300,19 +294,18 @@ void find_sub_components(icalcomponent* comp) right way to remove components */ void remove_vevent_sub_components(icalcomponent* comp){ - + icalcomponent *c, *next; for( c = icalcomponent_get_first_component(comp,ICAL_VEVENT_COMPONENT); - c != 0; - c = next) + c != 0; + c = next) { - next = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT); + next = icalcomponent_get_next_component(comp,ICAL_VEVENT_COMPONENT); - icalcomponent_remove_component(comp,c); + icalcomponent_remove_component(comp,c); - do_something(c); + do_something(c); } } - |