aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libical/icalenums.c
diff options
context:
space:
mode:
Diffstat (limited to 'libical/src/libical/icalenums.c')
-rw-r--r--libical/src/libical/icalenums.c615
1 files changed, 615 insertions, 0 deletions
diff --git a/libical/src/libical/icalenums.c b/libical/src/libical/icalenums.c
new file mode 100644
index 0000000000..95f308eec6
--- /dev/null
+++ b/libical/src/libical/icalenums.c
@@ -0,0 +1,615 @@
+/* -*- Mode: C -*- */
+/*======================================================================
+ FILE: icalenum.c
+ CREATOR: eric 29 April 1999
+
+ $Id$
+
+
+ (C) COPYRIGHT 1999 Eric Busboom
+ http://www.softwarestudio.org
+
+ The contents of this file are subject to the Mozilla Public License
+ Version 1.0 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and
+ limitations under the License.
+
+ The original author is Eric Busboom
+ The original code is icalenum.c
+
+ ======================================================================*/
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "icalenums.h"
+
+struct icalproperty_kind_map {
+ icalproperty_kind kind;
+ char name[20];
+};
+
+static struct icalproperty_kind_map property_map[] =
+{
+ { ICAL_ACTION_PROPERTY, "ACTION"},
+ { ICAL_ATTACH_PROPERTY, "ATTACH"},
+ { ICAL_ATTENDEE_PROPERTY, "ATTENDEE"},
+ { ICAL_CALSCALE_PROPERTY, "CALSCALE"},
+ { ICAL_CATEGORIES_PROPERTY, "CATEGORIES"},
+ { ICAL_CLASS_PROPERTY, "CLASS"},
+ { ICAL_COMMENT_PROPERTY, "COMMENT"},
+ { ICAL_COMPLETED_PROPERTY, "COMPLETED"},
+ { ICAL_CONTACT_PROPERTY, "CONTACT"},
+ { ICAL_CREATED_PROPERTY, "CREATED"},
+ { ICAL_DESCRIPTION_PROPERTY, "DESCRIPTION"},
+ { ICAL_DTEND_PROPERTY, "DTEND"},
+ { ICAL_DTSTAMP_PROPERTY, "DTSTAMP"},
+ { ICAL_DTSTART_PROPERTY, "DTSTART"},
+ { ICAL_DUE_PROPERTY, "DUE"},
+ { ICAL_DURATION_PROPERTY, "DURATION"},
+ { ICAL_EXDATE_PROPERTY, "EXDATE"},
+ { ICAL_EXRULE_PROPERTY, "EXRULE"},
+ { ICAL_FREEBUSY_PROPERTY, "FREEBUSY"},
+ { ICAL_GEO_PROPERTY, "GEO"},
+ { ICAL_LASTMODIFIED_PROPERTY, "LAST-MODIFIED"},
+ { ICAL_LOCATION_PROPERTY, "LOCATION"},
+ { ICAL_METHOD_PROPERTY, "METHOD"},
+ { ICAL_ORGANIZER_PROPERTY, "ORGANIZER"},
+ { ICAL_PERCENTCOMPLETE_PROPERTY, "PERCENT-COMPLETE"},
+ { ICAL_PRIORITY_PROPERTY, "PRIORITY"},
+ { ICAL_PRODID_PROPERTY, "PRODID"},
+ { ICAL_RDATE_PROPERTY, "RDATE"},
+ { ICAL_RECURRENCEID_PROPERTY, "RECURRENCE-ID"},
+ { ICAL_RELATEDTO_PROPERTY, "RELATED-TO"},
+ { ICAL_REPEAT_PROPERTY, "REPEAT"},
+ { ICAL_REQUESTSTATUS_PROPERTY, "REQUEST-STATUS"},
+ { ICAL_RESOURCES_PROPERTY, "RESOURCES"},
+ { ICAL_RRULE_PROPERTY, "RRULE"},
+ { ICAL_SEQUENCE_PROPERTY, "SEQUENCE"},
+ { ICAL_STATUS_PROPERTY, "STATUS"},
+ { ICAL_SUMMARY_PROPERTY, "SUMMARY"},
+ { ICAL_TRANSP_PROPERTY, "TRANSP"},
+ { ICAL_TRIGGER_PROPERTY, "TRIGGER"},
+ { ICAL_TZID_PROPERTY, "TZID"},
+ { ICAL_TZNAME_PROPERTY, "TZNAME"},
+ { ICAL_TZOFFSETFROM_PROPERTY, "TZOFFSETFROM"},
+ { ICAL_TZOFFSETTO_PROPERTY, "TZOFFSETTO"},
+ { ICAL_TZURL_PROPERTY, "TZURL"},
+ { ICAL_UID_PROPERTY, "UID"},
+ { ICAL_URL_PROPERTY, "URL"},
+ { ICAL_VERSION_PROPERTY, "VERSION"},
+ { ICAL_X_PROPERTY,"X_PROPERTY"},
+
+ /* CAP Object Properties */
+
+ { ICAL_SCOPE_PROPERTY, "SCOPE"},
+ { ICAL_MAXRESULTS_PROPERTY, "MAXRESULTS"},
+ { ICAL_MAXRESULTSSIZE_PROPERTY, "MAXRESULTSSIZE"},
+ { ICAL_QUERY_PROPERTY, "QUERY" },
+ { ICAL_QUERYNAME_PROPERTY, "QUERYNAME" },
+ { ICAL_TARGET_PROPERTY, "TARGET"},
+
+ /* libical private properties */
+ { ICAL_XLICERROR_PROPERTY,"X-LIC-ERROR"},
+ { ICAL_XLICCLUSTERCOUNT_PROPERTY,"X-LIC-CLUSTERCOUNT"},
+
+ /* End of the list */
+ { ICAL_NO_PROPERTY, ""}
+};
+
+
+char* icalenum_property_kind_to_string(icalproperty_kind kind)
+{
+ int i;
+
+ for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) {
+ if (property_map[i].kind == kind) {
+ return property_map[i].name;
+ }
+ }
+
+ return 0;
+
+}
+
+icalproperty_kind icalenum_string_to_property_kind(char* string)
+{
+ int i;
+
+ if (string ==0 ) {
+ return ICAL_NO_PROPERTY;
+ }
+
+ for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) {
+ if (strcmp(property_map[i].name, string) == 0) {
+ return property_map[i].kind;
+ }
+ }
+
+ return ICAL_NO_PROPERTY;
+}
+
+
+
+
+struct icalparameter_kind_map {
+ icalparameter_kind kind;
+ char name[20];
+};
+
+static struct icalparameter_kind_map parameter_map[] =
+{
+ { ICAL_ALTREP_PARAMETER, "ALTREP"},
+ { ICAL_CN_PARAMETER, "CN"},
+ { ICAL_CUTYPE_PARAMETER, "CUTYPE"},
+ { ICAL_DELEGATEDFROM_PARAMETER, "DELEGATED-FROM"},
+ { ICAL_DELEGATEDTO_PARAMETER, "DELEGATED-TO"},
+ { ICAL_DIR_PARAMETER, "DIR"},
+ { ICAL_ENCODING_PARAMETER, "ENCODING"},
+ { ICAL_FBTYPE_PARAMETER, "FBTYPE"},
+ { ICAL_FMTTYPE_PARAMETER, "FMTTYPE"},
+ { ICAL_LANGUAGE_PARAMETER, "LANGUAGE"},
+ { ICAL_MEMBER_PARAMETER, "MEMBER"},
+ { ICAL_PARTSTAT_PARAMETER, "PARTSTAT"},
+ { ICAL_RANGE_PARAMETER, "RANGE"},
+ { ICAL_RELATED_PARAMETER, "RELATED"},
+ { ICAL_RELTYPE_PARAMETER, "RELTYPE"},
+ { ICAL_ROLE_PARAMETER, "ROLE"},
+ { ICAL_RSVP_PARAMETER, "RSVP"},
+ { ICAL_SENTBY_PARAMETER, "SENT-BY"},
+ { ICAL_TZID_PARAMETER, "TZID"},
+ { ICAL_VALUE_PARAMETER, "VALUE"},
+
+ /* CAP parameters */
+
+ /* libical private parameters */
+ { ICAL_XLICERRORTYPE_PARAMETER, "X-LIC-ERRORTYPE"},
+ { ICAL_XLICCOMPARETYPE_PARAMETER, "X-LIC-COMPARETYPE"},
+
+ /* End of list */
+ { ICAL_NO_PARAMETER, ""}
+};
+
+char* icalenum_parameter_kind_to_string(icalparameter_kind kind)
+{
+ int i;
+
+ for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) {
+ if (parameter_map[i].kind == kind) {
+ return parameter_map[i].name;
+ }
+ }
+
+ return 0;
+
+}
+
+icalparameter_kind icalenum_string_to_parameter_kind(char* string)
+{
+ int i;
+
+ if (string ==0 ) {
+ return ICAL_NO_PARAMETER;
+ }
+
+ for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) {
+ if (strcmp(parameter_map[i].name, string) == 0) {
+ return parameter_map[i].kind;
+ }
+ }
+
+ return ICAL_NO_PARAMETER;
+}
+
+struct icalvalue_kind_map {
+ icalvalue_kind kind;
+ char name[20];
+};
+
+static struct icalvalue_kind_map value_map[] =
+{
+ { ICAL_BINARY_VALUE, "BINARY"},
+ { ICAL_BOOLEAN_VALUE, "BOOLEAN"},
+ { ICAL_CALADDRESS_VALUE, "CAL-ADDRESS"},
+ { ICAL_DATE_VALUE, "DATE"},
+ { ICAL_DATETIME_VALUE, "DATE-TIME"},
+ { ICAL_DURATION_VALUE, "DURATION"},
+ { ICAL_FLOAT_VALUE, "FLOAT"},
+ { ICAL_INTEGER_VALUE, "INTEGER"},
+ { ICAL_PERIOD_VALUE, "PERIOD"},
+ { ICAL_RECUR_VALUE, "RECUR"},
+ { ICAL_TEXT_VALUE, "TEXT"},
+ { ICAL_TIME_VALUE, "TIME"},
+ { ICAL_URI_VALUE, "URI"},
+ { ICAL_UTCOFFSET_VALUE, "UTC-OFFSET"},
+ { ICAL_METHOD_VALUE, "METHOD"}, /* Not an RFC2445 type */
+ { ICAL_GEO_VALUE, "FLOAT"}, /* Not an RFC2445 type */
+ { ICAL_ATTACH_VALUE, "XATTACH"}, /* Not an RFC2445 type */
+ { ICAL_DATETIMEDATE_VALUE, "XDATETIMEDATE"}, /* Not an RFC2445 type */
+ { ICAL_DATETIMEPERIOD_VALUE, "XDATETIMEPERIOD"}, /* Not an RFC2445 type */
+ { ICAL_QUERY_VALUE, "QUERY"},
+ { ICAL_NO_VALUE, ""},
+};
+
+char* icalenum_value_kind_to_string(icalvalue_kind kind)
+{
+ int i;
+
+ for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) {
+ if (value_map[i].kind == kind) {
+ return value_map[i].name;
+ }
+ }
+
+ return 0;
+
+}
+
+icalvalue_kind icalenum_value_kind_by_prop(icalproperty_kind kind)
+{
+
+ return ICAL_NO_VALUE;
+}
+
+
+struct icalcomponent_kind_map {
+ icalcomponent_kind kind;
+ char name[20];
+};
+
+
+
+static struct icalcomponent_kind_map component_map[] =
+{
+ { ICAL_VEVENT_COMPONENT, "VEVENT" },
+ { ICAL_VTODO_COMPONENT, "VTODO" },
+ { ICAL_VJOURNAL_COMPONENT, "VJOURNAL" },
+ { ICAL_VCALENDAR_COMPONENT, "VCALENDAR" },
+ { ICAL_VFREEBUSY_COMPONENT, "VFREEBUSY" },
+ { ICAL_VTIMEZONE_COMPONENT, "VTIMEZONE" },
+ { ICAL_VALARM_COMPONENT, "VALARM" },
+ { ICAL_XSTANDARD_COMPONENT, "STANDARD" }, /*These are part of RFC2445 */
+ { ICAL_XDAYLIGHT_COMPONENT, "DAYLIGHT" }, /*but are not really components*/
+ { ICAL_X_COMPONENT, "X" },
+ { ICAL_VSCHEDULE_COMPONENT, "SCHEDULE" },
+
+ /* CAP components */
+ { ICAL_VQUERY_COMPONENT, "VQUERY" },
+ { ICAL_VCAR_COMPONENT, "VCAR" },
+ { ICAL_VCOMMAND_COMPONENT, "VCOMMAND" },
+
+ /* libical private components */
+ { ICAL_XLICINVALID_COMPONENT, "X-LIC-UNKNOWN" },
+ { ICAL_ANY_COMPONENT, "ANY" },
+ { ICAL_XROOT_COMPONENT, "XROOT" },
+
+ /* End of list */
+ { ICAL_NO_COMPONENT, "" },
+};
+
+char* icalenum_component_kind_to_string(icalcomponent_kind kind)
+{
+ int i;
+
+ for (i=0; component_map[i].kind != ICAL_NO_COMPONENT; i++) {
+ if (component_map[i].kind == kind) {
+ return component_map[i].name;
+ }
+ }
+
+ return 0;
+
+}
+
+icalcomponent_kind icalenum_string_to_component_kind(char* string)
+{
+ int i;
+
+ if (string ==0 ) {
+ return ICAL_NO_COMPONENT;
+ }
+
+ for (i=0; component_map[i].kind != ICAL_NO_COMPONENT; i++) {
+ if (strcmp(component_map[i].name, string) == 0) {
+ return component_map[i].kind;
+ }
+ }
+
+ return ICAL_NO_COMPONENT;
+}
+
+struct icalproperty_kind_value_map {
+ icalproperty_kind prop;
+ icalvalue_kind value;
+};
+
+static struct icalproperty_kind_value_map propval_map[] =
+{
+ { ICAL_CALSCALE_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_METHOD_PROPERTY, ICAL_METHOD_VALUE },
+ { ICAL_PRODID_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_VERSION_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_CATEGORIES_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_CLASS_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_COMMENT_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_DESCRIPTION_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_LOCATION_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_PERCENTCOMPLETE_PROPERTY, ICAL_INTEGER_VALUE },
+ { ICAL_PRIORITY_PROPERTY, ICAL_INTEGER_VALUE },
+ { ICAL_RESOURCES_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_STATUS_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_SUMMARY_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_COMPLETED_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_FREEBUSY_PROPERTY, ICAL_PERIOD_VALUE },
+ { ICAL_TRANSP_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_TZNAME_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_TZOFFSETFROM_PROPERTY, ICAL_UTCOFFSET_VALUE },
+ { ICAL_TZOFFSETTO_PROPERTY, ICAL_UTCOFFSET_VALUE },
+ { ICAL_TZURL_PROPERTY, ICAL_URI_VALUE },
+ { ICAL_TZID_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_ATTENDEE_PROPERTY, ICAL_CALADDRESS_VALUE },
+ { ICAL_CONTACT_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_ORGANIZER_PROPERTY, ICAL_CALADDRESS_VALUE },
+ { ICAL_RELATEDTO_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_URL_PROPERTY, ICAL_URI_VALUE },
+ { ICAL_UID_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_EXRULE_PROPERTY, ICAL_RECUR_VALUE },
+ { ICAL_RRULE_PROPERTY, ICAL_RECUR_VALUE },
+ { ICAL_ACTION_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_REPEAT_PROPERTY, ICAL_INTEGER_VALUE },
+ { ICAL_CREATED_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_DTSTAMP_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_LASTMODIFIED_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_SEQUENCE_PROPERTY, ICAL_INTEGER_VALUE },
+ { ICAL_X_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_REQUESTSTATUS_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_ATTACH_PROPERTY, ICAL_URI_VALUE },
+ { ICAL_GEO_PROPERTY, ICAL_GEO_VALUE },
+ { ICAL_DTEND_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_DUE_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_DTSTART_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_RECURRENCEID_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_EXDATE_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_RDATE_PROPERTY, ICAL_DATETIME_VALUE },
+ { ICAL_TRIGGER_PROPERTY, ICAL_DURATION_VALUE },
+ { ICAL_DURATION_PROPERTY, ICAL_DURATION_VALUE },
+
+ /* CAP properties */
+ { ICAL_SCOPE_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_MAXRESULTS_PROPERTY, ICAL_INTEGER_VALUE},
+ { ICAL_MAXRESULTSSIZE_PROPERTY, ICAL_INTEGER_VALUE},
+ { ICAL_QUERY_PROPERTY, ICAL_QUERY_VALUE },
+ { ICAL_QUERYNAME_PROPERTY, ICAL_TEXT_VALUE },
+ { ICAL_TARGET_PROPERTY, ICAL_CALADDRESS_VALUE },
+
+
+ /* libical private properties */
+ { ICAL_XLICERROR_PROPERTY,ICAL_TEXT_VALUE},
+ { ICAL_XLICCLUSTERCOUNT_PROPERTY,ICAL_INTEGER_VALUE},
+
+
+ /* End of list */
+ { ICAL_NO_PROPERTY, ICAL_NO_PROPERTY}
+};
+
+
+icalvalue_kind icalenum_property_kind_to_value_kind(icalproperty_kind kind)
+{
+ int i;
+
+ for (i=0; propval_map[i].value != ICAL_NO_VALUE; i++) {
+ if ( propval_map[i].prop == kind ) {
+ return propval_map[i].value;
+ }
+ }
+
+ return ICAL_NO_VALUE;
+}
+
+struct {icalrecurrencetype_weekday wd; char * str; }
+wd_map[] = {
+ {ICAL_SUNDAY_WEEKDAY,"SU"},
+ {ICAL_MONDAY_WEEKDAY,"MO"},
+ {ICAL_TUESDAY_WEEKDAY,"TU"},
+ {ICAL_WEDNESDAY_WEEKDAY,"WE"},
+ {ICAL_THURSDAY_WEEKDAY,"TH"},
+ {ICAL_FRIDAY_WEEKDAY,"FR"},
+ {ICAL_SATURDAY_WEEKDAY,"SA"},
+ {ICAL_NO_WEEKDAY,0}
+};
+
+char* icalenum_weekday_to_string(icalrecurrencetype_weekday kind)
+{
+ int i;
+
+ for (i=0; wd_map[i].wd != ICAL_NO_WEEKDAY; i++) {
+ if ( wd_map[i].wd == kind) {
+ return wd_map[i].str;
+ }
+ }
+
+ return 0;
+}
+
+
+struct {
+ icalrecurrencetype_frequency kind;
+ char* str;
+} freq_map[] = {
+ {ICAL_SECONDLY_RECURRENCE,"SECONDLY"},
+ {ICAL_MINUTELY_RECURRENCE,"MINUTELY"},
+ {ICAL_HOURLY_RECURRENCE,"HOURLY"},
+ {ICAL_DAILY_RECURRENCE,"DAILY"},
+ {ICAL_WEEKLY_RECURRENCE,"WEEKLY"},
+ {ICAL_MONTHLY_RECURRENCE,"MONTHLY"},
+ {ICAL_YEARLY_RECURRENCE,"YEARLY"},
+ {ICAL_NO_RECURRENCE,0}
+};
+
+char* icalenum_recurrence_to_string(icalrecurrencetype_frequency kind)
+{
+ int i;
+
+ for (i=0; freq_map[i].kind != ICAL_NO_RECURRENCE ; i++) {
+ if ( freq_map[i].kind == kind ) {
+ return freq_map[i].str;
+ }
+ }
+ return 0;
+}
+
+
+struct {
+ icalrecurrencetype_frequency kind;
+ int major;
+ int minor;
+ char* str;
+} status_map[] = {
+ {ICAL_2_0_SUCCESS_STATUS, 2,0,"Success."},
+ {ICAL_2_1_FALLBACK_STATUS, 2,1,"Success but fallback taken on one or more property values."},
+ {ICAL_2_2_IGPROP_STATUS, 2,2,"Success, invalid property ignored."},
+ {ICAL_2_3_IGPARAM_STATUS, 2,3,"Success, invalid property parameter ignored."},
+ {ICAL_2_4_IGXPROP_STATUS, 2,4,"Success, unknown non-standard property ignored."},
+ {ICAL_2_5_IGXPARAM_STATUS, 2,5,"Success, unknown non standard property value ignored."},
+ {ICAL_2_6_IGCOMP_STATUS, 2,6,"Success, invalid calendar component ignored."},
+ {ICAL_2_7_FORWARD_STATUS, 2,7,"Success, request forwarded to Calendar User."},
+ {ICAL_2_8_ONEEVENT_STATUS, 2,8,"Success, repeating event ignored. Scheduled as a single component."},
+ {ICAL_2_9_TRUNC_STATUS, 2,9,"Success, truncated end date time to date boundary."},
+ {ICAL_2_10_ONETODO_STATUS, 2,10,"Success, repeating VTODO ignored. Scheduled as a single VTODO."},
+ {ICAL_2_11_TRUNCRRULE_STATUS, 2,11,"Success, unbounded RRULE clipped at some finite number of instances "},
+ {ICAL_3_0_INVPROPNAME_STATUS, 3,0,"Invalid property name."},
+ {ICAL_3_1_INVPROPVAL_STATUS, 3,1,"Invalid property value."},
+ {ICAL_3_2_INVPARAM_STATUS, 3,2,"Invalid property parameter."},
+ {ICAL_3_3_INVPARAMVAL_STATUS, 3,3,"Invalid property parameter value."},
+ {ICAL_3_4_INVCOMP_STATUS, 3,4,"Invalid calendar component."},
+ {ICAL_3_5_INVTIME_STATUS, 3,5,"Invalid date or time."},
+ {ICAL_3_6_INVRULE_STATUS, 3,6,"Invalid rule."},
+ {ICAL_3_7_INVCU_STATUS, 3,7,"Invalid Calendar User."},
+ {ICAL_3_8_NOAUTH_STATUS, 3,8,"No authority."},
+ {ICAL_3_9_BADVERSION_STATUS, 3,9,"Unsupported version."},
+ {ICAL_3_10_TOOBIG_STATUS, 3,10,"Request entity too large."},
+ {ICAL_3_11_MISSREQCOMP_STATUS, 3,11,"Required component or property missing."},
+ {ICAL_3_12_UNKCOMP_STATUS, 3,12,"Unknown component or property found."},
+ {ICAL_3_13_BADCOMP_STATUS, 3,13,"Unsupported component or property found"},
+ {ICAL_3_14_NOCAP_STATUS, 3,14,"Unsupported capability."},
+ {ICAL_4_0_BUSY_STATUS, 4,0,"Event conflict. Date/time is busy."},
+ {ICAL_5_0_MAYBE_STATUS, 5,0,"Request MAY supported."},
+ {ICAL_5_1_UNAVAIL_STATUS, 5,1,"Service unavailable."},
+ {ICAL_5_2_NOSERVICE_STATUS, 5,2,"Invalid calendar service."},
+ {ICAL_5_3_NOSCHED_STATUS, 5,3,"No scheduling support for user."},
+ {ICAL_UNKNOWN_STATUS, 0,0,"Error: Unknown request status"}
+};
+
+
+char* icalenum_reqstat_desc(icalrequeststatus stat)
+{
+
+ int i;
+
+ for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) {
+ if ( status_map[i].kind == stat) {
+ return status_map[i].str;
+ }
+ }
+
+ return 0;
+}
+
+
+short icalenum_reqstat_major(icalrequeststatus stat)
+{
+ int i;
+
+ for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) {
+ if ( status_map[i].kind == stat) {
+ return status_map[i].major;
+ }
+ }
+ return -1;
+}
+
+short icalenum_reqstat_minor(icalrequeststatus stat)
+{
+ int i;
+
+ for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) {
+ if ( status_map[i].kind == stat) {
+ return status_map[i].minor;
+ }
+ }
+ return -1;
+}
+
+
+icalrequeststatus icalenum_num_to_reqstat(short major, short minor)
+{
+ int i;
+
+ for (i=0; status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) {
+ if ( status_map[i].major == major && status_map[i].minor == minor) {
+ return status_map[i].kind;
+ }
+ }
+ return 0;
+}
+
+
+
+struct {icalproperty_method method; char* str;} method_map[] = {
+ {ICAL_METHOD_PUBLISH,"PUBLISH"},
+ {ICAL_METHOD_REQUEST,"REQUEST"},
+ {ICAL_METHOD_REPLY,"REPLY"},
+ {ICAL_METHOD_ADD,"ADD"},
+ {ICAL_METHOD_CANCEL,"CANCEL"},
+ {ICAL_METHOD_REFRESH,"REFRESH"},
+ {ICAL_METHOD_COUNTER,"CPUNTER"},
+ {ICAL_METHOD_DECLINECOUNTER,"DECLINECOUNTER"},
+ /* CAP Methods */
+ {ICAL_METHOD_CREATE,"CREATE"},
+ {ICAL_METHOD_READ,"READ"},
+ {ICAL_METHOD_RESPONSE,"RESPONSE"},
+ {ICAL_METHOD_MOVE,"MOVE"},
+ {ICAL_METHOD_MODIFY,"MODIFY"},
+ {ICAL_METHOD_GENERATEUID,"GENERATEUID"},
+ {ICAL_METHOD_DELETE,"DELETE"},
+ {ICAL_METHOD_NONE,"NONE"}
+};
+
+
+char* icalenum_method_to_string(icalproperty_method method)
+{
+ int i;
+
+ for (i=0; method_map[i].method != ICAL_METHOD_NONE; i++) {
+ if ( method_map[i].method == method) {
+ return method_map[i].str;
+ }
+ }
+
+ return 0;
+}
+
+icalproperty_method icalenum_string_to_method(char* str)
+{
+ int i;
+
+ while(*str == ' '){
+ str++;
+ }
+
+
+ for (i=0; method_map[i].method != ICAL_METHOD_NONE; i++) {
+ if ( strcmp(method_map[i].str, str) == 0) {
+ return method_map[i].method;
+ }
+ }
+
+ return ICAL_METHOD_NONE;
+}