From 697761cc337aa77a47140c8df50ed84bc25e23f6 Mon Sep 17 00:00:00 2001 From: Hans Petter Date: Thu, 11 Sep 2003 22:04:44 +0000 Subject: Import new libical from mainline HEAD and make appropriate changes to Evolution. svn path=/trunk/; revision=22538 --- libical/src/.cvsignore | 5 +- libical/src/Makefile.am | 16 +- libical/src/Net-ICal-Libical/MANIFEST | 16 + libical/src/Net-ICal-Libical/Makefile.PL | 42 + libical/src/Net-ICal-Libical/README | 7 + .../src/Net-ICal-Libical/lib/Net/ICal/Libical.pm | 386 +++ .../lib/Net/ICal/Libical/Component.pm | 175 + .../lib/Net/ICal/Libical/Duration.pm | 160 + .../lib/Net/ICal/Libical/Period.pm | 359 ++ .../lib/Net/ICal/Libical/Property.pm | 173 + .../Net-ICal-Libical/lib/Net/ICal/Libical/Time.pm | 468 +++ libical/src/Net-ICal-Libical/netical.i | 317 ++ libical/src/Net-ICal-Libical/netical_wrap.c | 3048 +++++++++++++++++ libical/src/Net-ICal-Libical/netical_wrap.doc | 393 +++ libical/src/Net-ICal-Libical/test-data/2446.mime | 3426 ++++++++++++++++++++ libical/src/Net-ICal-Libical/test-data/error | 58 + .../src/Net-ICal-Libical/test-data/mail-examples | 262 ++ libical/src/Net-ICal-Libical/test-data/no-error | 26 + libical/src/Net-ICal-Libical/test-data/rfc2445.ics | 321 ++ libical/src/Net-ICal-Libical/test-data/rfc2446.ics | 1004 ++++++ .../Net-ICal-Libical/test-data/single-with-error | 39 + libical/src/Net-ICal-Libical/test/component.pl | 106 + libical/src/Net-ICal-Libical/test/libical.pl | 94 + libical/src/Net-ICal-Libical/test/swig.pl | 29 + libical/src/java/ICalDurationType.java | 114 + libical/src/java/ICalParameter.java | 259 ++ libical/src/java/ICalPeriodType.java | 71 + libical/src/java/ICalProperty.java | 507 +++ libical/src/java/ICalRecurrenceType.java | 284 ++ libical/src/java/ICalTimeType.java | 145 + libical/src/java/ICalTriggerType.java | 93 + libical/src/java/ICalValue.java | 209 ++ libical/src/java/Makefile.am | 51 + libical/src/java/VAgenda.java | 24 + libical/src/java/VAlarm.java | 24 + libical/src/java/VCalendar.java | 24 + libical/src/java/VComponent.java | 199 ++ libical/src/java/VEvent.java | 24 + libical/src/java/VFreeBusy.java | 18 + libical/src/java/VQuery.java | 24 + libical/src/java/VToDo.java | 24 + libical/src/java/jlibical_consts_cxx.h | 42 + libical/src/java/jlibical_utils_cxx.cpp | 458 +++ libical/src/java/jlibical_utils_cxx.h | 59 + libical/src/java/jniICalDurationType_cxx.cpp | 130 + libical/src/java/jniICalDurationType_cxx.h | 47 + libical/src/java/jniICalPeriodType_cxx.cpp | 144 + libical/src/java/jniICalPeriodType_cxx.h | 42 + libical/src/java/jniICalRecurrenceType_cxx.cpp | 347 ++ libical/src/java/jniICalRecurrenceType_cxx.h | 60 + libical/src/java/jniICalTimeType_cxx.cpp | 176 + libical/src/java/jniICalTimeType_cxx.h | 52 + libical/src/java/jniICalTriggerType_cxx.cpp | 111 + libical/src/java/jniICalTriggerType_cxx.h | 39 + .../src/java/net_cp_jlibical_ICalParameter_cxx.cpp | 310 ++ .../src/java/net_cp_jlibical_ICalParameter_cxx.h | 143 + .../src/java/net_cp_jlibical_ICalProperty_cxx.cpp | 1690 ++++++++++ .../src/java/net_cp_jlibical_ICalProperty_cxx.h | 654 ++++ libical/src/java/net_cp_jlibical_ICalValue_cxx.cpp | 436 +++ libical/src/java/net_cp_jlibical_ICalValue_cxx.h | 182 ++ .../src/java/net_cp_jlibical_VComponent_cxx.cpp | 956 ++++++ libical/src/java/net_cp_jlibical_VComponent_cxx.h | 358 ++ libical/src/java/testjni.java | 377 +++ libical/src/libical/.cvsignore | 29 +- libical/src/libical/Makefile.am | 114 +- libical/src/libical/astime.h | 65 + libical/src/libical/caldate.c | 176 + libical/src/libical/icalarray.c | 24 +- libical/src/libical/icalarray.h | 18 +- libical/src/libical/icalattach.c | 139 + libical/src/libical/icalattach.h | 60 + libical/src/libical/icalattachimpl.h | 59 + libical/src/libical/icalcomponent.c | 1505 ++++++--- libical/src/libical/icalcomponent.h | 86 +- libical/src/libical/icalderivedparameter.c.in | 44 +- libical/src/libical/icalderivedparameter.h.in | 5 +- libical/src/libical/icalderivedproperty.c.in | 83 +- libical/src/libical/icalderivedproperty.h.in | 7 +- libical/src/libical/icalderivedvalue.c.in | 102 +- libical/src/libical/icalderivedvalue.h.in | 20 +- libical/src/libical/icalduration.c | 84 +- libical/src/libical/icalduration.h | 2 + libical/src/libical/icalenums.c | 39 +- libical/src/libical/icalenums.h | 11 +- libical/src/libical/icalerror.c | 67 +- libical/src/libical/icalerror.h | 25 +- libical/src/libical/icallangbind.c | 46 +- libical/src/libical/icallangbind.h | 5 + libical/src/libical/icalmemory.c | 148 +- libical/src/libical/icalmemory.h | 18 +- libical/src/libical/icalmime.c | 18 +- libical/src/libical/icalparameter.c | 109 +- libical/src/libical/icalparameter.h | 2 +- libical/src/libical/icalparameter_cxx.cpp | 289 ++ libical/src/libical/icalparameter_cxx.h | 159 + libical/src/libical/icalparser.c | 345 +- libical/src/libical/icalparser.h | 29 +- libical/src/libical/icalperiod.c | 21 +- libical/src/libical/icalperiod.h | 6 +- libical/src/libical/icalproperty.c | 457 +-- libical/src/libical/icalproperty.h | 44 +- libical/src/libical/icalproperty_cxx.cpp | 702 ++++ libical/src/libical/icalproperty_cxx.h | 365 +++ libical/src/libical/icalrecur.c | 820 ++--- libical/src/libical/icalrecur.h | 72 +- libical/src/libical/icalrestriction.c.in | 30 +- libical/src/libical/icalrestriction.h | 1 - libical/src/libical/icaltime.c | 975 ++++-- libical/src/libical/icaltime.h | 263 +- libical/src/libical/icaltimezone.c | 463 +-- libical/src/libical/icaltimezone.h | 94 +- libical/src/libical/icaltypes.c | 144 +- libical/src/libical/icaltypes.h | 40 +- libical/src/libical/icalvalue.c | 514 +-- libical/src/libical/icalvalue.h | 27 +- libical/src/libical/icalvalue_cxx.cpp | 262 ++ libical/src/libical/icalvalue_cxx.h | 151 + libical/src/libical/icalvalueimpl.h | 34 +- libical/src/libical/icptrholder.h | 93 + libical/src/libical/pvl.c | 497 +-- libical/src/libical/pvl.h | 37 +- libical/src/libical/sspm.c | 22 +- libical/src/libical/vcomponent.cpp | 817 +++++ libical/src/libical/vcomponent.h | 340 ++ libical/src/libical/vsnprintf.c | 11 +- libical/src/libicalcap/Makefile.am | 77 + libical/src/libicalcap/client.c | 187 ++ libical/src/libicalcap/icalcap.c | 44 + libical/src/libicalcap/icalcap.h | 47 + libical/src/libicalcap/icalcap_impl.h | 34 + libical/src/libicalcap/icalcap_message.c | 225 ++ libical/src/libicalcap/icalcap_message_impl.h | 33 + libical/src/libicalcap/icalcap_rr.c | 545 ++++ libical/src/libicalcap/icalcap_server.c | 52 + libical/src/libicalcap/icalcap_server.h | 19 + libical/src/libicalcap/icalcap_server_impl.h | 31 + libical/src/libicalcap/icalcap_session.c | 62 + libical/src/libicalcap/icalcap_session.h | 15 + libical/src/libicalcap/icalcap_session_impl.h | 36 + libical/src/libicalcap/icalcap_utils.c | 134 + libical/src/libicalss/.cvsignore | 6 +- libical/src/libicalss/Makefile.am | 117 +- libical/src/libicalss/icalbdbset.c | 1598 +++++++++ libical/src/libicalss/icalbdbset.h | 147 + libical/src/libicalss/icalbdbset_cxx.h | 61 + libical/src/libicalss/icalbdbsetimpl.h | 41 + libical/src/libicalss/icalcalendar.c | 52 +- libical/src/libicalss/icalcalendar.h | 2 +- libical/src/libicalss/icalcaputil.h | 58 + libical/src/libicalss/icalclassify.c | 174 +- libical/src/libicalss/icalclassify.h | 36 +- libical/src/libicalss/icalcluster.c | 245 ++ libical/src/libicalss/icalcluster.h | 61 + libical/src/libicalss/icalclusterimpl.h | 45 + libical/src/libicalss/icaldirset.c | 518 +-- libical/src/libicalss/icaldirset.h | 54 +- libical/src/libicalss/icaldirsetimpl.h | 19 +- libical/src/libicalss/icalfileset.c | 704 ++-- libical/src/libicalss/icalfileset.h | 96 +- libical/src/libicalss/icalfilesetimpl.h | 18 +- libical/src/libicalss/icalgauge.c | 172 +- libical/src/libicalss/icalgauge.h | 26 +- libical/src/libicalss/icalgaugeimpl.h | 12 +- libical/src/libicalss/icalmessage.c | 16 +- libical/src/libicalss/icalset.c | 528 +-- libical/src/libicalss/icalset.h | 121 +- libical/src/libicalss/icalspanlist.c | 386 ++- libical/src/libicalss/icalspanlist.h | 29 +- libical/src/libicalss/icalspanlist_cxx.cpp | 92 + libical/src/libicalss/icalspanlist_cxx.h | 53 + libical/src/libicalss/icalsslexer.l | 30 +- libical/src/libicalss/icalssyacc.h | 45 +- libical/src/libicalss/icalssyacc.y | 77 +- libical/src/libicalvcal/.cvsignore | 15 +- libical/src/libicalvcal/Makefile.am | 19 +- libical/src/libicalvcal/icalvcal.c | 67 +- libical/src/libicalvcal/icalvcal.h | 2 +- libical/src/libicalvcal/vcc.y | 9 +- libical/src/libicalvcal/vobject.c | 12 +- libical/src/python/.cvsignore | 9 +- libical/src/python/Attendee.py | 114 + libical/src/python/ChangeLog | 20 + libical/src/python/Component.py | 287 +- libical/src/python/DerivedProperties.py | 102 +- libical/src/python/Duration.py | 92 + libical/src/python/Error.py | 10 + libical/src/python/Gauge.py | 88 + libical/src/python/Libical.py | 17 +- libical/src/python/LibicalWrap.i | 231 +- libical/src/python/Makefile.am | 6 + libical/src/python/Period.py | 216 ++ libical/src/python/Property.py | 663 +--- libical/src/python/Store.py | 55 +- libical/src/python/Time.py | 215 ++ libical/src/python/littlefile.txt | 3 + libical/src/python/python-binding.txt | 16 +- libical/src/python/test.py | 294 +- libical/src/test/.cvsignore | 25 +- libical/src/test/2445.ics | 326 ++ libical/src/test/2446.ics | 0 libical/src/test/Makefile.am | 41 +- libical/src/test/copycluster.c | 27 +- libical/src/test/findobj.c | 7 +- libical/src/test/itip.ics | 14 + libical/src/test/outgoing.ics | 544 ++++ libical/src/test/process.c | 115 +- libical/src/test/recur.c | 151 +- libical/src/test/regression-classify.c | 187 ++ libical/src/test/regression-component.c | 580 ++++ libical/src/test/regression-cxx.cpp | 137 + libical/src/test/regression-recur.c | 194 ++ libical/src/test/regression-storage.c | 804 +++++ libical/src/test/regression-utils.c | 169 + libical/src/test/regression.c | 3028 ++++++++--------- libical/src/test/regression.h | 53 + libical/src/test/storage.c | 448 ++- libical/src/test/stow.c | 114 +- libical/src/test/test_fileset.ics | 60 + libical/src/test/testclassify.c | 170 +- libical/src/test/testmime.c | 5 +- 220 files changed, 41195 insertions(+), 6817 deletions(-) create mode 100644 libical/src/Net-ICal-Libical/MANIFEST create mode 100644 libical/src/Net-ICal-Libical/Makefile.PL create mode 100644 libical/src/Net-ICal-Libical/README create mode 100644 libical/src/Net-ICal-Libical/lib/Net/ICal/Libical.pm create mode 100644 libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm create mode 100644 libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm create mode 100644 libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm create mode 100644 libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Property.pm create mode 100644 libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Time.pm create mode 100644 libical/src/Net-ICal-Libical/netical.i create mode 100644 libical/src/Net-ICal-Libical/netical_wrap.c create mode 100644 libical/src/Net-ICal-Libical/netical_wrap.doc create mode 100644 libical/src/Net-ICal-Libical/test-data/2446.mime create mode 100644 libical/src/Net-ICal-Libical/test-data/error create mode 100644 libical/src/Net-ICal-Libical/test-data/mail-examples create mode 100644 libical/src/Net-ICal-Libical/test-data/no-error create mode 100644 libical/src/Net-ICal-Libical/test-data/rfc2445.ics create mode 100644 libical/src/Net-ICal-Libical/test-data/rfc2446.ics create mode 100644 libical/src/Net-ICal-Libical/test-data/single-with-error create mode 100644 libical/src/Net-ICal-Libical/test/component.pl create mode 100755 libical/src/Net-ICal-Libical/test/libical.pl create mode 100755 libical/src/Net-ICal-Libical/test/swig.pl create mode 100644 libical/src/java/ICalDurationType.java create mode 100644 libical/src/java/ICalParameter.java create mode 100644 libical/src/java/ICalPeriodType.java create mode 100644 libical/src/java/ICalProperty.java create mode 100644 libical/src/java/ICalRecurrenceType.java create mode 100644 libical/src/java/ICalTimeType.java create mode 100644 libical/src/java/ICalTriggerType.java create mode 100644 libical/src/java/ICalValue.java create mode 100644 libical/src/java/Makefile.am create mode 100644 libical/src/java/VAgenda.java create mode 100644 libical/src/java/VAlarm.java create mode 100644 libical/src/java/VCalendar.java create mode 100644 libical/src/java/VComponent.java create mode 100644 libical/src/java/VEvent.java create mode 100644 libical/src/java/VFreeBusy.java create mode 100644 libical/src/java/VQuery.java create mode 100644 libical/src/java/VToDo.java create mode 100644 libical/src/java/jlibical_consts_cxx.h create mode 100644 libical/src/java/jlibical_utils_cxx.cpp create mode 100644 libical/src/java/jlibical_utils_cxx.h create mode 100644 libical/src/java/jniICalDurationType_cxx.cpp create mode 100644 libical/src/java/jniICalDurationType_cxx.h create mode 100644 libical/src/java/jniICalPeriodType_cxx.cpp create mode 100644 libical/src/java/jniICalPeriodType_cxx.h create mode 100644 libical/src/java/jniICalRecurrenceType_cxx.cpp create mode 100644 libical/src/java/jniICalRecurrenceType_cxx.h create mode 100644 libical/src/java/jniICalTimeType_cxx.cpp create mode 100644 libical/src/java/jniICalTimeType_cxx.h create mode 100644 libical/src/java/jniICalTriggerType_cxx.cpp create mode 100644 libical/src/java/jniICalTriggerType_cxx.h create mode 100644 libical/src/java/net_cp_jlibical_ICalParameter_cxx.cpp create mode 100644 libical/src/java/net_cp_jlibical_ICalParameter_cxx.h create mode 100644 libical/src/java/net_cp_jlibical_ICalProperty_cxx.cpp create mode 100644 libical/src/java/net_cp_jlibical_ICalProperty_cxx.h create mode 100644 libical/src/java/net_cp_jlibical_ICalValue_cxx.cpp create mode 100644 libical/src/java/net_cp_jlibical_ICalValue_cxx.h create mode 100644 libical/src/java/net_cp_jlibical_VComponent_cxx.cpp create mode 100644 libical/src/java/net_cp_jlibical_VComponent_cxx.h create mode 100644 libical/src/java/testjni.java create mode 100644 libical/src/libical/astime.h create mode 100644 libical/src/libical/caldate.c create mode 100644 libical/src/libical/icalattach.c create mode 100644 libical/src/libical/icalattach.h create mode 100644 libical/src/libical/icalattachimpl.h create mode 100644 libical/src/libical/icalparameter_cxx.cpp create mode 100644 libical/src/libical/icalparameter_cxx.h create mode 100644 libical/src/libical/icalproperty_cxx.cpp create mode 100644 libical/src/libical/icalproperty_cxx.h create mode 100644 libical/src/libical/icalvalue_cxx.cpp create mode 100644 libical/src/libical/icalvalue_cxx.h create mode 100644 libical/src/libical/icptrholder.h create mode 100644 libical/src/libical/vcomponent.cpp create mode 100644 libical/src/libical/vcomponent.h create mode 100644 libical/src/libicalcap/Makefile.am create mode 100644 libical/src/libicalcap/client.c create mode 100644 libical/src/libicalcap/icalcap.c create mode 100644 libical/src/libicalcap/icalcap.h create mode 100644 libical/src/libicalcap/icalcap_impl.h create mode 100644 libical/src/libicalcap/icalcap_message.c create mode 100644 libical/src/libicalcap/icalcap_message_impl.h create mode 100644 libical/src/libicalcap/icalcap_rr.c create mode 100644 libical/src/libicalcap/icalcap_server.c create mode 100644 libical/src/libicalcap/icalcap_server.h create mode 100644 libical/src/libicalcap/icalcap_server_impl.h create mode 100644 libical/src/libicalcap/icalcap_session.c create mode 100644 libical/src/libicalcap/icalcap_session.h create mode 100644 libical/src/libicalcap/icalcap_session_impl.h create mode 100644 libical/src/libicalcap/icalcap_utils.c create mode 100644 libical/src/libicalss/icalbdbset.c create mode 100644 libical/src/libicalss/icalbdbset.h create mode 100644 libical/src/libicalss/icalbdbset_cxx.h create mode 100644 libical/src/libicalss/icalbdbsetimpl.h create mode 100644 libical/src/libicalss/icalcaputil.h create mode 100644 libical/src/libicalss/icalcluster.c create mode 100644 libical/src/libicalss/icalcluster.h create mode 100644 libical/src/libicalss/icalclusterimpl.h create mode 100644 libical/src/libicalss/icalspanlist_cxx.cpp create mode 100644 libical/src/libicalss/icalspanlist_cxx.h create mode 100644 libical/src/python/Attendee.py create mode 100644 libical/src/python/Duration.py create mode 100644 libical/src/python/Error.py create mode 100644 libical/src/python/Gauge.py create mode 100644 libical/src/python/Period.py create mode 100644 libical/src/python/Time.py create mode 100644 libical/src/python/littlefile.txt create mode 100644 libical/src/test/2445.ics create mode 100644 libical/src/test/2446.ics create mode 100644 libical/src/test/itip.ics create mode 100644 libical/src/test/outgoing.ics create mode 100644 libical/src/test/regression-classify.c create mode 100644 libical/src/test/regression-component.c create mode 100644 libical/src/test/regression-cxx.cpp create mode 100644 libical/src/test/regression-recur.c create mode 100644 libical/src/test/regression-storage.c create mode 100644 libical/src/test/regression-utils.c create mode 100644 libical/src/test/regression.h create mode 100644 libical/src/test/test_fileset.ics (limited to 'libical/src') diff --git a/libical/src/.cvsignore b/libical/src/.cvsignore index c038ed7864..bbc8ba00d1 100644 --- a/libical/src/.cvsignore +++ b/libical/src/.cvsignore @@ -1,2 +1,5 @@ Makefile -Makefile.in \ No newline at end of file +.deps +.libs +*.lo +*.la diff --git a/libical/src/Makefile.am b/libical/src/Makefile.am index 7a3f9fcdff..5e5cd331db 100644 --- a/libical/src/Makefile.am +++ b/libical/src/Makefile.am @@ -4,6 +4,16 @@ else PYTHON_DIR = endif -# For evolution we only build libical at present. -SUBDIRS = libical libicalvcal -#SUBDIRS = libical libicalss libicalvcal # $(PYTHON_DIR) test +if WITH_JAVA +JAVA_DIR = java +else +JAVA_DIR = +endif + +if WITH_CAP +LIBICALCAP_DIR = libicalcap +else +LIBICALCAP_DIR = +endif + +SUBDIRS = libical libicalss $(LIBICALCAP_DIR) libicalvcal $(PYTHON_DIR) $(JAVA_DIR) test diff --git a/libical/src/Net-ICal-Libical/MANIFEST b/libical/src/Net-ICal-Libical/MANIFEST new file mode 100644 index 0000000000..1a6880e8b4 --- /dev/null +++ b/libical/src/Net-ICal-Libical/MANIFEST @@ -0,0 +1,16 @@ +MANIFEST +Makefile.PL +lib/Net/ICal/Libical.pm +netical.i +netical_wrap.c +netical_wrap.doc +test-data/2446.mime +test-data/error +test-data/mail-examples +test-data/no-error +test-data/rfc2445.ics +test-data/rfc2446.ics +test-data/single-with-error +test/example.pl +test/libical.pl +test/swig.pl diff --git a/libical/src/Net-ICal-Libical/Makefile.PL b/libical/src/Net-ICal-Libical/Makefile.PL new file mode 100644 index 0000000000..f46c61bc02 --- /dev/null +++ b/libical/src/Net-ICal-Libical/Makefile.PL @@ -0,0 +1,42 @@ +#!/usr/bin/perl +# -*- Mode: perl -*- + +use ExtUtils::MakeMaker; +WriteMakefile( + 'MAKEFILE'=> 'Makefile', + 'VERSION_FROM' => 'lib/Net/ICal/Libical.pm', + 'NAME' => 'Net::ICal::Libical', + 'INC' => '-I../libical -I ../libicalss', + 'LIBS' => ['-L../libical/.libs -L../libicalss/.libs -lical -licalss -lm'], + 'OBJECT' => 'netical_wrap.o', # Object files + dist => { + COMPRESS =>'gzip', + SUFFIX =>'gz' + }, + + ); + +sub MY::top_targets +{ + my $self = shift; + + my $old = $self->MM::top_targets; + + return "all:: netical_wrap.o\n$old"; + +} + +sub MY::postamble +{ + + return <dict{TZID} +sub timezone(self,v=None): + + +# Represents the value and all parameters of an attendee +package Net::ICal::Libical::Attendee(Property): +@ISA = (Property); + +sub new{} + +# Methods for accessing enumerated parameters +sub cn {} +sub cutype {} +sub dir {} +sub delegated_from {} +sub delegated_to {} +sub language {} +sub member {} +sub partstat {} +sub role {} +sub rsvp {} +sub sent_by {} + + +package Net::ICal::Libical::Organizer; +@ISA = (Property) +# Methods for accessing enumerated parameters +sub cn{} +sub dir{} +sub language {} +sub sent_by {} + +package Net::ICal::Libical::Recurrence_Id; +@ISA= (Property) + +package Net::ICal::Libical::Attach; +@ISA= (Property) + +package Net::ICal::Libical::Event; +@ISA= (Component) + +sub component_type {} + +#"Returns a copy of the object." +sub clone {} + +#Sets or returns the value of the DTEND property. +#Usage: +#dtend(time_obj) # Set the value using a Time object +#dtend('19970101T123000Z') # Set the value as an iCalendar string +#dtend(982362522) # Set the value using seconds (time_t) +#dtend() # Return a Time +# +#If the dtend value is being set and duration() has a value, the +#duration property will be removed. +sub dtend{} + +#Sets or returns the value of the duration property. +#Usage: +#duration(dur_obj) # Set the value using a Duration object +#duration("P3DT12H") # Set value as an iCalendar string +#duration(3600) # Set duration using seconds +#duration() # Return a duration +# +#If the duration value is being set and dtend() has a value, the dtend +#property will be removed. +sub duration{} + +#Sets attendees or returns a list of Attendee objects. +sub attendees {} + +#Sets or gets the value of the ORGANIZER property. +#Usage: +#organizer(orgObj) # Set value using an organizer object +#organizer('MAILTO:jd@not.com') # Set value using a CAL-ADDRESS string +#organizer() # Return a CAL-ADDRESS string +sub organizer{} + +#"Sets or gets the SUMMARY value of the Event." +sub summary{} + +#Sets or gets the UID of the Event. +sub uid{} + +#Sets or gets the value for the RECURRENCE-ID property. +#Usage: +#Recurrence_id(recIdObj) # Set using a Recurrence_Id object +#Recurrence_id("19700801T133000") # Set using an iCalendar string +#Recurrence_id(8349873494) # Set using seconds from epoch +#Recurrence_id() # Return a Time +sub recurrence_id{} + +#Sets or gets the SEQUENCE value of the Event. +#Usage: +#sequence(1) # Set the value using an integer +#sequence('2') # Set the value using a string containing an integer +#sequence() # Return an integer +sub sequence{} + +#Sets or returns the value of the LAST-MODIFIED property. +#Usage: +#lastmodified(time_obj) # Set the value using a Time object +#lastmodified('19970101T123000Z')# Set using an iCalendar string +#lastmodified(982362522) # Set using seconds +#lastmodified() # Return a Time +sub lastmodified{} + + + +#Sets or returns the value of the CREATED property. +#Usage: +#created(time_obj) # Set the value using a Time object +#created('19970101T123000Z') # Set using an iCalendar string +#created(982362522) # Set using seconds +#created() # Return a Time +sub created {} + + +sub related_to{} +sub comment{} + +"Sets or returns the value of the DESCRIPTION property." + +sub description {} + +#Sets categories or returns a list of Attendee objects. +sub categories {} + +sub attach{} + +#Represents a set of event occurrences. This +#package controls a component's RRULE, EXRULE, RDATE and EXDATE +#properties and can produce from them a set of occurrences. +package Net::ICal::Libical::RecurrenceSet: + + +#Include a date or rule to the set. +#Use date= or pass in a +#Time instance to include a date. Included dates will add an +#RDATE property or will remove an EXDATE property of the same +#date. +#Use rule= or pass in a string to include a rule. Included +#rules with either add a RRULE property or remove an EXRULE +#property. + +sub include{} + +#Exclude date or rule to the set. +#Use date= or pass in a Time instance to exclude a +#date. Excluded dates will add an EXDATE property or will remove +#an RDATE property of the same date. +#Use rule= or pass in a string to exclude a rule. Excluded +#rules with either add an EXRULE property or remove an RRULE +#property. +sub exclude{} + +#Return 'count' occurrences as a tuple of Time instances. +sub occurrences{} + +package Net::ICal::Libical::Store; +sub new{} +sub path{} +sub mark{} +sub commit{} +sub addComponent{} +sub removeComponent{} +sub countComponents{} +sub select{} +sub clearSelect{} +sub fetch{} +sub fetchMatchK{} +sub modify{} +sub currentComponent{} +sub firstComponent{} +sub nextComponent{} + + +package Net::ICal::Libical::FileStore; +@ISA = (Store) +sub new{} +sub path{} +sub mark{} +sub commit{} +sub addComponent{} +sub removeComponent{} +sub countComponents{} +sub select{} +sub clearSelect{} +sub fetch{} +sub fetchMatchK{} +sub modify{} +sub currentComponent{} +sub firstComponent{} +sub nextComponent{} + + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm new file mode 100644 index 0000000000..c25297c111 --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Component.pm @@ -0,0 +1,175 @@ +#!/usr/bin/perl +# -*- Mode: perl -*- +#====================================================================== +# FILE: Component.pm +# CREATOR: eric 1 Mar 01 +# +# DESCRIPTION: +# +# +# $Id$ +# $Locker$ +# +# (C) COPYRIGHT 2000, Eric Busboom, eric@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. ) +# +# +#====================================================================== + + + +package Net::ICal::Libical::Component; +use Net::ICal::Libical; + +use strict; + +sub new{ + my $class = shift; + my $ical_str = shift; # Ical data in string form + my $self = {}; + + $self->{'comp_p'} = Net::ICal::Libical::icalparser_parse_string($ical_str); + + die "Can't parse string into component" if !$self->{'comp_p'}; + + bless $self, $class; +} + +sub new_from_ref { + my $class = shift; + my $r = shift; + my $self = {}; + + $self->{'comp_p'} = $r; + + bless $self, $class; +} + +# Destroy must call icalcomponent_free() if icalcomponent_get_parent() +# returns NULL +sub DESTROY { + my $self = shift; + + my $c = $self->{'comp_p'}; + + if($c && !Net::ICal::Libical::icalcomponent_get_parent($c)){ + Net::ICal::Libical::icalcomponent_free($c); + } + +} + +# Return an array of all properties of the given type +sub properties{ + + my $self = shift; + my $prop_name = shift; + + my @props; + + if(!$prop_name){ + $prop_name = 'ANY'; + } + + # To loop over properties + # $comp_p = $self->{'comp_p'} + # $p = icallangbind_get_first_property($comp_p,$prop_name) + # $p = icallangbind_get_next_property($comp_p,$prop_name) + + my $c = $self->{'comp_p'}; + my $p; + + for($p = Net::ICal::Libical::icallangbind_get_first_property($c,$prop_name); + $p; + $p = Net::ICal::Libical::icallangbind_get_next_property($c,$prop_name)){ + + my $d_string = Net::ICal::Libical::icallangbind_property_eval_string($p,"=>"); + my %dict = %{eval($d_string)}; + + $dict{'ref'} = $p; + + # Now, look at $dict{'value_type'} or $dict{'name'} to construct a + # derived class of Property. I'll do this later. + + my $prop; + + if($dict{'value_type'} eq 'DATE' or $dict{'value_type'} eq 'DATE-TIME'){ + $prop = new Net::ICal::Libical::Time(\%dict); + } elsif($dict{'value_type'} eq 'DURATION' ) { + $prop = new Net::ICal::Libical::Duration(\%dict); + } else { + $prop = new Net::ICal::Libical::Property(\%dict); + } + + push(@props,$prop); + + } + + + return @props; + +} + + +sub add_property { + + # if there is a 'ref' key in the prop's dict, then it is owned by + # an icalcomponent, so dont add it again. But, you may check that + # it is owned by this component with: + # icalproperty_get_parent(p->{'ref'}') != $self->{'comp_p'} + + # If there is no 'ref' key, then create one with $p->{'ref'} = + # icalproperty_new_from_string($p->as_ical_string) + +} + +sub remove_property { + +# If $p->{'ref'} is set, then remove the property with +# icalcomponent_remove_property() } +} + +# Return an array of all components of the given type +sub components { + + my $self = shift; + my $comp_name = shift; + + my @comps; + + if(!$comp_name){ + $comp_name = 'ANY'; + } + + my $c = $self->{'comp_p'}; + my $p; + + for($p = Net::ICal::Libical::icallangbind_get_first_component($c,$comp_name); + $p; + $p = Net::ICal::Libical::icallangbind_get_next_component($c,$comp_name)){ + + push(@comps, Net::ICal::Libical::Component->new_from_ref($p)); + + } + + return @comps; + +} + + +sub add_component {} + +sub remove_component {} + +sub as_ical_string { + my $self = shift; + + return Net::ICal::Libical::icalcomponent_as_ical_string($self->{'comp_p'}) +} + + + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm new file mode 100644 index 0000000000..13ec9c437e --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Duration.pm @@ -0,0 +1,160 @@ +#============================================================================= +# +# 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.) +# +#============================================================================= + +=head1 NAME + +Net::ICal::Duration -- represent a length of time + +=head1 SYNOPSIS + + use Net::ICal; + $d = Net::ICal::Duration->new("P3DT6H15M10S"); + $d = Net::ICal::Duration->new(3600); # 1 hour in seconds + +=head1 DESCRIPTION + +I Represents a length of time, such a 3 days, 30 seconds or +7 weeks. You would use this for representing an abstract block of +time; "I want to have a 1-hour meeting sometime." If you want a +calendar- and timezone-specific block of time, see Net::ICal::Period. + +=cut + +#============================================================================= + +package Net::ICal::Libical::Duration; +use Net::ICal::Libical::Property; +use strict; +use Carp; +@Net::ICal::Libical::Duration::ISA = qw ( Net::ICal::Libical::Property ); + +=head1 METHODS + +=head2 new + +Create a new I from: + +=over 4 + +=item * A string in RFC2445 duration format + +=item * An integer representing a number of seconds + +=cut + +sub new { + my $package = shift; + my $arg = shift; + my $self; + + if (ref($arg) == 'HASH'){ + # Construct from dictionary + $self = Net::ICal::Libical::Property::new($package,$arg); + my $val=Net::ICal::Libical::icalproperty_get_value_as_string($self->{'ref'}); + $self->{'dur'} = Net::ICal::Libical::icaldurationtype_from_string($val); + + return $self; + + } elsif ($arg =~ /^[-+]?\d+$/){ + # Seconds + $self = Net::ICal::Libical::Property::new($package,'DURATION'); + $self->{'dur'} = Net::ICal::Libical::icaldurationtype_new_from_int($arg); + } elsif ($arg) { + # iCalendar string + $self = Net::ICal::Libical::Property::new($package,'DURATION'); + $self->{'dur'} = Net::ICal::Libical::icaldurationtype_new_from_string($arg); + } else { + die; + } + + $self->_update_value(); + return $self; + +} + +sub _update_value { + my $self = shift; + + die "Can't find internal icalduration reference" if !$self->{'dur'}; + + $self->value(Net::ICal::Libical::icaldurationtype_as_ical_string($self->{'dur'})); + +} +=head2 clone() + +Return a new copy of the duration. + +=cut + +sub clone { + die "Not Implemented"; + +} + + +=head2 is_valid() + +Determine if this is a valid duration (given criteria TBD). + +=cut + +sub is_valid { + + die "Not Implemented;" + +} + +=head2 seconds() + +Set or Get the length of the duration as seconds. + +=cut + +sub seconds { + my $self = shift; + my $seconds = shift; + + if($seconds){ + $self->{'dur'} = + Net::ICal::Libical::icaldurationtype_from_int($seconds); + $self->_update_value(); + } + + return Net::ICal::Libical::icaldurationtype_as_int($self->{'dur'}); + +} + +=head2 add($duration) + +Return a new duration that is the sum of this and $duration. Does not +modify this object. + +=cut + +sub add { + my ($self, $duration) = @_; + + return new Duration($self->seconds() + $duration->seconds()); +} + + +=head2 subtract($duration) + +Return a new duration that is the difference between this and +$duration. Does not modify this object. + +=cut + +sub subtract { + my ($self, $duration) = @_; + + return new Duration($self->seconds() - $duration->seconds()); +} + +1; diff --git a/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm new file mode 100644 index 0000000000..ecf29f3370 --- /dev/null +++ b/libical/src/Net-ICal-Libical/lib/Net/ICal/Libical/Period.pm @@ -0,0 +1,359 @@ +#!/usr/bin/perl -w +# -*- Mode: perl -*- +#====================================================================== +# +# 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. ) +# +# $Id$ +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# $Log +#====================================================================== + + +=pod +=head1 NAME + +Net::ICal::Period -- represent a period of time + +=head1 SYNOPSIS + + use Net::ICal; + $p = new Net::ICal::Period("19970101T120000","19970101T123000"); + $p = new Net::ICal::Period("19970101T120000","PT3W2D40S"); + $p = new Net::ICal::Period(time(),3600); + $p = new Net::ICal::Period( + new Net::ICal::Time("19970101T120000", + "America/Los_Angeles"), + new Net::ICal::Duration("2h")); + +=head1 DESCRIPTION + +Use this to make an object representing a block of time on a +real schedule. You can either say, "This event starts at 12 +and ends at 2" or "This event starts at 12 and lasts 2 hours." + +These two ways of specifying events can be treated differently +in schedules. If you say, "The meeting is from 12 to 2, but I +have to leave at 2," you are implying that the start date and +end date are fixed. If you say, "I have a 2-hour drive to +Chicago, and I need to leave at 4," you are saying that it will +take 2 hours no matter when you leave, and that moving the start +time will slide the end time correspondingly. + +=head1 BASIC METHODS + +=cut + + +#========================================================================= + +package Net::ICal::Period; +use strict; +use Net::ICal::Time; +use Net::ICal::Duration; + +use UNIVERSAL qw(isa); + +#------------------------------------------------------------------------- + +=pod +=head2 new($time, $time|$duration) + +Creates a new period object given to parameters: The first must be a +I