/* Copyright (c) 2017, Computer History Museum All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted (subject to the limitations in the disclaimer below) provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Computer History Museum nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef OSXABSYNCINC_H #define OSXABSYNCINC_H #if TARGET_RT_MAC_MACHO #include #else /* Taken from /System/Library/Frameworks/AddressBook.framework/Versions/A/Headers/ABAddressBook.h */ ///////////////////////////////////////////////////////////////////////// // // OS X Address Book Declarations // ///////////////////////////////////////////////////////////////////////// // ================================================================ // Property Type // ================================================================ #define kABMultiValueMask 0x100 typedef enum _ABPropertyType { kABErrorInProperty = 0x0, kABStringProperty = 0x1, kABIntegerProperty = 0x2, kABRealProperty = 0x3, kABDateProperty = 0x4, kABArrayProperty = 0x5, kABDictionaryProperty = 0x6, kABDataProperty = 0x7, kABMultiStringProperty = kABMultiValueMask | kABStringProperty, kABMultiIntegerProperty = kABMultiValueMask | kABIntegerProperty, kABMultiRealProperty = kABMultiValueMask | kABRealProperty, kABMultiDateProperty = kABMultiValueMask | kABDateProperty, kABMultiArrayProperty = kABMultiValueMask | kABArrayProperty, kABMultiDictionaryProperty = kABMultiValueMask | kABDictionaryProperty, kABMultiDataProperty = kABMultiValueMask | kABDataProperty } ABPropertyType; // ================================================================ // Search APIs // ================================================================ typedef enum _ABSearchComparison { kABEqual, kABNotEqual, kABLessThan, kABLessThanOrEqual, kABGreaterThan, kABGreaterThanOrEqual, kABEqualCaseInsensitive, kABContainsSubString, kABContainsSubStringCaseInsensitive, kABPrefixMatch, kABPrefixMatchCaseInsensitive } ABSearchComparison; typedef enum _ABSearchConjunction { kABSearchAnd, kABSearchOr } ABSearchConjunction; /* */ typedef void *ABRecordRef; typedef struct __ABPerson *ABPersonRef; typedef struct __ABGroup *ABGroupRef; typedef struct __ABSearchElementRef *ABSearchElementRef; typedef struct __ABAddressBookRef *ABAddressBookRef; typedef const struct __ABMultiValue *ABMultiValueRef; typedef struct __ABMultiValue *ABMutableMultiValueRef; typedef void (*ABImageClientCallback) (CFDataRef imageData, int tag, void* refcon); // ================================================================ // Global Table properties // ================================================================ // ----- Properties common to all Records extern const char kABUIDProperty[]; // The UID property extern const char kABCreationDateProperty[]; // Creation Date (when first saved) (date) extern const char kABModificationDateProperty[]; // Last saved date (date) // ----- Person specific properties extern const char kABFirstNameProperty[]; // First name (string) extern const char kABLastNameProperty[]; // Last name (string) extern const char kABFirstNamePhoneticProperty[]; // First name Phonetic (string) extern const char kABLastNamePhoneticProperty[]; // Last name Phonetic (string) extern const char kABBirthdayProperty[]; // Birth date (date) extern const char kABOrganizationProperty[]; // Company name (string) extern const char kABJobTitleProperty[]; // Job Title (string) extern const char kABHomePageProperty[]; // Home Web page (string) extern const char kABEmailProperty[]; // Email(s) (multi-string) extern const char kABEmailWorkLabel[]; // Work email extern const char kABEmailHomeLabel[]; // Home email extern const char kABAddressProperty[]; // Street Addresses (multi-dictionary) extern const char kABAddressStreetKey[]; // Street extern const char kABAddressCityKey[]; // City extern const char kABAddressStateKey[]; // State extern const char kABAddressZIPKey[]; // Zip extern const char kABAddressCountryKey[]; // Country extern const char kABAddressCountryCodeKey[]; // Country Code extern const char kABAddressHomeLabel[]; // Home Address extern const char kABAddressWorkLabel[]; // Work Address /* * kABAddressCountryCodeKey code must be one of the following: * iso country codes * * at = Austria * au = Australia * be = Belgium * ca = Canada * ch = Switzerland * cn = China * de = Germany * dk = Denmark * es = Spain * fi = Finland * fr = France * gl = Greenland * ie = Ireland * il = Israel * id = Indonesia * is = Iceland * it = Italy * ja = Japan * kr = South Korea * lu = Luxembourg * mx = Mexico * nl = Netherlands * no = Norway * nz = New Zealand * pl = Poland * pt = Portugal * se = Sweden * sg = Singapore * tr = Turkey * tw = Taiwan * uk = United Kingdom * us = United States * za = South Africa * */ extern const char kABPhoneProperty[]; // Generic phone number (multi-string) extern const char kABPhoneWorkLabel[]; // Work phone extern const char kABPhoneHomeLabel[]; // Home phone extern const char kABPhoneMobileLabel[]; // Cell phone extern const char kABPhoneMainLabel[]; // Main phone extern const char kABPhoneHomeFAXLabel[]; // FAX number extern const char kABPhoneWorkFAXLabel[]; // FAX number extern const char kABPhonePagerLabel[]; // Pager number extern const char kABAIMInstantProperty[]; // AIM Instant Messaging (multi-string) extern const char kABAIMWorkLabel[]; extern const char kABAIMHomeLabel[]; extern const char kABJabberInstantProperty[]; // Jabber Instant Messaging (multi-string) extern const char kABJabberWorkLabel[]; extern const char kABJabberHomeLabel[]; extern const char kABMSNInstantProperty[]; // MSN Instant Messaging (multi-string) extern const char kABMSNWorkLabel[]; extern const char kABMSNHomeLabel[]; extern const char kABYahooInstantProperty[]; // Yahoo Instant Messaging (multi-string) extern const char kABYahooWorkLabel[]; extern const char kABYahooHomeLabel[]; extern const char kABICQInstantProperty[]; // ICQ Instant Messaging (multi-string) extern const char kABICQWorkLabel[]; extern const char kABICQHomeLabel[]; extern const char kABNoteProperty[]; // Note (string) // ----- Person Properties not Currently supported in the AddressBook UI extern const char kABMiddleNameProperty[]; // string extern const char kABMiddleNamePhoneticProperty[]; // string extern const char kABTitleProperty[]; // string "Sir" "Duke" "General" "Lord" extern const char kABSuffixProperty[]; // string "Sr." "Jr." "III" extern const char kABNicknameProperty[]; // string extern const char kABMaidenNameProperty[]; // string // ----- Group Specific Properties extern const char kABGroupNameProperty[]; // Name of the group // ================================================================ // Generic Labels // ================================================================ // All kABXXXXWorkLabel are equivalent to this label extern const char kABWorkLabel[]; // All kABXXXXHomeLabel are equivalent to this label extern const char kABHomeLabel[]; // Can be use with any Mutli-value property extern const char kABOtherLabel[]; // ================================================================ // RecordTypes // ================================================================ // Type of a ABPersonRef extern const char kABPersonRecordType[]; // Type of a ABGroupRef extern const char kABGroupRecordType[]; // ================================================================ // Notifications published when something changes // ================================================================ // This process has changed the DB extern const char kABDatabaseChangedNotification[]; // Another process has changed the DB extern const char kABDatabaseChangedExternallyNotification[]; const char kABUIDProperty[] = "UID"; const char kABCreationDateProperty[] = "Creation"; const char kABModificationDateProperty[] = "Modification"; const char kABFirstNameProperty[] = "First"; const char kABLastNameProperty[] = "Last"; const char kABFirstNamePhoneticProperty[] = "FirstPhonetic"; const char kABLastNamePhoneticProperty[] = "LastPhonetic"; const char kABBirthdayProperty[] = "Birthday"; const char kABOrganizationProperty[] = "Organization"; const char kABJobTitleProperty[] = "JobTitle"; const char kABHomePageProperty[] = "HomePage"; const char kABEmailProperty[] = "Email"; const char kABAddressProperty[] = "Address"; const char kABAddressStreetKey[] = "Street"; const char kABAddressCityKey[] = "City"; const char kABAddressStateKey[] = "State"; const char kABAddressZIPKey[] = "ZIP"; const char kABAddressCountryKey[] = "Country"; const char kABAddressCountryCodeKey[] = "CountryCode"; const char kABPhoneProperty[] = "Phone"; const char kABPhoneMobileLabel[] = "_$!!$_"; const char kABPhoneMainLabel[] = "_$!
!$_"; const char kABPhoneHomeFAXLabel[] = "_$!!$_"; const char kABPhoneWorkFAXLabel[] = "_$!!$_"; const char kABPhonePagerLabel[] = "_$!!$_"; const char kABAIMInstantProperty[] = "AIMInstant"; const char kABJabberInstantProperty[] = "JabberInstant"; const char kABMSNInstantProperty[] = "MSNInstant"; const char kABYahooInstantProperty[] = "YahooInstant"; const char kABICQInstantProperty[] = "ICQInstant"; const char kABNoteProperty[] = "Note"; const char kABMiddleNameProperty[] = "Middle"; const char kABMiddleNamePhoneticProperty[] = "MiddlePhonetic"; const char kABTitleProperty[] = "Title"; const char kABSuffixProperty[] = "Suffix"; const char kABNicknameProperty[] = "Nickname"; const char kABMaidenNameProperty[] = "MaidenName"; const char kABGroupNameProperty[] = "GroupName"; const char kABOtherLabel[] = "_$!!$_"; const char kABPersonRecordType[] = "ABPerson"; const char kABGroupRecordType[] = "ABGroup"; const char kABDatabaseChangedNotification[] = "ABDatabaseChangedNotification"; const char kABDatabaseChangedExternallyNotification[] = "ABDatabaseChangedExternallyNotification"; const char kABWorkLabel[] = "_$!!$_"; const char kABHomeLabel[] = "_$!!$_"; const char kABEmailWorkLabel[] = "_$!!$_"; const char kABAddressWorkLabel[] = "_$!!$_"; const char kABPhoneWorkLabel[] = "_$!!$_"; const char kABAIMWorkLabel[] = "_$!!$_"; const char kABJabberWorkLabel[] = "_$!!$_"; const char kABMSNWorkLabel[] = "_$!!$_"; const char kABICQWorkLabel[] = "_$!!$_"; const char kABYahooWorkLabel[] = "_$!!$_"; const char kABEmailHomeLabel[] = "_$!!$_"; const char kABAddressHomeLabel[] = "_$!!$_"; const char kABPhoneHomeLabel[] = "_$!!$_"; const char kABAIMHomeLabel[] = "_$!!$_"; const char kABJabberHomeLabel[] = "_$!!$_"; const char kABMSNHomeLabel[] = "_$!!$_"; const char kABICQHomeLabel[] = "_$!!$_"; const char kABYahooHomeLabel[] = "_$!!$_"; /* Taken from /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFNotificationCenter.h */ ///////////////////////////////////////////////////////////////////////// // // OS X CFNotificationCenter Declarations // ///////////////////////////////////////////////////////////////////////// #if defined(__cplusplus) extern "C" { #endif typedef struct __CFNotificationCenter * CFNotificationCenterRef; typedef void (*CFNotificationCallback)(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo); typedef enum { CFNotificationSuspensionBehaviorDrop = 1, // The server will not queue any notifications with this name and object while the process/app is in the background. CFNotificationSuspensionBehaviorCoalesce = 2, // The server will only queue the last notification of the specified name and object; earlier notifications are dropped. CFNotificationSuspensionBehaviorHold = 3, // The server will hold all matching notifications until the queue has been filled (queue size determined by the server) at which point the server may flush queued notifications. CFNotificationSuspensionBehaviorDeliverImmediately = 4 // The server will deliver notifications matching this registration whether or not the process is in the background. When a notification with this suspension behavior is matched, it has the effect of first flushing any queued notifications. } CFNotificationSuspensionBehavior; #if defined(__cplusplus) } #endif #endif #endif //OSXABSYNCINC_H