summaryrefslogtreecommitdiff
path: root/src/python/LibicalWrap.i
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/LibicalWrap.i')
-rw-r--r--src/python/LibicalWrap.i562
1 files changed, 151 insertions, 411 deletions
diff --git a/src/python/LibicalWrap.i b/src/python/LibicalWrap.i
index bf3e19c..bc1f199 100644
--- a/src/python/LibicalWrap.i
+++ b/src/python/LibicalWrap.i
@@ -26,428 +26,168 @@
%{
-#include "ical.h"
-#include "icalss.h"
+#include "libical/ical.h"
+#include "libicalss/icalss.h"
#include <sys/types.h> /* for size_t */
#include <time.h>
%}
+%pythoncode %{
+import Error
-#include "fcntl.h" /* For Open flags */
-
-typedef void icalcomponent;
-typedef void icalproperty;
-
-icalcomponent* icalparser_parse_string(char* str);
-
-
-/* actually takes icalcomponent_kind */
-icalcomponent* icalcomponent_new(int kind);
-icalcomponent* icalcomponent_new_clone(icalcomponent* component);
-icalcomponent* icalcomponent_new_from_string(char* str);
-
-const char* icalcomponent_kind_to_string(int kind);
-int icalcomponent_string_to_kind(const char* string);
-
-
-char* icalcomponent_as_ical_string(icalcomponent* component);
-
-void icalcomponent_free(icalcomponent* component);
-int icalcomponent_count_errors(icalcomponent* component);
-void icalcomponent_strip_errors(icalcomponent* component);
-void icalcomponent_convert_errors(icalcomponent* component);
-
-icalproperty* icalcomponent_get_current_property(icalcomponent* component);
-
-icalproperty* icalcomponent_get_first_property(icalcomponent* component,
- int kind);
-icalproperty* icalcomponent_get_next_property(icalcomponent* component,
- int kind);
-
-icalcomponent* icalcomponent_get_current_component (icalcomponent* component);
-
-icalcomponent* icalcomponent_get_first_component(icalcomponent* component,
- int kind);
-icalcomponent* icalcomponent_get_next_component(icalcomponent* component,
- int kind);
-
-void icalcomponent_add_property(icalcomponent* component,
- icalproperty* property);
-
-void icalcomponent_remove_property(icalcomponent* component,
- icalproperty* property);
-
-
-void icalcomponent_add_component(icalcomponent* parent,
- icalcomponent* child);
-
-void icalcomponent_remove_component(icalcomponent* parent,
- icalcomponent* child);
-
-icalcomponent* icalcomponent_get_inner(icalcomponent* comp);
-
-icalcomponent* icalcomponent_get_parent(icalcomponent* component);
-int icalcomponent_isa(icalcomponent* component);
-
-int icalrestriction_check(icalcomponent* comp);
-
-/* actually takes icalproperty_kind */
-icalproperty* icalproperty_new(int kind);
-
-icalproperty* icalproperty_new_from_string(char* str);
-
-char* icalproperty_as_ical_string(icalproperty *prop);
-
-void icalproperty_set_parameter_from_string(icalproperty* prop,
- const char* name, const char* value);
-const char* icalproperty_get_parameter_as_string(icalproperty* prop,
- const char* name);
-void icalproperty_remove_parameter_by_name(icalproperty* prop,
- const char *name);
-
-void icalproperty_set_value_from_string(icalproperty* prop,const char* value, const char * kind);
-
-const char* icalproperty_get_value_as_string(icalproperty* prop);
-icalcomponent* icalproperty_get_parent(icalproperty* property);
-
-const char* icalproperty_kind_to_string(int kind);
-int icalproperty_string_to_kind(const char* string);
-int icalproperty_string_to_enum(const char* str);
-int icalproperty_enum_belongs_to_property(int kind, int e);
-int icalproperty_kind_to_value_kind(int kind);
-
-/* Deal with X properties */
-
-void icalproperty_set_x_name(icalproperty* prop, const char* name);
-const char* icalproperty_get_x_name(icalproperty* prop);
-
-/* Return the name of the property -- the type name converted to a
- string, or the value of _get_x_name if the type is and X property */
-const char* icalproperty_get_name (const icalproperty* prop);
-
-
-int icalerror_supress(const char* error);
-void icalerror_restore(const char* error, int es);
-char* icalerror_perror();
-void icalerror_clear_errno(void);
-
-
-const char* icalvalue_kind_to_string(int kind);
-int icalvalue_string_to_kind(const char* str);
-
-char* icalparameter_as_ical_string(icalparameter* parameter);
-
-const char* icalparameter_kind_to_string(int kind);
-int icalparameter_string_to_kind(const char* string);
-
-int* icallangbind_new_array(int size);
-void icallangbind_free_array(int* array);
-int icallangbind_access_array(int* array, int index);
-
-
-
-/* int icalrecur_expand_recurrence(char* rule, int start,
- int count, int* array);*/
-int icalrecur_expand_recurrence(char* rule, int start,
- int count, time_t* array);
-
-
-/* Iterate through properties, components and parameters using strings for the kind */
-icalproperty* icallangbind_get_first_property(icalcomponent *c,
- const char* prop);
-
-icalproperty* icallangbind_get_next_property(icalcomponent *c,
- const char* prop);
-
-icalcomponent* icallangbind_get_first_component(icalcomponent *c,
- const char* comp);
-
-icalcomponent* icallangbind_get_next_component(icalcomponent *c,
- const char* comp);
-
-icalparameter* icallangbind_get_first_parameter(icalproperty *prop);
-
-icalparameter* icallangbind_get_next_parameter(icalproperty *prop);
-
-
-/* Return a string that can be evaluated in perl or python to
- generated a hash that holds the property's name, value and
- parameters. Sep is the hash seperation string, "=>" for perl and
- ":" for python */
-const char* icallangbind_property_eval_string(icalproperty* prop, char* sep);
-
-int icallangbind_string_to_open_flag(const char* str);
-
-const char* icallangbind_quote_as_ical(const char* str);
-
-/***********************************************************************
- Time routines
-***********************************************************************/
-
-
-struct icaltimetype
-{
- int year;
- int month;
- int day;
- int hour;
- int minute;
- int second;
-};
-
-
-/* Convert seconds past UNIX epoch to a timetype*/
-struct icaltimetype icaltime_from_timet(int v, int is_date);
-
-/** Convert seconds past UNIX epoch to a timetype, using timezones. */
-struct icaltimetype icaltime_from_timet_with_zone(int tm,
- int is_date, icaltimezone *zone);
-
-/* Return the time as seconds past the UNIX epoch */
-/* Normally, this returns a time_t, but SWIG tries to turn that type
- into a pointer */
-int icaltime_as_timet(struct icaltimetype tt);
-
-/* Return a string represention of the time, in RFC2445 format. The
- string is owned by libical */
-char* icaltime_as_ical_string(struct icaltimetype tt);
-
-/* create a time from an ISO format string */
-struct icaltimetype icaltime_from_string(const char* str);
-
-/* Routines for handling timezones */
-/* Return a null time, which indicates no time has been set. This time represent the beginning of the epoch */
-struct icaltimetype icaltime_null_time(void);
-
-/* Return true of the time is null. */
-int icaltime_is_null_time(struct icaltimetype t);
-
-/* Returns false if the time is clearly invalid, but is not null. This
- is usually the result of creating a new time type buy not clearing
- it, or setting one of the flags to an illegal value. */
-int icaltime_is_valid_time(struct icaltimetype t);
-
-/** @brief Return the timezone */
-const icaltimezone *icaltime_get_timezone(const struct icaltimetype t);
-
-/** @brief Return the tzid, or NULL for a floating time */
-char *icaltime_get_tzid(const struct icaltimetype t);
-
-/** @brief Set the timezone */
-struct icaltimetype icaltime_set_timezone(struct icaltimetype *t,
- const icaltimezone *zone);
-
-/* Returns true if time is of DATE type, false if DATE-TIME */
-int icaltime_is_date(struct icaltimetype t);
-
-/* Returns true if time is relative to UTC zone */
-int icaltime_is_utc(struct icaltimetype t);
-
-/* Reset all of the time components to be in their normal ranges. For
- instance, given a time with minutes=70, the minutes will be reduces
- to 10, and the hour incremented. This allows the caller to do
- arithmetic on times without worrying about overflow or
- underflow. */
-struct icaltimetype icaltime_normalize(struct icaltimetype t);
-
-/* Return the day of the year of the given time */
-short icaltime_day_of_year(struct icaltimetype t);
-
-/* Create a new time, given a day of year and a year. */
-struct icaltimetype icaltime_from_day_of_year(short doy, short year);
-
-/* Return the day of the week of the given time. Sunday is 0 */
-short icaltime_day_of_week(struct icaltimetype t);
-
-/* Return the day of the year for the Sunday of the week that the
- given time is within. */
-short icaltime_start_doy_of_week(struct icaltimetype t);
-
-/* Return the week number for the week the given time is within */
-short icaltime_week_number(struct icaltimetype t);
-
-/* Return -1, 0, or 1 to indicate that a<b, a==b or a>b */
-int icaltime_compare(struct icaltimetype a,struct icaltimetype b);
-
-/* like icaltime_compare, but only use the date parts. */
-int icaltime_compare_date_only(struct icaltimetype a, struct icaltimetype b);
-
-/* Return the number of days in the given month */
-short icaltime_days_in_month(short month,short year);
-
-/** convert tt, of timezone tzid, into a utc time. Does nothing if the
- time is already UTC. */
-struct icaltimetype icaltime_convert_to_zone(struct icaltimetype tt,
- icaltimezone *zone);
-
-
-
-/***********************************************************************
- Duration Routines
-***********************************************************************/
-
-
-struct icaldurationtype
-{
- int is_neg;
- unsigned int days;
- unsigned int weeks;
- unsigned int hours;
- unsigned int minutes;
- unsigned int seconds;
-};
-
-struct icaldurationtype icaldurationtype_from_int(int t);
-struct icaldurationtype icaldurationtype_from_string(const char*);
-int icaldurationtype_as_int(struct icaldurationtype duration);
-char* icaldurationtype_as_ical_string(struct icaldurationtype d);
-struct icaldurationtype icaldurationtype_null_duration();
-int icaldurationtype_is_null_duration(struct icaldurationtype d);
-
-struct icaltimetype icaltime_add(struct icaltimetype t,
- struct icaldurationtype d);
-
-struct icaldurationtype icaltime_subtract(struct icaltimetype t1,
- struct icaltimetype t2);
-
-
-/***********************************************************************
- Period Routines
-***********************************************************************/
-
-
-struct icalperiodtype
-{
- struct icaltimetype start;
- struct icaltimetype end;
- struct icaldurationtype duration;
-};
-
-struct icalperiodtype icalperiodtype_from_string (const char* str);
-
-const char* icalperiodtype_as_ical_string(struct icalperiodtype p);
-struct icalperiodtype icalperiodtype_null_period();
-int icalperiodtype_is_null_period(struct icalperiodtype p);
-int icalperiodtype_is_valid_period(struct icalperiodtype p);
-
-/***********************************************************************
- * timezone handling routines
-***********************************************************************/
-
-/** Returns a single builtin timezone, given its Olson city name. */
-icaltimezone* icaltimezone_get_builtin_timezone (const char *location);
-
-/** Returns the UTC timezone. */
-icaltimezone* icaltimezone_get_utc_timezone (void);
-
-/***********************************************************************
- Storage Routines
-***********************************************************************/
-
-/**
- * @brief options for opening an icalfileset.
- *
- * These options should be passed to the icalset_new() function
- */
-
-struct icalfileset_options {
- int flags; /**< flags for open() O_RDONLY, etc */
- mode_t mode; /**< file mode */
- icalcluster *cluster; /**< use this cluster to initialize data */
-};
-
-icalset* icalfileset_new(const char* path);
-icalset* icalfileset_new_reader(const char* path);
-icalset* icalfileset_new_writer(const char* path);
-
-icalset* icalfileset_init(icalset *set, const char *dsn, void* options);
-
-/* icalfileset* icalfileset_new_from_cluster(const char* path, icalcluster *cluster); */
-
-icalcluster* icalfileset_produce_icalcluster(const char *path);
-
-void icalfileset_free(icalset* cluster);
-
-const char* icalfileset_path(icalset* cluster);
-
-/* Mark the cluster as changed, so it will be written to disk when it
- is freed. Commit writes to disk immediately. */
-void icalfileset_mark(icalset* set);
-icalerrorenum icalfileset_commit(icalset* set);
-
-icalerrorenum icalfileset_add_component(icalset* set,
- icalcomponent* child);
-
-icalerrorenum icalfileset_remove_component(icalset* set,
- icalcomponent* child);
-
-int icalfileset_count_components(icalset* set,
- int kind);
-
-/**
- * Restrict the component returned by icalfileset_first, _next to those
- * that pass the gauge. _clear removes the gauge
- */
-icalerrorenum icalfileset_select(icalset* set, icalgauge* gauge);
-
-/** clear the gauge **/
-void icalfileset_clear(icalset* set);
-
-/** Get and search for a component by uid **/
-icalcomponent* icalfileset_fetch(icalset* set, const char* uid);
-int icalfileset_has_uid(icalset* set, const char* uid);
-icalcomponent* icalfileset_fetch_match(icalset* set, icalcomponent *c);
-
-
-/**
- * Modify components according to the MODIFY method of CAP. Works on the
- * currently selected components.
- */
-icalerrorenum icalfileset_modify(icalset* set,
- icalcomponent *oldcomp,
- icalcomponent *newcomp);
-
-/* Iterate through components. If a gauge has been defined, these
- will skip over components that do not pass the gauge */
-
-icalcomponent* icalfileset_get_current_component (icalset* cluster);
-icalcomponent* icalfileset_get_first_component(icalset* cluster);
-icalcomponent* icalfileset_get_next_component(icalset* cluster);
-
-/* External iterator for thread safety */
-icalsetiter icalfileset_begin_component(icalset* set, int kind, icalgauge* gauge);
-icalcomponent * icalfilesetiter_to_next(icalset* set, icalsetiter *iter);
-icalcomponent* icalfileset_form_a_matched_recurrence_component(icalsetiter* itr);
-
-/***********************************************************************
- Gauge Routines
-***********************************************************************/
-
-icalgauge* icalgauge_new_from_sql(char* sql, int expand);
-
-int icalgauge_get_expand(icalgauge* gauge);
-
-void icalgauge_free(icalgauge* gauge);
+%}
-/* Pending Implementation */
-/* char* icalgauge_as_sql(icalcomponent* gauge); */
+%feature("autodoc", "1");
+
+typedef int time_t;
+
+
+// This is declared as an extern, but never used in the library.
+%ignore icalfileset_safe_saves;
+
+
+// Ignore these declarations because there does not exist a definition for them
+%ignore _icalerror_set_errno(icalerrorenum);
+%ignore icalattachtype_add_reference(struct icalattachtype* v);
+%ignore icalattachtype_get_binary(struct icalattachtype* v);
+%ignore icalattachtype_set_binary(struct icalattachtype* v, char* binary,
+ int owns);
+%ignore icalattachtype_get_url(struct icalattachtype* v);
+%ignore icalattachtype_set_url(struct icalattachtype* v, char* url);
+%ignore icalattachtype_free(struct icalattachtype* v);
+%ignore icalattachtype_get_base64(struct icalattachtype* v);
+%ignore icalattachtype_new(void);
+%ignore icalattachtype_set_base64(struct icalattachtype* v, char* base64,
+ int owns);
+%ignore icalclassify_class_to_string(icalproperty_xlicclass c);
+%ignore icalfileset_new_from_cluster(const char* path, icalcluster *cluster);
+%ignore icalgauge_as_sql(icalcomponent* gauge);
+%ignore icalgauge_new_clone(icalgauge* g, icalcomponent* comp);
+%ignore icallangbind_get_component(icalcomponent *c, const char* comp);
+%ignore icallangbind_get_parameter(icalproperty *p, const char* parameter);
+%ignore icallangbind_get_property(icalcomponent *c, int n, const char* prop);
+%ignore icallangbind_get_property_val(icalproperty* p);
+%ignore icalmessage_new_cancel_all(icalcomponent* c,
+ const char* user,
+ const char* msg);
+%ignore icalmessage_new_cancel_event(icalcomponent* c,
+ const char* user,
+ const char* msg);
+%ignore icalmessage_new_cancel_instance(icalcomponent* c,
+ const char* user,
+ const char* msg);
+%ignore icalmime_as_mime_string(char* icalcomponent);
+%ignore icalparameter_is_valid(icalparameter* parameter);
+%ignore icalparser_parse_value(icalvalue_kind kind,
+ const char* str, icalcomponent** errors);
+%ignore icalrecur_iterator_decrement_count(icalrecur_iterator*);
+%ignore icalrestriction_is_parameter_allowed(icalproperty_kind property,
+ icalparameter_kind parameter);
+%ignore icalset_clear_select(icalset* set);
+%ignore icalspanlist_make_free_list(icalspanlist* sl);
+%ignore icalspanlist_make_busy_list(icalspanlist* sl);
+%ignore icalspanlist_next_busy_time(icalspanlist* sl,
+ struct icaltimetype t);
+%ignore icaltime_compare_with_zone(const struct icaltimetype a,
+ const struct icaltimetype b);
+%ignore icaltime_days_in_year (const int year);
+%ignore icaltime_from_string_with_zone(const char* str,
+ const icaltimezone *zone);
+%ignore icaltime_from_week_number(const int week_number,
+ const int year);
+%ignore icaltime_is_floating(const struct icaltimetype t);
+%ignore icaltimezonetype_free(struct icaltimezonetype tzt);
+
+
+// Remove depreciated functions
+%ignore icalproperty_string_to_enum(const char* str);
+%ignore icaltimezone_get_utc_offset(icaltimezone *zone,
+ struct icaltimetype *tt,
+ int *is_daylight);
+%ignore icaltimezone_get_utc_offset_of_utc_time (icaltimezone *zone,
+ struct icaltimetype *tt,
+ int *is_daylight);
+%ignore icaltime_start_doy_of_week(const struct icaltimetype t);
+%ignore icalcomponent_get_span(icalcomponent* comp);
+%ignore icalproperty_remove_parameter(icalproperty* prop, icalparameter_kind kind);
+
+// Can't wrap va_list
+%ignore icalproperty_add_parameters(struct icalproperty_impl *prop, va_list args);
+
+#ifndef _DLOPEN_TEST
+%ignore icalset_register_class(icalset *set);
+#endif
+
+
+//#include "fcntl.h" /* For Open flags */
+%include "libical/ical.h"
+%include "libicalss/icalss.h"
+
+%inline %{
+/* declare some internal functions which are not in the header file. */
+void icalproperty_set_parent(icalproperty* property,
+ icalcomponent* component);
+icalcomponent* icalproperty_get_parent(const icalproperty* property);
+
+void icalvalue_set_parent(icalvalue* value,
+ icalproperty* property);
+icalproperty* icalvalue_get_parent(icalvalue* value);
+
+void icalparameter_set_parent(icalparameter* param,
+ icalproperty* property);
+icalproperty* icalparameter_get_parent(icalparameter* value);
-void icalgauge_dump(icalgauge* gauge);
+%}
-/** @brief Return true if comp matches the gauge.
- *
- * The component must be in
- * cannonical form -- a VCALENDAR with one VEVENT, VTODO or VJOURNAL
- * sub component
- */
-int icalgauge_compare(icalgauge* g, icalcomponent* comp);
+%pythoncode %{
+
+# Helper functions for overriding default swig property methods
+def _swig_set_properties(cls, properties={}):
+ for propname, props in properties.items():
+ if len(props) > 0:
+ cls.__swig_getmethods__[propname] = props[0]
+ if len(props) > 1:
+ cls.__swig_setmethods__[propname] = props[1]
+ # Currently not used by swig
+ if len(props) > 2:
+ cls.__swig_delmethods__[propname] = props[2]
+
+ if _newclass:
+ setattr(cls, propname, _swig_property(*props))
+
+def _swig_remove_private_properties(cls, properties=tuple()):
+ # By default remove all properties
+ if not properties:
+ props = cls.__swig_getmethods__.copy()
+ props.update(cls.__swig_setmethods__)
+ #props.update(cls.__swig_delmethods__)
+ properties = props.keys()
+
+ for propname in properties:
+ if cls.__swig_getmethods__.has_key(propname):
+ del cls.__swig_getmethods__[propname]
+ if cls.__swig_setmethods__.has_key(propname):
+ del cls.__swig_setmethods__[propname]
+ # Currently not used by swig
+ #if cls.__swig_delmethods__.has_key(propname):
+ # del cls.__swig_delmethods__[propname]
+
+ if _newclass and hasattr(cls, propname):
+ delattr(cls, propname)
+
+import new
+def _swig_add_instance_methods(klass, meth_dict={}):
+ for methname, func in meth_dict.items():
+ meth = new.instancemethod(func, None, klass)
+ if not methname: methname = func.__name__
+ func.__name__ = methname
+ setattr(klass, methname, meth)
+%}
-/* Pending Implementation */
-/** Clone the component, but only return the properties
- * specified in the gauge */
-/* icalcomponent* icalgauge_new_clone(icalgauge* g, icalcomponent* comp); */
+%include "LibicalWrap_icaltimezone.i"
+%include "LibicalWrap_icaltime.i"