587 lines
24 KiB
TOML
587 lines
24 KiB
TOML
framework = "CoreFoundation"
|
|
crate = "objc2-core-foundation"
|
|
required-crates = []
|
|
custom-lib-rs = true
|
|
macos = "10.0"
|
|
maccatalyst = "13.0"
|
|
ios = "2.0"
|
|
tvos = "9.0"
|
|
watchos = "2.0"
|
|
visionos = "1.0"
|
|
gnustep = true
|
|
|
|
## Generic types
|
|
typedef.CFArrayRef.generics = ["T"]
|
|
typedef.CFBagRef.generics = ["T"]
|
|
typedef.CFBinaryHeapRef.generics = ["T"]
|
|
typedef.CFDictionaryRef.generics = ["K", "V"]
|
|
typedef.CFSetRef.generics = ["T"]
|
|
typedef.CFMutableArrayRef.generics = ["T"]
|
|
typedef.CFMutableBagRef.generics = ["T"]
|
|
typedef.CFMutableDictionaryRef.generics = ["K", "V"]
|
|
typedef.CFMutableSetRef.generics = ["T"]
|
|
# Not CFTreeRef
|
|
|
|
# Uses variadics
|
|
fn.CFStringCreateWithFormatAndArguments.skipped = true
|
|
fn.CFStringCreateStringWithValidatedFormatAndArguments.skipped = true
|
|
fn.CFStringAppendFormatAndArguments.skipped = true
|
|
|
|
# Name clash with containing module
|
|
enum.__CFByteOrder.skipped = true
|
|
|
|
# Needs FSRef from CoreServices, but CoreServices depends on CoreFoundation
|
|
# so we don't generate these to avoid a cyclic dependency.
|
|
fn.CFURLCreateFromFSRef.skipped = true
|
|
fn.CFURLGetFSRef.skipped = true
|
|
|
|
# Needs acl_t, which is not exposed by libc
|
|
fn.CFFileSecurityCopyAccessControlList.skipped = true
|
|
fn.CFFileSecuritySetAccessControlList.skipped = true
|
|
|
|
# Different definition depending on pointer width
|
|
typedef.CGFloat.skipped = true
|
|
|
|
# Custom definitions for slightly better docs now
|
|
struct.CGPoint.skipped = true
|
|
struct.CGSize.skipped = true
|
|
struct.CGRect.skipped = true
|
|
|
|
# Custom definition because it's special
|
|
typedef.CFTypeRef.skipped = true
|
|
|
|
# Implementation details
|
|
fn.__CFRangeMake.skipped = true
|
|
fn.__CFStringMakeConstantString.skipped = true
|
|
|
|
# Differs based on architecture
|
|
typedef.CFBundleRefNum.skipped = true
|
|
typedef.CFTypeID.skipped = true
|
|
typedef.CFOptionFlags.skipped = true
|
|
typedef.CFHashCode.skipped = true
|
|
typedef.CFIndex.skipped = true
|
|
|
|
# Custom-defined since they require manual handling.
|
|
# Use `CFRetained` to access these.
|
|
fn.CFAutorelease.skipped = true
|
|
fn.CFRetain.skipped = true
|
|
fn.CFRelease.skipped = true
|
|
fn.CFMakeCollectable.skipped = true # Simply returns the argument on macOS 10.12 or later
|
|
|
|
# Dependent on target endianness
|
|
fn.CFSwapInt16.skipped = true
|
|
fn.CFSwapInt32.skipped = true
|
|
fn.CFSwapInt64.skipped = true
|
|
fn.CFByteOrderGetCurrent.skipped = true
|
|
fn.CFSwapInt16BigToHost.skipped = true
|
|
fn.CFSwapInt32BigToHost.skipped = true
|
|
fn.CFSwapInt64BigToHost.skipped = true
|
|
fn.CFSwapInt16HostToBig.skipped = true
|
|
fn.CFSwapInt32HostToBig.skipped = true
|
|
fn.CFSwapInt64HostToBig.skipped = true
|
|
fn.CFSwapInt16LittleToHost.skipped = true
|
|
fn.CFSwapInt32LittleToHost.skipped = true
|
|
fn.CFSwapInt64LittleToHost.skipped = true
|
|
fn.CFSwapInt16HostToLittle.skipped = true
|
|
fn.CFSwapInt32HostToLittle.skipped = true
|
|
fn.CFSwapInt64HostToLittle.skipped = true
|
|
fn.CFConvertFloat32HostToSwapped.skipped = true
|
|
fn.CFConvertFloat32SwappedToHost.skipped = true
|
|
fn.CFConvertFloat64HostToSwapped.skipped = true
|
|
fn.CFConvertFloat64SwappedToHost.skipped = true
|
|
fn.CFConvertFloatHostToSwapped.skipped = true
|
|
fn.CFConvertFloatSwappedToHost.skipped = true
|
|
fn.CFConvertDoubleHostToSwapped.skipped = true
|
|
fn.CFConvertDoubleSwappedToHost.skipped = true
|
|
|
|
# Custom-defined inline functions
|
|
fn.CFRangeMake.skipped = true
|
|
fn.CFUserNotificationCheckBoxChecked.skipped = true
|
|
fn.CFUserNotificationSecureTextField.skipped = true
|
|
fn.CFUserNotificationPopUpSelection.skipped = true
|
|
|
|
# Conflicts with the Get variants.
|
|
fn.CFReadStreamCopyError.renamed = "copy_error"
|
|
fn.CFWriteStreamCopyError.renamed = "copy_error"
|
|
|
|
# Customized.
|
|
fn.CFDictionaryContainsKey.renamed = "contains_ptr_key"
|
|
fn.CFDictionaryContainsValue.renamed = "contains_ptr_value"
|
|
fn.CFURLCreateWithString.renamed = "__from_string"
|
|
fn.CFURLGetString.renamed = "__string"
|
|
|
|
##
|
|
## Safety
|
|
##
|
|
|
|
# CFArray
|
|
fn.CFArrayCreateMutableCopy.unsafe = true # UB if capacity not large enough
|
|
fn.CFArrayGetCount.unsafe = false
|
|
fn.CFArrayGetValueAtIndex.unsafe = true # UB if index out of bounds
|
|
fn.CFArrayRemoveValueAtIndex.unsafe = true # UB if index out of bounds
|
|
fn.CFArrayRemoveAllValues.unsafe = false
|
|
fn.CFArrayExchangeValuesAtIndices.unsafe = true # UB if index out of bounds
|
|
fn.CFArrayAppendArray.unsafe = true # UB if range out of bounds
|
|
|
|
# CFAttributedString
|
|
fn.CFAttributedStringCreate.unsafe = true # CFDictionary can contain anything
|
|
fn.CFAttributedStringCreateWithSubstring.unsafe = true # range must be in bounds
|
|
fn.CFAttributedStringCreateCopy.unsafe = false
|
|
fn.CFAttributedStringGetString.unsafe = false
|
|
fn.CFAttributedStringGetLength.unsafe = false
|
|
fn.CFAttributedStringCreateMutableCopy.unsafe = false
|
|
fn.CFAttributedStringCreateMutable.unsafe = false
|
|
fn.CFAttributedStringReplaceString.unsafe = true # range must be in bounds
|
|
fn.CFAttributedStringGetMutableString.unsafe = false
|
|
fn.CFAttributedStringSetAttributes.unsafe = true # range must be in bounds
|
|
fn.CFAttributedStringSetAttribute.unsafe = true # range must be in bounds
|
|
fn.CFAttributedStringRemoveAttribute.unsafe = true # range must be in bounds
|
|
fn.CFAttributedStringReplaceAttributedString.unsafe = true # range must be in bounds
|
|
fn.CFAttributedStringBeginEditing.unsafe = false
|
|
fn.CFAttributedStringEndEditing.unsafe = false
|
|
|
|
# CFBase
|
|
fn.CFAllocatorSetDefault.unsafe = false
|
|
fn.CFAllocatorGetDefault.unsafe = false
|
|
fn.CFAllocatorAllocateBytes.unsafe = false
|
|
fn.CFAllocatorAllocate.unsafe = false
|
|
fn.CFAllocatorGetPreferredSizeForSize.unsafe = false
|
|
fn.CFGetTypeID.unsafe = false
|
|
fn.CFCopyTypeIDDescription.unsafe = false
|
|
fn.CFGetRetainCount.unsafe = false
|
|
fn.CFEqual.unsafe = false
|
|
fn.CFHash.unsafe = false
|
|
fn.CFCopyDescription.unsafe = false
|
|
fn.CFGetAllocator.unsafe = false
|
|
|
|
# CFBundle
|
|
fn.CFBundleGetMainBundle.unsafe = false
|
|
fn.CFBundleGetBundleWithIdentifier.unsafe = false
|
|
fn.CFBundleGetAllBundles.unsafe = true # Not thread-safe
|
|
fn.CFBundleCreate.unsafe = false
|
|
fn.CFBundleCreateBundlesFromDirectory.unsafe = false
|
|
fn.CFBundleCopyBundleURL.unsafe = false
|
|
fn.CFBundleGetValueForInfoDictionaryKey.unsafe = false
|
|
fn.CFBundleGetInfoDictionary.unsafe = false
|
|
fn.CFBundleGetLocalInfoDictionary.unsafe = false
|
|
fn.CFBundleGetIdentifier.unsafe = false
|
|
fn.CFBundleGetVersionNumber.unsafe = false
|
|
fn.CFBundleGetDevelopmentRegion.unsafe = false
|
|
fn.CFBundleCopySupportFilesDirectoryURL.unsafe = false
|
|
fn.CFBundleCopyResourcesDirectoryURL.unsafe = false
|
|
fn.CFBundleCopyPrivateFrameworksURL.unsafe = false
|
|
fn.CFBundleCopySharedFrameworksURL.unsafe = false
|
|
fn.CFBundleCopySharedSupportURL.unsafe = false
|
|
fn.CFBundleCopyBuiltInPlugInsURL.unsafe = false
|
|
fn.CFBundleCopyInfoDictionaryInDirectory.unsafe = false
|
|
fn.CFBundleCopyResourceURL.unsafe = false
|
|
fn.CFBundleCopyResourceURLsOfType.unsafe = false
|
|
fn.CFBundleCopyLocalizedString.unsafe = false
|
|
fn.CFBundleCopyResourceURLInDirectory.unsafe = false
|
|
fn.CFBundleCopyResourceURLsOfTypeInDirectory.unsafe = false
|
|
fn.CFBundleCopyBundleLocalizations.unsafe = false
|
|
fn.CFBundleCopyPreferredLocalizationsFromArray.unsafe = true # CFArray can contain anything
|
|
fn.CFBundleCopyLocalizationsForPreferences.unsafe = true # CFArray can contain anything
|
|
fn.CFBundleCopyResourceURLForLocalization.unsafe = false
|
|
fn.CFBundleCopyResourceURLsOfTypeForLocalization.unsafe = false
|
|
fn.CFBundleCopyInfoDictionaryForURL.unsafe = false
|
|
fn.CFBundleCopyLocalizationsForURL.unsafe = false
|
|
fn.CFBundleCopyExecutableArchitecturesForURL.unsafe = false
|
|
fn.CFBundleCopyExecutableURL.unsafe = false
|
|
fn.CFBundleCopyExecutableArchitectures.unsafe = false
|
|
fn.CFBundleIsExecutableLoaded.unsafe = false
|
|
fn.CFBundleLoadExecutable.unsafe = true # See below
|
|
fn.CFBundleUnloadExecutable.unsafe = true # Seems wildly unsafe?
|
|
fn.CFBundleGetFunctionPointerForName.unsafe = false
|
|
fn.CFBundleGetDataPointerForName.unsafe = false
|
|
fn.CFBundleCopyAuxiliaryExecutableURL.unsafe = false
|
|
fn.CFBundleIsExecutableLoadable.unsafe = false
|
|
fn.CFBundleIsExecutableLoadableForURL.unsafe = false
|
|
fn.CFBundleIsArchitectureLoadable.unsafe = false
|
|
fn.CFBundleGetPlugIn.unsafe = false
|
|
|
|
# CFCalendar
|
|
fn.CFCalendarCopyCurrent.unsafe = false # Returns a new instance, so still safe to modify
|
|
fn.CFCalendarCreateWithIdentifier.unsafe = false
|
|
fn.CFCalendarGetIdentifier.unsafe = false
|
|
fn.CFCalendarCopyLocale.unsafe = false
|
|
fn.CFCalendarSetLocale.unsafe = true
|
|
fn.CFCalendarCopyTimeZone.unsafe = false
|
|
fn.CFCalendarSetTimeZone.unsafe = false
|
|
fn.CFCalendarGetFirstWeekday.unsafe = false
|
|
fn.CFCalendarSetFirstWeekday.unsafe = false
|
|
fn.CFCalendarGetMinimumDaysInFirstWeek.unsafe = false
|
|
fn.CFCalendarSetMinimumDaysInFirstWeek.unsafe = false
|
|
fn.CFCalendarGetMinimumRangeOfUnit.unsafe = false
|
|
fn.CFCalendarGetMaximumRangeOfUnit.unsafe = false
|
|
fn.CFCalendarGetRangeOfUnit.unsafe = false
|
|
fn.CFCalendarGetOrdinalityOfUnit.unsafe = false
|
|
|
|
# CFData
|
|
fn.CFDataCreateCopy.unsafe = false
|
|
fn.CFDataCreateMutable.unsafe = false
|
|
fn.CFDataGetLength.unsafe = false
|
|
fn.CFDataGetBytePtr.unsafe = false
|
|
fn.CFDataGetMutableBytePtr.unsafe = false
|
|
fn.CFDataSetLength.unsafe = false
|
|
fn.CFDataIncreaseLength.unsafe = false
|
|
fn.CFDataDeleteBytes.unsafe = false
|
|
|
|
# CFDate
|
|
fn.CFAbsoluteTimeGetCurrent.unsafe = false
|
|
fn.CFDateCreate.unsafe = false
|
|
fn.CFDateGetAbsoluteTime.unsafe = false
|
|
fn.CFDateGetTimeIntervalSinceDate.unsafe = false
|
|
|
|
# CFDictionary
|
|
fn.CFDictionaryCreateCopy.unsafe = false
|
|
fn.CFDictionaryCreateMutableCopy.unsafe = true # UB if capacity not large enough
|
|
fn.CFDictionaryGetCount.unsafe = false
|
|
fn.CFDictionaryRemoveAllValues.unsafe = false
|
|
|
|
# CFError
|
|
fn.CFErrorCreate.unsafe = true # CFDictionary can contain anything
|
|
fn.CFErrorGetDomain.unsafe = false
|
|
fn.CFErrorGetCode.unsafe = false
|
|
fn.CFErrorCopyUserInfo.unsafe = false
|
|
fn.CFErrorCopyDescription.unsafe = false
|
|
fn.CFErrorCopyFailureReason.unsafe = false
|
|
fn.CFErrorCopyRecoverySuggestion.unsafe = false
|
|
|
|
# CFFileDescriptor
|
|
fn.CFFileDescriptorCreate.unsafe = true # Callout / context must be sendable
|
|
fn.CFFileDescriptorGetNativeDescriptor.unsafe = false
|
|
fn.CFFileDescriptorEnableCallBacks.unsafe = false
|
|
fn.CFFileDescriptorDisableCallBacks.unsafe = false
|
|
fn.CFFileDescriptorInvalidate.unsafe = false
|
|
fn.CFFileDescriptorIsValid.unsafe = false
|
|
fn.CFFileDescriptorCreateRunLoopSource.unsafe = false
|
|
|
|
# CFFileSecurity
|
|
fn.CFFileSecurityCreate.unsafe = false
|
|
fn.CFFileSecurityCreateCopy.unsafe = false
|
|
fn.CFFileSecuritySetOwnerUUID.unsafe = false
|
|
fn.CFFileSecuritySetGroupUUID.unsafe = false
|
|
fn.CFFileSecuritySetOwner.unsafe = false
|
|
fn.CFFileSecuritySetGroup.unsafe = false
|
|
fn.CFFileSecuritySetMode.unsafe = false
|
|
fn.CFFileSecurityClearProperties.unsafe = false
|
|
|
|
# CFLocale
|
|
fn.CFLocaleGetSystem.unsafe = false
|
|
fn.CFLocaleCopyCurrent.unsafe = false
|
|
fn.CFLocaleCopyAvailableLocaleIdentifiers.unsafe = false
|
|
fn.CFLocaleCopyISOLanguageCodes.unsafe = false
|
|
fn.CFLocaleCopyISOCountryCodes.unsafe = false
|
|
fn.CFLocaleCopyISOCurrencyCodes.unsafe = false
|
|
fn.CFLocaleCopyCommonISOCurrencyCodes.unsafe = false
|
|
fn.CFLocaleCopyPreferredLanguages.unsafe = false
|
|
fn.CFLocaleCreateCanonicalLanguageIdentifierFromString.unsafe = false
|
|
fn.CFLocaleCreateCanonicalLocaleIdentifierFromString.unsafe = false
|
|
fn.CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes.unsafe = false
|
|
fn.CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode.unsafe = false
|
|
fn.CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier.unsafe = false
|
|
fn.CFLocaleGetLanguageCharacterDirection.unsafe = false
|
|
fn.CFLocaleGetLanguageLineDirection.unsafe = false
|
|
fn.CFLocaleCreateComponentsFromLocaleIdentifier.unsafe = false
|
|
fn.CFLocaleCreateLocaleIdentifierFromComponents.unsafe = true # CFDictionary can contain anything
|
|
fn.CFLocaleCreate.unsafe = false
|
|
fn.CFLocaleCreateCopy.unsafe = false
|
|
fn.CFLocaleGetIdentifier.unsafe = false
|
|
fn.CFLocaleGetValue.unsafe = false
|
|
fn.CFLocaleCopyDisplayNameForPropertyValue.unsafe = false
|
|
|
|
# CFMachPort
|
|
fn.CFMachPortGetPort.unsafe = false
|
|
fn.CFMachPortInvalidate.unsafe = false
|
|
fn.CFMachPortIsValid.unsafe = false
|
|
fn.CFMachPortGetInvalidationCallBack.unsafe = false
|
|
fn.CFMachPortSetInvalidationCallBack.unsafe = true # Callback must be sendable
|
|
fn.CFMachPortCreateRunLoopSource.unsafe = false
|
|
|
|
# CFMessagePort
|
|
fn.CFMessagePortCreateRemote.unsafe = false
|
|
fn.CFMessagePortIsRemote.unsafe = false
|
|
fn.CFMessagePortGetName.unsafe = false
|
|
fn.CFMessagePortSetName.unsafe = false
|
|
fn.CFMessagePortInvalidate.unsafe = false
|
|
fn.CFMessagePortIsValid.unsafe = false
|
|
fn.CFMessagePortGetInvalidationCallBack.unsafe = false
|
|
fn.CFMessagePortSetInvalidationCallBack.unsafe = true # Callback must be sendable
|
|
fn.CFMessagePortCreateRunLoopSource.unsafe = false
|
|
|
|
# CFNotificationCenter
|
|
fn.CFNotificationCenterGetLocalCenter.unsafe = false
|
|
fn.CFNotificationCenterGetDistributedCenter.unsafe = false
|
|
fn.CFNotificationCenterGetDarwinNotifyCenter.unsafe = false
|
|
|
|
# CFNumber
|
|
fn.CFBooleanGetValue.unsafe = false
|
|
fn.CFNumberGetType.unsafe = false
|
|
fn.CFNumberGetByteSize.unsafe = false
|
|
fn.CFNumberIsFloatType.unsafe = false
|
|
|
|
# CFPlugIn
|
|
fn.CFPlugInCreate.unsafe = false
|
|
fn.CFPlugInGetBundle.unsafe = false
|
|
fn.CFPlugInSetLoadOnDemand.unsafe = false
|
|
fn.CFPlugInIsLoadOnDemand.unsafe = false
|
|
fn.CFPlugInFindFactoriesForPlugInType.unsafe = false
|
|
fn.CFPlugInFindFactoriesForPlugInTypeInPlugIn.unsafe = false
|
|
fn.CFPlugInInstanceCreate.unsafe = false
|
|
fn.CFPlugInRegisterFactoryFunction.unsafe = false
|
|
fn.CFPlugInRegisterFactoryFunctionByName.unsafe = false
|
|
fn.CFPlugInUnregisterFactory.unsafe = false
|
|
fn.CFPlugInRegisterPlugInType.unsafe = false
|
|
fn.CFPlugInUnregisterPlugInType.unsafe = false
|
|
fn.CFPlugInAddInstanceForFactory.unsafe = false
|
|
fn.CFPlugInRemoveInstanceForFactory.unsafe = false
|
|
fn.CFPlugInInstanceGetFactoryName.unsafe = false
|
|
fn.CFPlugInInstanceGetInstanceData.unsafe = false
|
|
fn.CFPlugInInstanceCreateWithInstanceDataSize.unsafe = true # Callbacks, must be sendable?
|
|
|
|
# CFPreferences
|
|
fn.CFPreferencesCopyAppValue.unsafe = false
|
|
fn.CFPreferencesSetAppValue.unsafe = true # CFPropertyList can be anything
|
|
fn.CFPreferencesAddSuitePreferencesToApp.unsafe = false
|
|
fn.CFPreferencesRemoveSuitePreferencesFromApp.unsafe = false
|
|
fn.CFPreferencesAppSynchronize.unsafe = false
|
|
fn.CFPreferencesCopyValue.unsafe = false
|
|
fn.CFPreferencesCopyMultiple.unsafe = false
|
|
fn.CFPreferencesSetValue.unsafe = true # CFPropertyList can be anything
|
|
fn.CFPreferencesSetMultiple.unsafe = true # CFArray can contain anything
|
|
fn.CFPreferencesCopyKeyList.unsafe = false
|
|
fn.CFPreferencesAppValueIsForced.unsafe = false
|
|
|
|
# CFPropertyList
|
|
fn.CFPropertyListCreateXMLData.unsafe = true # CFPropertyList can be anything
|
|
fn.CFPropertyListCreateDeepCopy.unsafe = true # CFPropertyList can be anything
|
|
fn.CFPropertyListIsValid.unsafe = true # CFPropertyList can be anything
|
|
|
|
# CFRunLoop
|
|
fn.CFRunLoopGetCurrent.unsafe = false
|
|
fn.CFRunLoopGetMain.unsafe = false
|
|
fn.CFRunLoopCopyCurrentMode.unsafe = false
|
|
fn.CFRunLoopCopyAllModes.unsafe = false
|
|
fn.CFRunLoopAddCommonMode.unsafe = false
|
|
fn.CFRunLoopGetNextTimerFireDate.unsafe = false
|
|
fn.CFRunLoopRun.unsafe = false # Can be run recursively
|
|
fn.CFRunLoopRunInMode.unsafe = false
|
|
fn.CFRunLoopIsWaiting.unsafe = false
|
|
fn.CFRunLoopWakeUp.unsafe = false
|
|
fn.CFRunLoopStop.unsafe = false
|
|
fn.CFRunLoopPerformBlock.unsafe = true # Block must be sendable
|
|
fn.CFRunLoopContainsSource.unsafe = false
|
|
fn.CFRunLoopAddSource.unsafe = false
|
|
fn.CFRunLoopRemoveSource.unsafe = false
|
|
fn.CFRunLoopContainsObserver.unsafe = false
|
|
fn.CFRunLoopAddObserver.unsafe = false
|
|
fn.CFRunLoopRemoveObserver.unsafe = false
|
|
fn.CFRunLoopContainsTimer.unsafe = false
|
|
fn.CFRunLoopAddTimer.unsafe = false
|
|
fn.CFRunLoopRemoveTimer.unsafe = false
|
|
fn.CFRunLoopSourceCreate.unsafe = true # Context must be sendable
|
|
fn.CFRunLoopSourceGetOrder.unsafe = false
|
|
fn.CFRunLoopSourceInvalidate.unsafe = false
|
|
fn.CFRunLoopSourceIsValid.unsafe = false
|
|
fn.CFRunLoopSourceSignal.unsafe = false
|
|
fn.CFRunLoopObserverCreate.unsafe = true # Callout / context must be sendable
|
|
fn.CFRunLoopObserverCreateWithHandler.unsafe = true # Handler must be sendable
|
|
fn.CFRunLoopObserverGetActivities.unsafe = false
|
|
fn.CFRunLoopObserverDoesRepeat.unsafe = false
|
|
fn.CFRunLoopObserverGetOrder.unsafe = false
|
|
fn.CFRunLoopObserverInvalidate.unsafe = false
|
|
fn.CFRunLoopObserverIsValid.unsafe = false
|
|
fn.CFRunLoopTimerCreate.unsafe = true # Callout / context must be sendable
|
|
fn.CFRunLoopTimerCreateWithHandler.unsafe = true # Handler must be sendable
|
|
fn.CFRunLoopTimerGetNextFireDate.unsafe = false
|
|
fn.CFRunLoopTimerSetNextFireDate.unsafe = false
|
|
fn.CFRunLoopTimerGetInterval.unsafe = false
|
|
fn.CFRunLoopTimerDoesRepeat.unsafe = false
|
|
fn.CFRunLoopTimerGetOrder.unsafe = false
|
|
fn.CFRunLoopTimerInvalidate.unsafe = false
|
|
fn.CFRunLoopTimerIsValid.unsafe = false
|
|
fn.CFRunLoopTimerGetTolerance.unsafe = false
|
|
fn.CFRunLoopTimerSetTolerance.unsafe = true # Not thread safe?
|
|
|
|
# CFSet
|
|
fn.CFSetCreateCopy.unsafe = false
|
|
fn.CFSetCreateMutableCopy.unsafe = true # UB if capacity not large enough
|
|
fn.CFSetGetCount.unsafe = false
|
|
fn.CFSetRemoveAllValues.unsafe = false
|
|
|
|
# CFSocket
|
|
fn.CFSocketCreate.unsafe = true # Callout/context must be sendable
|
|
fn.CFSocketCreateWithNative.unsafe = true # Callout/context must be sendable
|
|
fn.CFSocketCreateWithSocketSignature.unsafe = true # Callout/context must be sendable
|
|
fn.CFSocketSetAddress.unsafe = false
|
|
fn.CFSocketConnectToAddress.unsafe = false
|
|
fn.CFSocketInvalidate.unsafe = false
|
|
fn.CFSocketIsValid.unsafe = false
|
|
fn.CFSocketCopyAddress.unsafe = false
|
|
fn.CFSocketCopyPeerAddress.unsafe = false
|
|
fn.CFSocketGetNative.unsafe = false
|
|
fn.CFSocketCreateRunLoopSource.unsafe = false
|
|
fn.CFSocketGetSocketFlags.unsafe = false
|
|
fn.CFSocketSetSocketFlags.unsafe = false
|
|
fn.CFSocketDisableCallBacks.unsafe = false
|
|
fn.CFSocketEnableCallBacks.unsafe = false
|
|
fn.CFSocketSendData.unsafe = false
|
|
fn.CFSocketSetDefaultNameRegistryPortNumber.unsafe = false
|
|
fn.CFSocketGetDefaultNameRegistryPortNumber.unsafe = false
|
|
|
|
# CFStream
|
|
fn.CFWriteStreamCreateWithAllocatedBuffers.unsafe = false
|
|
fn.CFReadStreamCreateWithFile.unsafe = false
|
|
fn.CFWriteStreamCreateWithFile.unsafe = false
|
|
fn.CFReadStreamGetStatus.unsafe = false
|
|
fn.CFWriteStreamGetStatus.unsafe = false
|
|
fn.CFReadStreamCopyError.unsafe = false
|
|
fn.CFWriteStreamCopyError.unsafe = false
|
|
fn.CFReadStreamOpen.unsafe = false
|
|
fn.CFWriteStreamOpen.unsafe = false
|
|
fn.CFReadStreamClose.unsafe = false
|
|
fn.CFWriteStreamClose.unsafe = false
|
|
fn.CFReadStreamHasBytesAvailable.unsafe = false
|
|
fn.CFWriteStreamCanAcceptBytes.unsafe = false
|
|
fn.CFReadStreamCopyProperty.unsafe = false
|
|
fn.CFWriteStreamCopyProperty.unsafe = false
|
|
fn.CFReadStreamSetProperty.unsafe = true # CFType can be anything
|
|
fn.CFWriteStreamSetProperty.unsafe = true # CFType can be anything
|
|
fn.CFReadStreamScheduleWithRunLoop.unsafe = false
|
|
fn.CFWriteStreamScheduleWithRunLoop.unsafe = false
|
|
fn.CFReadStreamUnscheduleFromRunLoop.unsafe = false
|
|
fn.CFWriteStreamUnscheduleFromRunLoop.unsafe = false
|
|
fn.CFReadStreamGetError.unsafe = false
|
|
fn.CFWriteStreamGetError.unsafe = false
|
|
|
|
# CFString
|
|
fn.CFStringCreateWithSubstring.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringCreateCopy.unsafe = false
|
|
fn.CFStringCreateMutable.unsafe = false
|
|
fn.CFStringCreateMutableCopy.unsafe = false
|
|
fn.CFStringGetLength.unsafe = false
|
|
fn.CFStringGetCharacterAtIndex.unsafe = true # Maybe UB if out of bounds?
|
|
fn.CFStringGetPascalStringPtr.unsafe = false
|
|
fn.CFStringGetCStringPtr.unsafe = false
|
|
fn.CFStringGetCharactersPtr.unsafe = false
|
|
fn.CFStringCreateFromExternalRepresentation.unsafe = false
|
|
fn.CFStringCreateExternalRepresentation.unsafe = false
|
|
fn.CFStringGetSmallestEncoding.unsafe = false
|
|
fn.CFStringGetFastestEncoding.unsafe = false
|
|
fn.CFStringGetSystemEncoding.unsafe = false
|
|
fn.CFStringGetMaximumSizeForEncoding.unsafe = false
|
|
fn.CFStringGetMaximumSizeOfFileSystemRepresentation.unsafe = false
|
|
fn.CFStringCompareWithOptionsAndLocale.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringCompareWithOptions.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringCompare.unsafe = false
|
|
fn.CFStringCreateArrayWithFindResults.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringFind.unsafe = false
|
|
fn.CFStringHasPrefix.unsafe = false
|
|
fn.CFStringHasSuffix.unsafe = false
|
|
fn.CFStringGetRangeOfComposedCharactersAtIndex.unsafe = true # UB if out of bounds
|
|
fn.CFStringIsHyphenationAvailableForLocale.unsafe = false
|
|
fn.CFStringCreateByCombiningStrings.unsafe = true # CFArray can contain anything
|
|
fn.CFStringCreateArrayBySeparatingStrings.unsafe = false
|
|
fn.CFStringGetIntValue.unsafe = false
|
|
fn.CFStringGetDoubleValue.unsafe = false
|
|
fn.CFStringAppend.unsafe = false
|
|
fn.CFStringInsert.unsafe = true # Maybe UB if out of bounds?
|
|
fn.CFStringDelete.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringReplace.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringReplaceAll.unsafe = false
|
|
fn.CFStringFindAndReplace.unsafe = true # Unsure if range out of bounds is UB
|
|
fn.CFStringPad.unsafe = true # Maybe UB if out of bounds?
|
|
fn.CFStringTrim.unsafe = false
|
|
fn.CFStringTrimWhitespace.unsafe = false
|
|
fn.CFStringLowercase.unsafe = false
|
|
fn.CFStringUppercase.unsafe = false
|
|
fn.CFStringCapitalize.unsafe = false
|
|
fn.CFStringNormalize.unsafe = true # Maybe UB if CFStringNormalizationForm is not valid?
|
|
fn.CFStringFold.unsafe = false
|
|
fn.CFStringIsEncodingAvailable.unsafe = false
|
|
fn.CFStringGetListOfAvailableEncodings.unsafe = false
|
|
fn.CFStringGetNameOfEncoding.unsafe = false
|
|
fn.CFStringConvertEncodingToNSStringEncoding.unsafe = false
|
|
fn.CFStringConvertNSStringEncodingToEncoding.unsafe = false
|
|
fn.CFStringConvertEncodingToWindowsCodepage.unsafe = false
|
|
fn.CFStringConvertWindowsCodepageToEncoding.unsafe = false
|
|
fn.CFStringConvertIANACharSetNameToEncoding.unsafe = false
|
|
fn.CFStringConvertEncodingToIANACharSetName.unsafe = false
|
|
fn.CFStringGetMostCompatibleMacStringEncoding.unsafe = false
|
|
fn.CFShow.unsafe = false
|
|
fn.CFShowStr.unsafe = false
|
|
|
|
# CFTimeZone
|
|
fn.CFTimeZoneCopySystem.unsafe = false
|
|
fn.CFTimeZoneCopyDefault.unsafe = false
|
|
fn.CFTimeZoneSetDefault.unsafe = false
|
|
fn.CFTimeZoneCopyKnownNames.unsafe = false
|
|
fn.CFTimeZoneCopyAbbreviationDictionary.unsafe = false
|
|
fn.CFTimeZoneSetAbbreviationDictionary.unsafe = true # CFDictionary can be anything
|
|
fn.CFTimeZoneCreate.unsafe = true # Unsure
|
|
fn.CFTimeZoneCreateWithTimeIntervalFromGMT.unsafe = false
|
|
fn.CFTimeZoneCreateWithName.unsafe = false
|
|
fn.CFTimeZoneGetName.unsafe = false
|
|
fn.CFTimeZoneGetData.unsafe = false
|
|
fn.CFTimeZoneGetSecondsFromGMT.unsafe = false
|
|
fn.CFTimeZoneCopyAbbreviation.unsafe = false
|
|
fn.CFTimeZoneIsDaylightSavingTime.unsafe = false
|
|
fn.CFTimeZoneGetDaylightSavingTimeOffset.unsafe = false
|
|
fn.CFTimeZoneGetNextDaylightSavingTimeTransition.unsafe = false
|
|
fn.CFTimeZoneCopyLocalizedName.unsafe = false
|
|
|
|
# CFURL
|
|
fn.CFURLCreateData.unsafe = false
|
|
fn.CFURLCreateWithString.unsafe = false
|
|
fn.CFURLCreateWithFileSystemPath.unsafe = false
|
|
fn.CFURLCreateWithFileSystemPathRelativeToBase.unsafe = false
|
|
fn.CFURLCopyAbsoluteURL.unsafe = false
|
|
fn.CFURLGetString.unsafe = false
|
|
fn.CFURLGetBaseURL.unsafe = false
|
|
fn.CFURLCanBeDecomposed.unsafe = false
|
|
fn.CFURLCopyScheme.unsafe = false
|
|
fn.CFURLCopyNetLocation.unsafe = false
|
|
fn.CFURLCopyPath.unsafe = false
|
|
fn.CFURLCopyFileSystemPath.unsafe = false
|
|
fn.CFURLHasDirectoryPath.unsafe = false
|
|
fn.CFURLCopyResourceSpecifier.unsafe = false
|
|
fn.CFURLCopyHostName.unsafe = false
|
|
fn.CFURLGetPortNumber.unsafe = false
|
|
fn.CFURLCopyUserName.unsafe = false
|
|
fn.CFURLCopyPassword.unsafe = false
|
|
fn.CFURLCopyParameterString.unsafe = false
|
|
fn.CFURLCopyQueryString.unsafe = false
|
|
fn.CFURLCopyFragment.unsafe = false
|
|
fn.CFURLCopyLastPathComponent.unsafe = false
|
|
fn.CFURLCopyPathExtension.unsafe = false
|
|
fn.CFURLCreateCopyAppendingPathComponent.unsafe = false
|
|
fn.CFURLCreateCopyDeletingLastPathComponent.unsafe = false
|
|
fn.CFURLCreateCopyAppendingPathExtension.unsafe = false
|
|
fn.CFURLCreateCopyDeletingPathExtension.unsafe = false
|
|
fn.CFURLCreateStringByReplacingPercentEscapes.unsafe = false
|
|
fn.CFURLIsFileReferenceURL.unsafe = false
|
|
fn.CFURLClearResourcePropertyCacheForKey.unsafe = false
|
|
fn.CFURLClearResourcePropertyCache.unsafe = false
|
|
fn.CFURLSetTemporaryResourcePropertyForKey.unsafe = false
|
|
|
|
# CFUserNotification
|
|
fn.CFUserNotificationGetResponseValue.unsafe = true # Unsure about key/idx
|
|
fn.CFUserNotificationGetResponseDictionary.unsafe = false
|
|
fn.CFUserNotificationUpdate.unsafe = true # Takes CFDictionary which can be anything
|
|
fn.CFUserNotificationCancel.unsafe = false
|
|
fn.CFUserNotificationCreateRunLoopSource.unsafe = true # Callback must be sendable
|
|
fn.CFUserNotificationDisplayNotice.unsafe = false
|
|
|
|
# CFUtilities
|
|
fn.CFCopyHomeDirectoryURL.unsafe = false
|
|
|
|
# CFUUID
|
|
fn.CFUUIDCreate.unsafe = false
|
|
fn.CFUUIDCreateWithBytes.unsafe = false
|
|
fn.CFUUIDCreateFromString.unsafe = false
|
|
fn.CFUUIDCreateString.unsafe = false
|
|
fn.CFUUIDGetConstantUUIDWithBytes.unsafe = false
|
|
fn.CFUUIDGetUUIDBytes.unsafe = false
|
|
fn.CFUUIDCreateFromUUIDBytes.unsafe = false
|