Skip to content

Commit f9dc9cf

Browse files
committed
Fix generic signatures in CoreFoundation
1 parent f088bea commit f9dc9cf

File tree

2 files changed

+106
-1
lines changed

2 files changed

+106
-1
lines changed

framework-crates/objc2-core-foundation/translation-config.toml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,111 @@ fn.CFDictionaryContainsValue.renamed = "contains_ptr_value"
110110
fn.CFURLCreateWithString.renamed = "__from_string"
111111
fn.CFURLGetString.renamed = "__string"
112112

113+
##
114+
## Fixing generics.
115+
##
116+
117+
# Key-value is same as for NSAttributedString.
118+
fn.CFAttributedStringCreate.arguments.2.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
119+
fn.CFAttributedStringGetAttributes.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
120+
fn.CFAttributedStringGetAttributesAndLongestEffectiveRange.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
121+
fn.CFAttributedStringSetAttributes.arguments.2.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
122+
123+
# Key being string for info dictionaries is same as NSBundle.infoDictionary.
124+
fn.CFBundleGetAllBundles.return.generics = ["CoreFoundation.CFBundle.CFBundle"]
125+
fn.CFBundleCreateBundlesFromDirectory.return.generics = ["CoreFoundation.CFBundle.CFBundle"]
126+
fn.CFBundleGetInfoDictionary.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFPropertyList.CFPropertyList"]
127+
fn.CFBundleGetLocalInfoDictionary.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFPropertyList.CFPropertyList"]
128+
fn.CFBundleCopyInfoDictionaryInDirectory.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFPropertyList.CFPropertyList"]
129+
fn.CFBundleCopyResourceURLsOfType.return.generics = ["CoreFoundation.CFURL.CFURL"]
130+
fn.CFBundleCopyLocalizedStringForLocalizations.arguments.4.generics = ["CoreFoundation.CFString.CFString"]
131+
fn.CFBundleCopyResourceURLsOfTypeInDirectory.return.generics = ["CoreFoundation.CFURL.CFURL"]
132+
fn.CFBundleCopyBundleLocalizations.return.generics = ["CoreFoundation.CFString.CFString"]
133+
fn.CFBundleCopyPreferredLocalizationsFromArray.arguments.0.generics = ["CoreFoundation.CFString.CFString"]
134+
fn.CFBundleCopyPreferredLocalizationsFromArray.return.generics = ["CoreFoundation.CFString.CFString"]
135+
fn.CFBundleCopyLocalizationsForPreferences.arguments.0.generics = ["CoreFoundation.CFString.CFString"]
136+
fn.CFBundleCopyLocalizationsForPreferences.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
137+
fn.CFBundleCopyLocalizationsForPreferences.return.generics = ["CoreFoundation.CFString.CFString"]
138+
fn.CFBundleCopyResourceURLsOfTypeForLocalization.return.generics = ["CoreFoundation.CFURL.CFURL"]
139+
fn.CFBundleCopyInfoDictionaryForURL.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFPropertyList.CFPropertyList"]
140+
fn.CFBundleCopyLocalizationsForURL.return.generics = ["CoreFoundation.CFString.CFString"]
141+
fn.CFBundleCopyExecutableArchitecturesForURL.return.generics = ["CoreFoundation.CFNumber.CFNumber"]
142+
fn.CFBundleCopyExecutableArchitectures.return.generics = ["CoreFoundation.CFNumber.CFNumber"]
143+
fn.CFBundleGetFunctionPointersForNames.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
144+
fn.CFBundleGetDataPointersForNames.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
145+
146+
# Key-value is same as for NSError.
147+
fn.CFErrorCreate.arguments.3.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
148+
fn.CFErrorCopyUserInfo.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
149+
150+
fn.CFLocaleCopyAvailableLocaleIdentifiers.return.generics = ["CoreFoundation.CFString.CFString"]
151+
fn.CFLocaleCopyISOLanguageCodes.return.generics = ["CoreFoundation.CFString.CFString"]
152+
fn.CFLocaleCopyISOCountryCodes.return.generics = ["CoreFoundation.CFString.CFString"]
153+
fn.CFLocaleCopyISOCurrencyCodes.return.generics = ["CoreFoundation.CFString.CFString"]
154+
fn.CFLocaleCopyCommonISOCurrencyCodes.return.generics = ["CoreFoundation.CFString.CFString"]
155+
fn.CFLocaleCopyPreferredLanguages.return.generics = ["CoreFoundation.CFLocale.CFLocaleIdentifier"] # TODO: Somehow communicate that CFString is required for this to be available
156+
fn.CFLocaleCreateComponentsFromLocaleIdentifier.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFString.CFString"]
157+
fn.CFLocaleCreateLocaleIdentifierFromComponents.arguments.1.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFString.CFString"]
158+
159+
# `userInfo` dict generics are allowed to be anything, except if a "distributed" notification.
160+
# typedef.CFNotificationCallback.arguments.4.generics = []
161+
fn.CFNotificationCenterPostNotification.arguments.3.generics = []
162+
fn.CFNotificationCenterPostNotificationWithOptions.arguments.3.generics = []
163+
164+
fn.CFPlugInFindFactoriesForPlugInType.return.generics = ["CoreFoundation.CFUUID.CFUUID"]
165+
fn.CFPlugInFindFactoriesForPlugInTypeInPlugIn.return.generics = ["CoreFoundation.CFUUID.CFUUID"]
166+
167+
# Preferences are property lists
168+
fn.CFPreferencesCopyMultiple.arguments.0.generics = ["CoreFoundation.CFString.CFString"]
169+
fn.CFPreferencesCopyMultiple.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
170+
fn.CFPreferencesSetMultiple.arguments.0.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
171+
fn.CFPreferencesSetMultiple.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
172+
fn.CFPreferencesCopyKeyList.return.generics = ["CoreFoundation.CFString.CFString"]
173+
fn.CFPreferencesCopyApplicationList.return.generics = [] # TODO: Maybe String?
174+
175+
fn.CFRunLoopCopyAllModes.return.generics = ["CoreFoundation.CFRunLoop.CFRunLoopMode"]
176+
177+
fn.CFStringCreateArrayWithFindResults.return.generics = [] # TODO: Pointers to CFRange.
178+
fn.CFStringCreateByCombiningStrings.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
179+
fn.CFStringCreateArrayBySeparatingStrings.return.generics = ["CoreFoundation.CFString.CFString"]
180+
181+
# TODO: Unclear type.
182+
fn.CFStringTokenizerGetCurrentSubTokens.arguments.3.generics = []
183+
184+
fn.CFTimeZoneCopyKnownNames.return.generics = ["CoreFoundation.CFString.CFString"]
185+
fn.CFTimeZoneCopyAbbreviationDictionary.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFString.CFString"]
186+
fn.CFTimeZoneSetAbbreviationDictionary.arguments.0.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFString.CFString"]
187+
188+
# Resource property keys are CFString keys.
189+
# See also `-[NSURL bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:]`.
190+
fn.CFURLCopyResourcePropertiesForKeys.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
191+
fn.CFURLCopyResourcePropertiesForKeys.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
192+
fn.CFURLSetResourcePropertiesForKeys.arguments.1.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
193+
fn.CFURLCreateBookmarkData.arguments.3.generics = ["CoreFoundation.CFString.CFString"]
194+
fn.CFURLCreateByResolvingBookmarkData.arguments.4.generics = ["CoreFoundation.CFString.CFString"]
195+
fn.CFURLCreateResourcePropertiesForKeysFromBookmarkData.arguments.1.generics = ["CoreFoundation.CFString.CFString"]
196+
fn.CFURLCreateResourcePropertiesForKeysFromBookmarkData.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
197+
198+
fn.CFURLCreateDataAndPropertiesFromResource.arguments.3.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
199+
fn.CFURLCreateDataAndPropertiesFromResource.arguments.4.generics = ["CoreFoundation.CFString.CFString"]
200+
fn.CFURLWriteDataAndPropertiesToResource.arguments.2.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
201+
202+
fn.CFURLEnumeratorCreateForDirectoryURL.arguments.3.generics = ["CoreFoundation.CFString.CFString"]
203+
fn.CFURLEnumeratorCreateForMountedVolumes.arguments.2.generics = ["CoreFoundation.CFString.CFString"]
204+
205+
fn.CFUserNotificationCreate.arguments.4.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
206+
fn.CFUserNotificationGetResponseDictionary.return.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
207+
fn.CFUserNotificationUpdate.arguments.3.generics = ["CoreFoundation.CFString.CFString", "CoreFoundation.CFType"]
208+
209+
# TODO: Support this in `header-translator`
210+
# struct.CFXMLElementInfo.fields.0.generics = [...]
211+
# struct.CFXMLElementInfo.fields.1.generics = [...]
212+
213+
# TODO.
214+
fn.CFXMLTreeCreateFromDataWithError.arguments.5.generics = []
215+
fn.CFXMLCreateStringByEscapingEntities.arguments.2.generics = []
216+
fn.CFXMLCreateStringByUnescapingEntities.arguments.2.generics = []
217+
113218
##
114219
## Safety
115220
##

0 commit comments

Comments
 (0)