aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libical/icalparameter.c
diff options
context:
space:
mode:
Diffstat (limited to 'libical/src/libical/icalparameter.c')
-rw-r--r--libical/src/libical/icalparameter.c251
1 files changed, 162 insertions, 89 deletions
diff --git a/libical/src/libical/icalparameter.c b/libical/src/libical/icalparameter.c
index 5bbaff68ef..cee4259099 100644
--- a/libical/src/libical/icalparameter.c
+++ b/libical/src/libical/icalparameter.c
@@ -5,9 +5,6 @@
$Id$
- $Locker$
-
-
(C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
This program is free software; you can redistribute it and/or modify
@@ -27,42 +24,47 @@
Graham Davison (g.m.davison@computer.org)
======================================================================*/
-
+#line 29 "icalparameter.c.in"
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif
-#include "ical.h"
+
+#include "icalparameter.h"
+#include "icalproperty.h"
#include "icalerror.h"
+#include "icalmemory.h"
+
#include <stdlib.h> /* for malloc() */
#include <errno.h>
#include <string.h> /* for memset() */
-#include "icalmemory.h"
+
+union icalparameter_impl_data {
+ int v_int;
+ int v_rsvp;
+ icalparameter_cutype v_cutype;
+ icalparameter_encoding v_encoding;
+ icalparameter_fbtype v_fbtype;
+ icalparameter_partstat v_partstat;
+ icalparameter_range v_range;
+ icalparameter_related v_related;
+ icalparameter_reltype v_reltype;
+ icalparameter_role v_role;
+ icalparameter_value v_value;
+ icalparameter_xlicerrortype v_xlicerrortype;
+ icalparameter_xliccomparetype v_xliccomparetype;
+} data;
struct icalparameter_impl
{
icalparameter_kind kind;
char id[5];
int size;
- char* string;
- char* x_name;
+ const char* string;
+ const char* x_name;
icalproperty* parent;
- union data {
- int v_int;
- int v_rsvp;
- icalparameter_cutype v_cutype;
- icalparameter_encoding v_encoding;
- icalparameter_fbtype v_fbtype;
- icalparameter_partstat v_partstat;
- icalparameter_range v_range;
- icalparameter_related v_related;
- icalparameter_reltype v_reltype;
- icalparameter_role v_role;
- icalparameter_value v_value;
- icalparameter_xlicerrortype v_xlicerrortype;
- icalparameter_xliccomparetype v_xliccomparetype;
- } data;
+ union icalparameter_impl_data data;
};
struct icalparameter_impl* icalparameter_new_impl(icalparameter_kind kind)
@@ -134,10 +136,16 @@ icalparameter_new_clone(icalparameter* param)
#if 0
+<<<<<<< icalparameter.c
+=======
+#if 1
+/* The following code is meant to replace most of the case-switch
+ statements, but it is still a work in progress */
+>>>>>>> 1.1.1.5
struct param_string_map {
icalparameter_kind kind;
int val; /* Actually, union of several types of enums */
- char* str;
+ const char* str;
} param_string_map[] =
{
{ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_INDIVIDUAL,"INDIVIDUAL"},
@@ -164,6 +172,9 @@ struct param_string_map {
{ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_CHILD,"CHILD"},
{ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_SIBLING,"SIBLING"},
{ICAL_ROLE_PARAMETER,ICAL_ROLE_CHAIR,"CHAIR"},
+ {ICAL_ROLE_PARAMETER,ICAL_ROLE_REQPARTICIPANT,"REQ-PARTICIPANT"},
+ {ICAL_ROLE_PARAMETER,ICAL_ROLE_OPTPARTICIPANT,"OPT-PARTICIPANT"},
+ {ICAL_ROLE_PARAMETER,ICAL_ROLE_NONPARTICIPANT,"NON-PARTICIPANT"},
{ICAL_RSVP_PARAMETER,ICAL_RSVP_PARAMETER,"TRUE"},
{ICAL_RSVP_PARAMETER,ICAL_RSVP_PARAMETER,"FALSE"},
{ICAL_VALUE_PARAMETER,ICAL_VALUE_BINARY,"BINARY"},
@@ -197,8 +208,39 @@ struct param_string_map {
};
+void icalparameter_set_impl_data(icalparameter_kind kind,
+ union icalparameter_impl_data *data,
+ int value)
+{
-icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
+ switch (kind){
+ case ICAL_CUTYPE_PARAMETER:
+ data->v_cutype=value; break;
+ case ICAL_FBTYPE_PARAMETER:
+ data->v_fbtype=value; break;
+ case ICAL_PARTSTAT_PARAMETER:
+ data->v_partstat=value; break;
+ case ICAL_RANGE_PARAMETER:
+ data->v_range=value; break;
+ case ICAL_RELATED_PARAMETER:
+ data->v_related=value; break;
+ case ICAL_RELTYPE_PARAMETER:
+ data->v_reltype=value; break;
+ case ICAL_ROLE_PARAMETER:
+ data->v_role=value; break;
+ case ICAL_RSVP_PARAMETER:
+ data->v_rsvp=value; break;
+ case ICAL_VALUE_PARAMETER:
+ data->v_value=value; break;
+ case ICAL_XLICERRORTYPE_PARAMETER:
+ data->v_xlicerrortype=value; break;
+ case ICAL_XLICCOMPARETYPE_PARAMETER:
+ data->v_xliccomparetype=value; break;
+ default:
+ }
+}
+
+icalparameter* icalparameter_new_from_string_test(icalparameter_kind kind, char* val)
{
int i =0;
icalparameter* param=0;
@@ -206,6 +248,8 @@ icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
icalerror_check_arg_rz((val!=0),"val");
switch(kind){
+
+ /* These are all string values parameters */
case ICAL_SENTBY_PARAMETER:
case ICAL_TZID_PARAMETER:
case ICAL_X_PARAMETER:
@@ -218,9 +262,15 @@ icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
case ICAL_ALTREP_PARAMETER:
case ICAL_CN_PARAMETER:
{
- if (impl->string == 0){ return no_parameter;}
- strcpy(tend,impl->string);break;
- break;
+ struct icalparameter_impl *impl = icalparameter_new_impl(kind);
+ if (impl == 0) {
+ return 0;
+ }
+ ((struct icalparameter_impl*)param)->string =
+ icalmemory_strdup(val);
+
+ return (icalparameter*) impl;
+
}
case ICAL_NO_PARAMETER:
@@ -229,18 +279,41 @@ icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
}
default: {
+ int found = 0;
/* All other types are enumerated */
- for(i = 0; param_string_map[i].kind != ICAL_NO_PARAMETER){
+ for(i = 0; param_string_map[i].kind != ICAL_NO_PARAMETER; i++){
+
if(kind == param_string_map[i].kind &&
- strcmp(val,param_string_map[i].str) == 0){
-
-
- }
+ strcmp(val,param_string_map[i].str) == 0){
+
+ struct icalparameter_impl *impl =
+ icalparameter_new_impl(kind);
+ found = 1;
+
+ icalparameter_set_impl_data(kind,&impl->data,
+ param_string_map[i].val);
+
+ return (icalparameter*)impl;
+ }
}
+
+ /* Didn't find the standard enumerated type, so it must be
+ an X parameter */
+ if (found ==0) {
+ icalparameter *param = icalparameter_new(kind);
+
+ icalparameter_set_xvalue(param,val);
+
+ return param;
+
+ }
}
+ }
+
+ return 0;
}
-
-#endif
+
+#endif
icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
@@ -616,11 +689,11 @@ icalparameter_free (icalparameter* parameter)
if (impl->string != 0){
- free (impl->string);
+ free ((void*)impl->string);
}
if (impl->x_name != 0){
- free (impl->x_name);
+ free ((void*)impl->x_name);
}
memset(impl,0,sizeof(impl));
@@ -640,7 +713,7 @@ icalparameter_as_ical_string (icalparameter* parameter)
char* buf;
char* buf_ptr;
char *out_buf;
- char *kind_string;
+ const char *kind_string;
char tend[1024]; /* HACK . Should be using memory buffer ring */
@@ -1085,14 +1158,14 @@ icalparameter_isa_parameter (void* parameter)
void
-icalparameter_set_xname (icalparameter* param, char* v)
+icalparameter_set_xname (icalparameter* param, const char* v)
{
struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
icalerror_check_arg_rv( (param!=0),"param");
icalerror_check_arg_rv( (v!=0),"v");
if (impl->x_name != 0){
- free(impl->x_name);
+ free((void*)impl->x_name);
}
impl->x_name = icalmemory_strdup(v);
@@ -1103,7 +1176,7 @@ icalparameter_set_xname (icalparameter* param, char* v)
}
-char*
+const char*
icalparameter_get_xname (icalparameter* param)
{
struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
@@ -1113,7 +1186,7 @@ icalparameter_get_xname (icalparameter* param)
}
void
-icalparameter_set_xvalue (icalparameter* param, char* v)
+icalparameter_set_xvalue (icalparameter* param, const char* v)
{
struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
@@ -1121,7 +1194,7 @@ icalparameter_set_xvalue (icalparameter* param, char* v)
icalerror_check_arg_rv( (v!=0),"v");
if (impl->string != 0){
- free(impl->string);
+ free((void*)impl->string);
}
impl->string = icalmemory_strdup(v);
@@ -1132,7 +1205,7 @@ icalparameter_set_xvalue (icalparameter* param, char* v)
}
-char*
+const char*
icalparameter_get_xvalue (icalparameter* param)
{
struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
@@ -1165,7 +1238,7 @@ icalproperty* icalparameter_get_parent(icalparameter* param)
/* Everything below this line is machine generated. Do not edit. */
/* ALTREP */
-icalparameter* icalparameter_new_altrep(char* v)
+icalparameter* icalparameter_new_altrep(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1184,24 +1257,24 @@ icalparameter* icalparameter_new_altrep(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_altrep(icalparameter* param)
+const char* icalparameter_get_altrep(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_altrep(icalparameter* param, char* v)
+void icalparameter_set_altrep(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* CN */
-icalparameter* icalparameter_new_cn(char* v)
+icalparameter* icalparameter_new_cn(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1220,20 +1293,20 @@ icalparameter* icalparameter_new_cn(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_cn(icalparameter* param)
+const char* icalparameter_get_cn(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_cn(icalparameter* param, char* v)
+void icalparameter_set_cn(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* CUTYPE */
@@ -1278,7 +1351,7 @@ void icalparameter_set_cutype(icalparameter* param, icalparameter_cutype v)
}
/* DELEGATED-FROM */
-icalparameter* icalparameter_new_delegatedfrom(char* v)
+icalparameter* icalparameter_new_delegatedfrom(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1297,24 +1370,24 @@ icalparameter* icalparameter_new_delegatedfrom(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_delegatedfrom(icalparameter* param)
+const char* icalparameter_get_delegatedfrom(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_delegatedfrom(icalparameter* param, char* v)
+void icalparameter_set_delegatedfrom(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* DELEGATED-TO */
-icalparameter* icalparameter_new_delegatedto(char* v)
+icalparameter* icalparameter_new_delegatedto(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1333,24 +1406,24 @@ icalparameter* icalparameter_new_delegatedto(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_delegatedto(icalparameter* param)
+const char* icalparameter_get_delegatedto(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_delegatedto(icalparameter* param, char* v)
+void icalparameter_set_delegatedto(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* DIR */
-icalparameter* icalparameter_new_dir(char* v)
+icalparameter* icalparameter_new_dir(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1369,20 +1442,20 @@ icalparameter* icalparameter_new_dir(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_dir(icalparameter* param)
+const char* icalparameter_get_dir(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_dir(icalparameter* param, char* v)
+void icalparameter_set_dir(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* ENCODING */
@@ -1468,7 +1541,7 @@ void icalparameter_set_fbtype(icalparameter* param, icalparameter_fbtype v)
}
/* FMTTYPE */
-icalparameter* icalparameter_new_fmttype(char* v)
+icalparameter* icalparameter_new_fmttype(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1487,24 +1560,24 @@ icalparameter* icalparameter_new_fmttype(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_fmttype(icalparameter* param)
+const char* icalparameter_get_fmttype(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_fmttype(icalparameter* param, char* v)
+void icalparameter_set_fmttype(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* LANGUAGE */
-icalparameter* icalparameter_new_language(char* v)
+icalparameter* icalparameter_new_language(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1523,24 +1596,24 @@ icalparameter* icalparameter_new_language(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_language(icalparameter* param)
+const char* icalparameter_get_language(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_language(icalparameter* param, char* v)
+void icalparameter_set_language(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* MEMBER */
-icalparameter* icalparameter_new_member(char* v)
+icalparameter* icalparameter_new_member(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1559,20 +1632,20 @@ icalparameter* icalparameter_new_member(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_member(icalparameter* param)
+const char* icalparameter_get_member(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_member(icalparameter* param, char* v)
+void icalparameter_set_member(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* PARTSTAT */
@@ -1813,7 +1886,7 @@ void icalparameter_set_rsvp(icalparameter* param, int v)
}
/* SENT-BY */
-icalparameter* icalparameter_new_sentby(char* v)
+icalparameter* icalparameter_new_sentby(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1832,24 +1905,24 @@ icalparameter* icalparameter_new_sentby(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_sentby(icalparameter* param)
+const char* icalparameter_get_sentby(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_sentby(icalparameter* param, char* v)
+void icalparameter_set_sentby(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* TZID */
-icalparameter* icalparameter_new_tzid(char* v)
+icalparameter* icalparameter_new_tzid(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1868,20 +1941,20 @@ icalparameter* icalparameter_new_tzid(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_tzid(icalparameter* param)
+const char* icalparameter_get_tzid(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_tzid(icalparameter* param, char* v)
+void icalparameter_set_tzid(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* VALUE */
@@ -1926,7 +1999,7 @@ void icalparameter_set_value(icalparameter* param, icalparameter_value v)
}
/* X */
-icalparameter* icalparameter_new_x(char* v)
+icalparameter* icalparameter_new_x(const char* v)
{
struct icalparameter_impl *impl;
icalerror_clear_errno();
@@ -1945,20 +2018,20 @@ icalparameter* icalparameter_new_x(char* v)
return (icalparameter*) impl;
}
-char* icalparameter_get_x(icalparameter* param)
+const char* icalparameter_get_x(icalparameter* param)
{
icalerror_clear_errno();
icalerror_check_arg_rz( (param!=0), "param");
return ((struct icalparameter_impl*)param)->string;
}
-void icalparameter_set_x(icalparameter* param, char* v)
+void icalparameter_set_x(icalparameter* param, const char* v)
{
icalerror_check_arg_rv( (v!=0),"v");
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
+ ((struct icalparameter_impl*)param)->string = strdup(v);
}
/* X-LIC-ERRORTYPE */