Commits

Ronald Oussoren  committed 226bbcf

Initial wrappers for EventKit framework

Tests are incomplete, will change soon

  • Participants
  • Parent commits 2664063

Comments (0)

Files changed (17)

File pyobjc-framework-EventKit/Doc/api-notes-EventKit.txt

+API notes for Accounts
+======================
+
+The entire "Accounts" framework on MacOSX 10.8 (or later) is available from Python.
+
+.. note:: 
+
+   The Accounts framework is only available in 64-bit applications.

File pyobjc-framework-EventKit/LICENSE.txt

+(This is the MIT license)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File pyobjc-framework-EventKit/Lib/EventKit/__init__.py

+'''
+Python mapping for the EventKit framework.
+
+This module does not contain docstrings for the wrapped code, check Apple's
+documentation for details on how to use these functions and classes. 
+'''
+
+import objc
+import sys
+import Foundation
+
+from EventKit import _metadata
+
+sys.modules['EventKit'] = mod = objc.ObjCLazyModule(
+    "EventKit",
+    "com.apple.ical.EventKit",
+    objc.pathForFramework("/System/Library/Frameworks/EventKit.framework"),
+    _metadata.__dict__, None, {
+        '__doc__': __doc__,
+        'objc': objc,
+        '__path__': __path__,
+    }, (Foundation,))

File pyobjc-framework-EventKit/Lib/EventKit/_metadata.py

+# This file is generated by objective.metadata
+#
+# Last update: Thu Jul  5 15:17:52 2012
+
+import objc, sys
+
+if sys.maxsize > 2 ** 32:
+    def sel32or64(a, b): return b
+else:
+    def sel32or64(a, b): return a
+if sys.byteorder == 'little':
+    def littleOrBig(a, b): return a
+else:
+    def littleOrBig(a, b): return b
+
+misc = {
+}
+constants = '''$EKErrorDomain$EKEventStoreChangedNotification$'''
+enums = '''$EKAlarmProximityEnter@1$EKAlarmProximityLeave@2$EKAlarmProximityNone@0$EKAlarmTypeAudio@1$EKAlarmTypeDisplay@0$EKAlarmTypeEmail@3$EKAlarmTypeProcedure@2$EKCalendarEventAvailabilityBusy@1$EKCalendarEventAvailabilityFree@2$EKCalendarEventAvailabilityNone@0$EKCalendarEventAvailabilityTentative@4$EKCalendarEventAvailabilityUnavailable@8$EKCalendarTypeBirthday@4$EKCalendarTypeCalDAV@1$EKCalendarTypeExchange@2$EKCalendarTypeLocal@0$EKCalendarTypeSubscription@3$EKEntityMaskEvent@1$EKEntityMaskReminder@2$EKEntityTypeEvent@0$EKEntityTypeReminder@1$EKErrorAlarmGreaterThanRecurrence@8$EKErrorAlarmProximityNotSupported@21$EKErrorCalendarDoesNotAllowEvents@22$EKErrorCalendarDoesNotAllowReminders@23$EKErrorCalendarHasNoSource@14$EKErrorCalendarIsImmutable@16$EKErrorCalendarReadOnly@6$EKErrorCalendarSourceCannotBeModified@15$EKErrorDatesInverted@4$EKErrorDurationGreaterThanRecurrence@7$EKErrorEventNotMutable@0$EKErrorInternalFailure@5$EKErrorInvalidSpan@13$EKErrorInvitesCannotBeMoved@12$EKErrorLast@26$EKErrorNoCalendar@1$EKErrorNoEndDate@3$EKErrorNoStartDate@2$EKErrorObjectBelongsToDifferentStore@11$EKErrorRecurringReminderRequiresDueDate@18$EKErrorReminderLocationsNotSupported@20$EKErrorSourceDoesNotAllowCalendarAddDelete@17$EKErrorSourceDoesNotAllowEvents@25$EKErrorSourceDoesNotAllowReminders@24$EKErrorStartDateCollidesWithOtherOccurrence@10$EKErrorStartDateTooFarInFuture@9$EKErrorStructuredLocationsNotSupported@19$EKEventAvailabilityBusy@0$EKEventAvailabilityFree@1$EKEventAvailabilityNotSupported@-1$EKEventAvailabilityTentative@2$EKEventAvailabilityUnavailable@3$EKEventStatusCanceled@3$EKEventStatusConfirmed@1$EKEventStatusNone@0$EKEventStatusTentative@2$EKFriday@6$EKMonday@2$EKParticipantRoleChair@3$EKParticipantRoleNonParticipant@4$EKParticipantRoleOptional@2$EKParticipantRoleRequired@1$EKParticipantRoleUnknown@0$EKParticipantStatusAccepted@2$EKParticipantStatusCompleted@6$EKParticipantStatusDeclined@3$EKParticipantStatusDelegated@5$EKParticipantStatusInProcess@7$EKParticipantStatusPending@1$EKParticipantStatusTentative@4$EKParticipantStatusUnknown@0$EKParticipantTypeGroup@4$EKParticipantTypePerson@1$EKParticipantTypeResource@3$EKParticipantTypeRoom@2$EKParticipantTypeUnknown@0$EKRecurrenceFrequencyDaily@0$EKRecurrenceFrequencyMonthly@2$EKRecurrenceFrequencyWeekly@1$EKRecurrenceFrequencyYearly@3$EKSaturday@7$EKSourceTypeBirthdays@5$EKSourceTypeCalDAV@2$EKSourceTypeExchange@1$EKSourceTypeLocal@0$EKSourceTypeMobileMe@3$EKSourceTypeSubscribed@4$EKSpanFutureEvents@1$EKSpanThisEvent@0$EKSunday@1$EKThursday@5$EKTuesday@3$EKWednesday@4$'''
+misc.update({})
+r = objc.registerMetaDataForSelector
+objc._updatingMetadata(True)
+try:
+    r(b'EKCalendar', b'allowsContentModifications', {'retval': {'type': b'Z'}})
+    r(b'EKCalendar', b'isImmutable', {'retval': {'type': b'Z'}})
+    r(b'EKCalendar', b'isSubscribed', {'retval': {'type': b'Z'}})
+    r(b'EKCalendarItem', b'hasAlarms', {'retval': {'type': b'Z'}})
+    r(b'EKCalendarItem', b'hasAttendees', {'retval': {'type': b'Z'}})
+    r(b'EKCalendarItem', b'hasNotes', {'retval': {'type': b'Z'}})
+    r(b'EKCalendarItem', b'hasRecurrenceRules', {'retval': {'type': b'Z'}})
+    r(b'EKEvent', b'isAllDay', {'retval': {'type': b'Z'}})
+    r(b'EKEvent', b'isDetached', {'retval': {'type': b'Z'}})
+    r(b'EKEvent', b'refresh', {'retval': {'type': b'Z'}})
+    r(b'EKEvent', b'setAllDay:', {'arguments': {2: {'type': b'Z'}}})
+    r(b'EKEventStore', b'commit:', {'retval': {'type': b'Z'}})
+    r(b'EKEventStore', b'removeCalendar:commit:error:', {'retval': {'type': b'Z'}, 'arguments': {3: {'type': b'Z'}}})
+    r(b'EKEventStore', b'removeEvent:span:commit:error:', {'retval': {'type': b'Z'}, 'arguments': {4: {'type': b'Z'}}})
+    r(b'EKEventStore', b'removeReminder:commit:error:', {'retval': {'type': b'Z'}, 'arguments': {3: {'type': b'Z'}}})
+    r(b'EKEventStore', b'saveCalendar:commit:error:', {'retval': {'type': b'Z'}, 'arguments': {3: {'type': b'Z'}}})
+    r(b'EKEventStore', b'saveEvent:span:commit:error:', {'retval': {'type': b'Z'}, 'arguments': {4: {'type': b'Z'}}})
+    r(b'EKEventStore', b'saveReminder:commit:error:', {'retval': {'type': b'Z'}, 'arguments': {3: {'type': b'Z'}}})
+    r(b'EKObject', b'hasChanges', {'retval': {'type': b'Z'}})
+    r(b'EKObject', b'isNew', {'retval': {'type': b'Z'}})
+    r(b'EKObject', b'refresh', {'retval': {'type': b'Z'}})
+    r(b'EKReminder', b'isCompleted', {'retval': {'type': b'Z'}})
+    r(b'EKReminder', b'setCompleted:', {'arguments': {2: {'type': b'Z'}}})
+finally:
+    objc._updatingMetadata(False)
+expressions = {'DATE_COMPONENTS': '(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)'}
+
+# END OF FILE

File pyobjc-framework-EventKit/PyObjCTest/__init__.py

+""" Unittests """

File pyobjc-framework-EventKit/PyObjCTest/test_ekalarm.py

+import sys
+from PyObjCTools.TestSupport import *
+
+if sys.maxsize > 2**32:
+    import EventKit
+
+    class TestEKAlarm (TestCase):
+        @min_os_level('10.8')
+        def testBasic(self):
+            self.assertTrue(hasattr(EventKit, "EKAlarm"))
+
+        @min_os_level('10.8')
+        def testConstants10_8(self):
+            self.assertEqual(EventKit.EKAlarmTypeDisplay, 0)
+            self.assertEqual(EventKit.EKAlarmTypeAudio, 1)
+            self.assertEqual(EventKit.EKAlarmTypeProcedure, 2)
+            self.assertEqual(EventKit.EKAlarmTypeEmail, 3)
+
+            self.assertEqual(EventKit.EKAlarmProximityNone, 0)
+            self.assertEqual(EventKit.EKAlarmProximityEnter, 1)
+            self.assertEqual(EventKit.EKAlarmProximityLeave, 2)
+
+
+if __name__ == '__main__':
+    main()
+
+        

File pyobjc-framework-EventKit/PyObjCTest/test_ekcalendar.py

+import sys
+from PyObjCTools.TestSupport import *
+
+if sys.maxsize > 2**32:
+    import EventKit
+
+    class TestEKCalendar (TestCase):
+        @min_os_level('10.8')
+        def testBasic(self):
+            self.assertTrue(hasattr(EventKit, "EKCalendar"))
+
+        @min_os_level('10.8')
+        def testMethods10_8(self):
+            self.assertResultIsBOOL(EventKit.EKCalendar.allowsContentModifications)
+            self.assertResultIsBOOL(EventKit.EKCalendar.isImmutable)
+            self.assertResultIsBOOL(EventKit.EKCalendar.isSubscribed)
+
+        @min_os_level('10.8')
+        def testConstants10_8(self):
+            self.assertEqual(EventKit.EKCalendarTypeLocal, 0)
+            self.assertEqual(EventKit.EKCalendarTypeCalDAV, 1)
+            self.assertEqual(EventKit.EKCalendarTypeExchange, 2)
+            self.assertEqual(EventKit.EKCalendarTypeSubscription, 3)
+            self.assertEqual(EventKit.EKCalendarTypeBirthday, 4)
+
+            self.assertEqual(EventKit.EKCalendarEventAvailabilityNone, 0)
+            self.assertEqual(EventKit.EKCalendarEventAvailabilityBusy, 1<<0)
+            self.assertEqual(EventKit.EKCalendarEventAvailabilityFree, 1<<1)
+            self.assertEqual(EventKit.EKCalendarEventAvailabilityTentative, 1<<2)
+            self.assertEqual(EventKit.EKCalendarEventAvailabilityUnavailable, 1<<3)
+
+
+if __name__ == '__main__':
+    main()
+
+        

File pyobjc-framework-EventKit/PyObjCTest/test_ekcalendaritem.py

+import sys
+from PyObjCTools.TestSupport import *
+
+if sys.maxsize > 2**32:
+    import EventKit
+
+    class TestEKCalendarItem (TestCase):
+        @min_os_level('10.8')
+        def testBasic(self):
+            self.assertTrue(hasattr(EventKit, "EKCalendarItem"))
+
+        @min_os_level('10.8')
+        def testMethods10_8(self):
+            self.assertResultIsBOOL(EventKit.EKCalendarItem.hasAlarms)
+            self.assertResultIsBOOL(EventKit.EKCalendarItem.hasAttendees)
+            self.assertResultIsBOOL(EventKit.EKCalendarItem.hasNotes)
+            self.assertResultIsBOOL(EventKit.EKCalendarItem.hasRecurrenceRules)
+
+
+if __name__ == '__main__':
+    main()
+
+        

File pyobjc-framework-EventKit/PyObjCTest/test_ekevent.py

+import sys
+from PyObjCTools.TestSupport import *
+
+if sys.maxsize > 2**32:
+    import EventKit
+
+    class TestEKEvent (TestCase):
+        @min_os_level('10.8')
+        def testBasic(self):
+            self.assertTrue(hasattr(EventKit, "EKEvent"))
+
+        @min_os_level('10.8')
+        def testMethods10_8(self):
+            self.assertResultIsBOOL(EventKit.EKEvent.isAllDay)
+            self.assertResultIsBOOL(EventKit.EKEvent.isDetached)
+            self.assertResultIsBOOL(EventKit.EKEvent.refresh)
+
+        @min_os_level('10.8')
+        def testConstants10_8(self):
+            self.assertEqual(EventKit.EKEventAvailabilityNotSupported, -1)
+            self.assertEqual(EventKit.EKEventAvailabilityBusy, 0)
+            self.assertEqual(EventKit.EKEventAvailabilityFree, 1)
+            self.assertEqual(EventKit.EKEventAvailabilityTentative, 2)
+            self.assertEqual(EventKit.EKEventAvailabilityUnavailable, 3)
+
+            self.assertEqual(EventKit.EKEventStatusNone, 0)
+            self.assertEqual(EventKit.EKEventStatusConfirmed, 1)
+            self.assertEqual(EventKit.EKEventStatusTentative, 2)
+            self.assertEqual(EventKit.EKEventStatusCanceled, 3)
+
+if __name__ == '__main__':
+    main()
+
+        

File pyobjc-framework-EventKit/PyObjCTest/test_ekeventstore.py

+import sys
+from PyObjCTools.TestSupport import *
+
+try:
+    unicode
+except NameError:
+    unicode = str
+
+if sys.maxsize > 2**32:
+    import EventKit
+
+    class TestEKEventStore (TestCase):
+        @min_os_level('10.8')
+        def testBasic(self):
+            self.assertTrue(hasattr(EventKit, "EKEventStore"))
+
+        @min_os_level('10.8')
+        def testMethods10_8(self):
+            self.assertResultIsBOOL(EventKit.EKEventStore.commit_)
+            self.assertArgIsOut(EventKit.EKEventStore.commit_, 0)
+
+            self.assertArgIsBlock(EventKit.EKEventStore.enumerateEventsMatchingPredicate_usingBlock_, 1, 'v@o^B')
+            self.assertArgIsBlock(EventKit.EKEventStore.fetchRemindersMatchingPredicate_completion_, 1, 'v@')
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.removeCalendar_commit_error_)
+            self.assertArgIsBOOL(EventKit.EKEventStore.removeCalendar_commit_error_, 1)
+            self.assertArgIsOut(EventKit.EKEventStore.removeCalendar_commit_error_, 2)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.removeEvent_span_commit_error_)
+            self.assertArgIsBOOL(EventKit.EKEventStore.removeEvent_span_commit_error_, 2)
+            self.assertArgIsOut(EventKit.EKEventStore.removeEvent_span_commit_error_, 3)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.removeEvent_span_error_)
+            self.assertArgIsOut(EventKit.EKEventStore.removeEvent_span_error_, 2)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.removeReminder_commit_error_)
+            self.assertArgIsBOOL(EventKit.EKEventStore.removeReminder_commit_error_, 1)
+            self.assertArgIsOut(EventKit.EKEventStore.removeReminder_commit_error_, 2)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.saveCalendar_commit_error_)
+            self.assertArgIsBOOL(EventKit.EKEventStore.saveCalendar_commit_error_, 1)
+            self.assertArgIsOut(EventKit.EKEventStore.saveCalendar_commit_error_, 2)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.saveEvent_span_commit_error_)
+            self.assertArgIsBOOL(EventKit.EKEventStore.saveEvent_span_commit_error_, 2)
+            self.assertArgIsOut(EventKit.EKEventStore.saveEvent_span_commit_error_, 3)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.saveEvent_span_error_)
+            self.assertArgIsOut(EventKit.EKEventStore.saveEvent_span_error_, 2)
+
+            self.assertResultIsBOOL(EventKit.EKEventStore.saveReminder_commit_error_)
+            self.assertArgIsBOOL(EventKit.EKEventStore.saveReminder_commit_error_, 1)
+            self.assertArgIsOut(EventKit.EKEventStore.saveReminder_commit_error_, 2)
+
+        @min_os_level('10.8')
+        def testConstants10_8(self):
+            self.assertEqual(EventKit.EKSpanThisEvent, 0)
+            self.assertEqual(EventKit.EKSpanFutureEvents, 1)
+
+            self.assertIsInstance(EKAlarmTypeDisplay, unicode)
+
+if __name__ == '__main__':
+    main()
+
+        

File pyobjc-framework-EventKit/PyObjCTest/test_ekobject.py

+import sys
+from PyObjCTools.TestSupport import *
+
+if sys.maxsize > 2**32:
+    import EventKit
+
+    class TestEKEvent (TestCase):
+        @min_os_level('10.8')
+        def testBasic(self):
+            self.assertTrue(hasattr(EventKit, "EKObject"))
+
+        @min_os_level('10.8')
+        def testMethods10_8(self):
+            self.assertResultIsBOOL(EventKit.EKObject.hasChanges)
+            self.assertResultIsBOOL(EventKit.EKObject.isNew)
+            self.assertResultIsBOOL(EventKit.EKObject.refresh)
+
+if __name__ == '__main__':
+    main()
+
+        

File pyobjc-framework-EventKit/README.txt

+Wrappers for framework 'EventKit' in MacOSX 10.8 or later.
+
+These wrappers don't include documentation, please check Apple's documention for information on how to use this framework and PyObjC's documentation for general tips and tricks regarding the translation between Python and (Objective-)C frameworks

File pyobjc-framework-EventKit/metadata/EventKit.fwinfo

+# objective.metada exceptions file, see its document
+# for information on how to update this file.
+{
+ "definitions": {
+  "classes": {
+   "EKEventStore": {
+    "methods": [
+     {
+      "args": {
+       "2": {}
+      }, 
+      "class_method": false, 
+      "selector": "saveCalendar:commit:error:"
+     }, 
+     {
+      "args": {
+       "2": {}
+      }, 
+      "class_method": false, 
+      "selector": "removeCalendar:commit:error:"
+     }, 
+     {
+      "args": {
+       "3": {}
+      }, 
+      "class_method": false, 
+      "selector": "saveEvent:span:commit:error:"
+     }, 
+     {
+      "args": {
+       "3": {}
+      }, 
+      "class_method": false, 
+      "selector": "removeEvent:span:commit:error:"
+     }, 
+     {
+      "args": {
+       "2": {}
+      }, 
+      "class_method": false, 
+      "selector": "saveReminder:commit:error:"
+     }, 
+     {
+      "args": {
+       "2": {}
+      }, 
+      "class_method": false, 
+      "selector": "removeReminder:commit:error:"
+     }, 
+     {
+      "args": {
+       "0": {}
+      }, 
+      "class_method": false, 
+      "selector": "commit:"
+     }
+    ]
+   }
+  }, 
+  "formal_protocols": {}, 
+  "functions": {}, 
+  "informal_protocols": {}
+ }
+}

File pyobjc-framework-EventKit/metadata/metadata.ini

+[Accounts]
+framework = EventKit

File pyobjc-framework-EventKit/metadata/raw/x86_64-10.8.fwinfo

+#             GENERATED FILE DO NOT EDIT
+#
+# This file was generated by objective.metadata
+# Last update: Thu Jul  5 15:13:01 2012
+{
+ "arch": "x86_64", 
+ "definitions": {
+  "aliases": {}, 
+  "called_definitions": {}, 
+  "cftypes": {}, 
+  "classes": {
+   "EKAlarm": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "alarmWithAbsoluteDate:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "d", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "alarmWithRelativeOffset:", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKAlarm", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic"
+      ], 
+      "name": "relativeOffset", 
+      "typestr": "d", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "absoluteDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "structuredLocation", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic"
+      ], 
+      "name": "proximity", 
+      "typestr": "q", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "type", 
+      "typestr": "i", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "emailAddress", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "soundName", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "url", 
+      "typestr": "@", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [
+     "NSCopying"
+    ], 
+    "super": "EKObject"
+   }, 
+   "EKCalendar": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "Q", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "calendarForEntityType:eventStore:", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKCalendar", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "retain"
+      ], 
+      "name": "source", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "calendarIdentifier", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "title", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "type", 
+      "typestr": "i", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "allowsContentModifications", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly", 
+       [
+        "getter", 
+        "isSubscribed"
+       ]
+      ], 
+      "name": "subscribed", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly", 
+       [
+        "getter", 
+        "isImmutable"
+       ]
+      ], 
+      "name": "immutable", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "color", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "supportedEventAvailabilities", 
+      "typestr": "Q", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "allowedEntityTypes", 
+      "typestr": "Q", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [], 
+    "super": "EKObject"
+   }, 
+   "EKCalendarItem": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "addAlarm:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "removeAlarm:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "addRecurrenceRule:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "removeRecurrenceRule:", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKCalendarItem", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "retain"
+      ], 
+      "name": "calendar", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "calendarItemIdentifier", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "calendarItemExternalIdentifier", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "title", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "location", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "notes", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "URL", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "lastModifiedDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "creationDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "timeZone", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "hasAlarms", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "hasRecurrenceRules", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "hasAttendees", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "hasNotes", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "attendees", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "alarms", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "recurrenceRules", 
+      "typestr": "@", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [], 
+    "super": "EKObject"
+   }, 
+   "EKEvent": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "eventWithEventStore:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "i", 
+       "typestr_special": false
+      }, 
+      "selector": "compareStartDateWithEvent:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "refresh", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKEvent", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "eventIdentifier", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       [
+        "getter", 
+        "isAllDay"
+       ]
+      ], 
+      "name": "allDay", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "startDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "copy"
+      ], 
+      "name": "endDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "organizer", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic"
+      ], 
+      "name": "availability", 
+      "typestr": "i", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "status", 
+      "typestr": "i", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "isDetached", 
+      "typestr": "Z", 
+      "typestr_special": true
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "occurrenceDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "birthdayPersonUniqueID", 
+      "typestr": "@", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [], 
+    "super": "EKCalendarItem"
+   }, 
+   "EKEventStore": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "Q", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "initWithAccessToEntityTypes:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "init", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "sources", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "sourceWithIdentifier:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "Q", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "calendarsForEntityType:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "defaultCalendarForNewReminders", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "calendarWithIdentifier:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "Z", 
+        "typestr_special": true
+       }, 
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "saveCalendar:commit:error:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "Z", 
+        "typestr_special": true
+       }, 
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "removeCalendar:commit:error:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "calendarItemWithIdentifier:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "calendarItemsWithExternalIdentifier:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "i", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "Z", 
+        "typestr_special": true
+       }, 
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "saveEvent:span:commit:error:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "i", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "Z", 
+        "typestr_special": true
+       }, 
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "removeEvent:span:commit:error:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "eventWithIdentifier:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "eventsMatchingPredicate:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@?", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "enumerateEventsMatchingPredicate:usingBlock:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "predicateForEventsWithStartDate:endDate:calendars:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "Z", 
+        "typestr_special": true
+       }, 
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "saveReminder:commit:error:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "Z", 
+        "typestr_special": true
+       }, 
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "removeReminder:commit:error:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@?", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "fetchRemindersMatchingPredicate:completion:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "cancelFetchRequest:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "predicateForRemindersInCalendars:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "predicateForIncompleteRemindersWithDueDateStarting:ending:calendars:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "predicateForCompletedRemindersWithCompletionDateStarting:ending:calendars:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "^@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "commit:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "reset", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "refreshSourcesIfNecessary", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKEventStore", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "eventStoreIdentifier", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "defaultCalendarForNewEvents", 
+      "typestr": "@", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [], 
+    "super": "NSObject"
+   }, 
+   "EKObject": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "hasChanges", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "isNew", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "reset", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "v", 
+       "typestr_special": false
+      }, 
+      "selector": "rollback", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "Z", 
+       "typestr_special": true
+      }, 
+      "selector": "refresh", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKObject", 
+    "properties": [], 
+    "protocols": [], 
+    "super": "NSObject"
+   }, 
+   "EKParticipant": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "ABPersonInAddressBook:", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKParticipant", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "URL", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "name", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "participantStatus", 
+      "typestr": "i", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "participantRole", 
+      "typestr": "i", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "participantType", 
+      "typestr": "i", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [
+     "NSCopying"
+    ], 
+    "super": "EKObject"
+   }, 
+   "EKRecurrenceDayOfWeek": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "dayOfWeek:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "dayOfWeek:weekNumber:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "initWithDayOfTheWeek:weekNumber:", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKRecurrenceDayOfWeek", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "dayOfTheWeek", 
+      "typestr": "q", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "weekNumber", 
+      "typestr": "q", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [
+     "NSCopying"
+    ], 
+    "super": "NSObject"
+   }, 
+   "EKRecurrenceEnd": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "recurrenceEndWithEndDate:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "Q", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": true, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "recurrenceEndWithOccurrenceCount:", 
+      "visibility": "public"
+     }
+    ], 
+    "name": "EKRecurrenceEnd", 
+    "properties": [
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "endDate", 
+      "typestr": "@", 
+      "typestr_special": false
+     }, 
+     {
+      "attributes": [
+       "nonatomic", 
+       "readonly"
+      ], 
+      "name": "occurrenceCount", 
+      "typestr": "Q", 
+      "typestr_special": false
+     }
+    ], 
+    "protocols": [
+     "NSCopying"
+    ], 
+    "super": "NSObject"
+   }, 
+   "EKRecurrenceRule": {
+    "categories": [], 
+    "methods": [
+     {
+      "args": [
+       {
+        "typestr": "i", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }
+      ], 
+      "class_method": false, 
+      "retval": {
+       "typestr": "@", 
+       "typestr_special": false
+      }, 
+      "selector": "initRecurrenceWithFrequency:interval:end:", 
+      "visibility": "public"
+     }, 
+     {
+      "args": [
+       {
+        "typestr": "i", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "q", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       }, 
+       {
+        "typestr": "@", 
+        "typestr_special": false
+       },