From 1994ec032fd25516ca9ed2f5953130794a4767a2 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Mon, 5 Feb 2001 19:16:23 +0000 Subject: Initial revision svn path=/trunk/; revision=7973 --- libical/src/libical/icallangbind.c | 170 +++++++++++++++++++++++++++++++++++++ libical/src/libical/icallangbind.h | 32 +++++++ 2 files changed, 202 insertions(+) create mode 100644 libical/src/libical/icallangbind.c create mode 100644 libical/src/libical/icallangbind.h diff --git a/libical/src/libical/icallangbind.c b/libical/src/libical/icallangbind.c new file mode 100644 index 0000000000..ad1ee2821e --- /dev/null +++ b/libical/src/libical/icallangbind.c @@ -0,0 +1,170 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icallangbind.c + CREATOR: eric 15 dec 2000 + + DESCRIPTION: + + $Id$ + $Locker$ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + This package is free software and is provided "as is" without + express or implied warranty. It may be used, redistributed and/or + modified under the same terms as perl itself. ( Either the Artistic + License or the GPL. ) + + ======================================================================*/ + +#include "ical.h" + + + +int* icallangbind_new_array(int size){ + int* p = malloc(size*sizeof(int)); + return p; /* Caller handles failures */ +} + +void icallangbind_free_array(int* array){ + free(array); +} + +int icallangbind_access_array(int* array, int index) { + return array[index]; +} + +/* Return the nth occurrence of 'prop' in c */ +icalproperty* icallangbind_get_property(icalcomponent *c, int n, const char* prop) +{ + int count; + icalproperty_kind kind; + icalproperty *p; + icalcomponent * comps[3]; + int compno = 0; + int propno = 0; + + if(c == 0 || prop == 0 || n < 0){ + return 0; + } + + kind = icalenum_string_to_property_kind(prop); + + if (kind == ICAL_NO_PROPERTY){ + return 0; + } + + comps[0] = c; + comps[1] = icalcomponent_get_first_real_component(c); + comps[2] = 0; + + if(kind == ICAL_X_PROPERTY){ + + for(compno ==0; comps[compno]!=0 ; compno++){ + + for(p = icalcomponent_get_first_property(comps[compno],kind); + p !=0; + p = icalcomponent_get_next_property(comps[compno],kind) + ){ + + if(strcmp(icalproperty_get_xname(p),prop) == 0){ + + if(propno == n ){ + return p; + } + + propno++; + } + } + } + + } else { + for(compno ==0; comps[compno]!=0 ; compno++){ + + for(propno=0, + p = icalcomponent_get_first_property(comps[compno],kind); + propno != n && p !=0; + propno++, + p = icalcomponent_get_next_property(comps[compno],kind) + ) + { + } + + if(p != 0){ + return p; + } + + } + } + + return 0; + +} + +const char* icallangbind_get_property_val(icalproperty* p) +{ + icalvalue *v; + if (p == 0){ + return 0; + } + + v = icalproperty_get_value(p); + + if(v == 0){ + return v; + } + + return icalvalue_as_ical_string(v); + +} + +const char* icallangbind_get_parameter(icalproperty *p, const char* parameter) +{ + icalparameter_kind kind; + icalparameter *param; + + if(p == 0 || parameter == 0){ + return 0; + } + + kind = icalenum_string_to_parameter_kind(parameter); + + if(kind == ICAL_NO_PARAMETER){ + return 0; + } + + if(kind == ICAL_X_PARAMETER){ + for(param = icalproperty_get_first_parameter(p,ICAL_X_PARAMETER); + param != 0; + param = icalproperty_get_next_parameter(p,ICAL_X_PARAMETER)){ + + if(strcmp(icalparameter_get_xname(param),parameter) ==0){ + return icalparameter_as_ical_string(param); + } + } + + } else { + + param = icalproperty_get_first_parameter(p,kind); + + if (param !=0){ + return icalparameter_as_ical_string(param); + } + + } + + return 0; +} + +icalcomponent* icallangbind_get_component(icalcomponent *c, const char* comp) +{ + if(c == 0 || comp == 0){ + return 0; + } + + +} + + + diff --git a/libical/src/libical/icallangbind.h b/libical/src/libical/icallangbind.h new file mode 100644 index 0000000000..184233147f --- /dev/null +++ b/libical/src/libical/icallangbind.h @@ -0,0 +1,32 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icallangbind.h + CREATOR: eric 25 jan 2001 + + DESCRIPTION: + + $Id$ + $Locker$ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + This package is free software and is provided "as is" without + express or implied warranty. It may be used, redistributed and/or + modified under the same terms as perl itself. ( Either the Artistic + License or the GPL. ) + + ======================================================================*/ + +#ifndef __ICALLANGBIND_H__ +#define __ICALLANGBIND_H__ + +int* icallangbind_new_array(int size); +void icallangbind_free_array(int* array); +int icallangbind_access_array(int* array, int index); +icalproperty* icallangbind_get_property(icalcomponent *c, int n, const char* prop); +const char* icallangbind_get_property_val(icalproperty* p); +const char* icallangbind_get_parameter(icalproperty *p, const char* parameter); +icalcomponent* icallangbind_get_component(icalcomponent *c, const char* comp); + +#endif /*__ICALLANGBIND_H__*/ -- cgit