CFBase.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. { CFBase.h
  2. Copyright (c) 1998-2009, Apple, Inc. All rights reserved.
  3. }
  4. { Pascal Translation Updated: Peter N Lewis, <[email protected]>, September 2005 }
  5. { Pascal Translation Updated: Jonas Maebe, <[email protected]>, October 2009 }
  6. { Pascal Translation Updated: Gorazd Krosl <[email protected]>, October 2009 }
  7. {
  8. Modified for use with Free Pascal
  9. Version 308
  10. Please report any bugs to <[email protected]>
  11. }
  12. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  13. {$mode macpas}
  14. {$packenum 1}
  15. {$macro on}
  16. {$inline on}
  17. {$calling mwpascal}
  18. unit CFBase;
  19. interface
  20. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  21. {$setc GAP_INTERFACES_VERSION := $0308}
  22. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  23. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  24. {$endc}
  25. {$ifc defined CPUPOWERPC and defined CPUI386}
  26. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  27. {$endc}
  28. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  29. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  30. {$endc}
  31. {$ifc not defined __ppc__ and defined CPUPOWERPC32}
  32. {$setc __ppc__ := 1}
  33. {$elsec}
  34. {$setc __ppc__ := 0}
  35. {$endc}
  36. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  37. {$setc __ppc64__ := 1}
  38. {$elsec}
  39. {$setc __ppc64__ := 0}
  40. {$endc}
  41. {$ifc not defined __i386__ and defined CPUI386}
  42. {$setc __i386__ := 1}
  43. {$elsec}
  44. {$setc __i386__ := 0}
  45. {$endc}
  46. {$ifc not defined __x86_64__ and defined CPUX86_64}
  47. {$setc __x86_64__ := 1}
  48. {$elsec}
  49. {$setc __x86_64__ := 0}
  50. {$endc}
  51. {$ifc not defined __arm__ and defined CPUARM}
  52. {$setc __arm__ := 1}
  53. {$elsec}
  54. {$setc __arm__ := 0}
  55. {$endc}
  56. {$ifc defined cpu64}
  57. {$setc __LP64__ := 1}
  58. {$elsec}
  59. {$setc __LP64__ := 0}
  60. {$endc}
  61. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  62. {$error Conflicting definitions for __ppc__ and __i386__}
  63. {$endc}
  64. {$ifc defined __ppc__ and __ppc__}
  65. {$setc TARGET_CPU_PPC := TRUE}
  66. {$setc TARGET_CPU_PPC64 := FALSE}
  67. {$setc TARGET_CPU_X86 := FALSE}
  68. {$setc TARGET_CPU_X86_64 := FALSE}
  69. {$setc TARGET_CPU_ARM := FALSE}
  70. {$setc TARGET_OS_MAC := TRUE}
  71. {$setc TARGET_OS_IPHONE := FALSE}
  72. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  73. {$elifc defined __ppc64__ and __ppc64__}
  74. {$setc TARGET_CPU_PPC := TFALSE}
  75. {$setc TARGET_CPU_PPC64 := TRUE}
  76. {$setc TARGET_CPU_X86 := FALSE}
  77. {$setc TARGET_CPU_X86_64 := FALSE}
  78. {$setc TARGET_CPU_ARM := FALSE}
  79. {$setc TARGET_OS_MAC := TRUE}
  80. {$setc TARGET_OS_IPHONE := FALSE}
  81. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  82. {$elifc defined __i386__ and __i386__}
  83. {$setc TARGET_CPU_PPC := FALSE}
  84. {$setc TARGET_CPU_PPC64 := FALSE}
  85. {$setc TARGET_CPU_X86 := TRUE}
  86. {$setc TARGET_CPU_X86_64 := FALSE}
  87. {$setc TARGET_CPU_ARM := FALSE}
  88. {$ifc defined(iphonesim)}
  89. {$setc TARGET_OS_MAC := FALSE}
  90. {$setc TARGET_OS_IPHONE := TRUE}
  91. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  92. {$elsec}
  93. {$setc TARGET_OS_MAC := TRUE}
  94. {$setc TARGET_OS_IPHONE := FALSE}
  95. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  96. {$endc}
  97. {$elifc defined __x86_64__ and __x86_64__}
  98. {$setc TARGET_CPU_PPC := FALSE}
  99. {$setc TARGET_CPU_PPC64 := FALSE}
  100. {$setc TARGET_CPU_X86 := FALSE}
  101. {$setc TARGET_CPU_X86_64 := TRUE}
  102. {$setc TARGET_CPU_ARM := FALSE}
  103. {$setc TARGET_OS_MAC := TRUE}
  104. {$setc TARGET_OS_IPHONE := FALSE}
  105. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  106. {$elifc defined __arm__ and __arm__}
  107. {$setc TARGET_CPU_PPC := FALSE}
  108. {$setc TARGET_CPU_PPC64 := FALSE}
  109. {$setc TARGET_CPU_X86 := FALSE}
  110. {$setc TARGET_CPU_X86_64 := FALSE}
  111. {$setc TARGET_CPU_ARM := TRUE}
  112. { will require compiler define when/if other Apple devices with ARM cpus ship }
  113. {$setc TARGET_OS_MAC := FALSE}
  114. {$setc TARGET_OS_IPHONE := TRUE}
  115. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  116. {$elsec}
  117. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ is defined.}
  118. {$endc}
  119. {$ifc defined __LP64__ and __LP64__ }
  120. {$setc TARGET_CPU_64 := TRUE}
  121. {$elsec}
  122. {$setc TARGET_CPU_64 := FALSE}
  123. {$endc}
  124. {$ifc defined FPC_BIG_ENDIAN}
  125. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  126. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  127. {$elifc defined FPC_LITTLE_ENDIAN}
  128. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  129. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  130. {$elsec}
  131. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  132. {$endc}
  133. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  134. {$setc CALL_NOT_IN_CARBON := FALSE}
  135. {$setc OLDROUTINENAMES := FALSE}
  136. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  137. {$setc OPAQUE_UPP_TYPES := TRUE}
  138. {$setc OTCARBONAPPLICATION := TRUE}
  139. {$setc OTKERNEL := FALSE}
  140. {$setc PM_USE_SESSION_APIS := TRUE}
  141. {$setc TARGET_API_MAC_CARBON := TRUE}
  142. {$setc TARGET_API_MAC_OS8 := FALSE}
  143. {$setc TARGET_API_MAC_OSX := TRUE}
  144. {$setc TARGET_CARBON := TRUE}
  145. {$setc TARGET_CPU_68K := FALSE}
  146. {$setc TARGET_CPU_MIPS := FALSE}
  147. {$setc TARGET_CPU_SPARC := FALSE}
  148. {$setc TARGET_OS_UNIX := FALSE}
  149. {$setc TARGET_OS_WIN32 := FALSE}
  150. {$setc TARGET_RT_MAC_68881 := FALSE}
  151. {$setc TARGET_RT_MAC_CFM := FALSE}
  152. {$setc TARGET_RT_MAC_MACHO := TRUE}
  153. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  154. {$setc TYPE_BOOL := FALSE}
  155. {$setc TYPE_EXTENDED := FALSE}
  156. {$setc TYPE_LONGLONG := TRUE}
  157. uses MacTypes;
  158. {$endc} {not MACOSALLINCLUDE}
  159. {$ALIGN POWER}
  160. type
  161. { type moved here to avoid circular dependency between Files and CFURL }
  162. CFURLRef = ^SInt32; { an opaque 32-bit type }
  163. CFURLRefPtr = ^CFURLRef;
  164. var kCFCoreFoundationVersionNumber: Float64; external name '_kCFCoreFoundationVersionNumber'; (* attribute const *)
  165. {$ifc TARGET_OS_MAC}
  166. const
  167. kCFCoreFoundationVersionNumber10_0 = 196.40;
  168. const
  169. kCFCoreFoundationVersionNumber10_0_3 = 196.50;
  170. const
  171. kCFCoreFoundationVersionNumber10_1 = 226.00;
  172. const
  173. kCFCoreFoundationVersionNumber10_1_1 = 226.00;
  174. { Note the next three do not follow the usual numbering policy from the base release }
  175. const
  176. kCFCoreFoundationVersionNumber10_1_2 = 227.20;
  177. const
  178. kCFCoreFoundationVersionNumber10_1_3 = 227.20;
  179. const
  180. kCFCoreFoundationVersionNumber10_1_4 = 227.30;
  181. const
  182. kCFCoreFoundationVersionNumber10_2 = 263.00;
  183. const
  184. kCFCoreFoundationVersionNumber10_2_1 = 263.10;
  185. const
  186. kCFCoreFoundationVersionNumber10_2_2 = 263.10;
  187. const
  188. kCFCoreFoundationVersionNumber10_2_3 = 263.30;
  189. const
  190. kCFCoreFoundationVersionNumber10_2_4 = 263.30;
  191. const
  192. kCFCoreFoundationVersionNumber10_2_5 = 263.50;
  193. const
  194. kCFCoreFoundationVersionNumber10_2_6 = 263.50;
  195. const
  196. kCFCoreFoundationVersionNumber10_2_7 = 263.50;
  197. const
  198. kCFCoreFoundationVersionNumber10_2_8 = 263.50;
  199. const
  200. kCFCoreFoundationVersionNumber10_3 = 299.00;
  201. const
  202. kCFCoreFoundationVersionNumber10_3_1 = 299.00;
  203. const
  204. kCFCoreFoundationVersionNumber10_3_2 = 299.00;
  205. const
  206. kCFCoreFoundationVersionNumber10_3_3 = 299.30;
  207. const
  208. kCFCoreFoundationVersionNumber10_3_4 = 299.31;
  209. const
  210. kCFCoreFoundationVersionNumber10_3_5 = 299.31;
  211. const
  212. kCFCoreFoundationVersionNumber10_3_6 = 299.32;
  213. const
  214. kCFCoreFoundationVersionNumber10_3_7 = 299.33;
  215. const
  216. kCFCoreFoundationVersionNumber10_3_8 = 299.33;
  217. const
  218. kCFCoreFoundationVersionNumber10_3_9 = 299.35;
  219. const
  220. kCFCoreFoundationVersionNumber10_4 = 368.00;
  221. const
  222. kCFCoreFoundationVersionNumber10_4_1 = 368.10;
  223. const
  224. kCFCoreFoundationVersionNumber10_4_2 = 368.11;
  225. const
  226. kCFCoreFoundationVersionNumber10_4_3 = 368.18;
  227. const
  228. kCFCoreFoundationVersionNumber10_4_4_Intel = 368.26;
  229. const
  230. kCFCoreFoundationVersionNumber10_4_4_PowerPC = 368.25;
  231. const
  232. kCFCoreFoundationVersionNumber10_4_5_Intel = 368.26;
  233. const
  234. kCFCoreFoundationVersionNumber10_4_5_PowerPC = 368.25;
  235. const
  236. kCFCoreFoundationVersionNumber10_4_6_Intel = 368.26;
  237. const
  238. kCFCoreFoundationVersionNumber10_4_6_PowerPC = 368.25;
  239. const
  240. kCFCoreFoundationVersionNumber10_4_7 = 368.27;
  241. const
  242. kCFCoreFoundationVersionNumber10_4_8 = 368.27;
  243. const
  244. kCFCoreFoundationVersionNumber10_4_9 = 368.28;
  245. const
  246. kCFCoreFoundationVersionNumber10_4_10 = 368.28;
  247. const
  248. kCFCoreFoundationVersionNumber10_4_11 = 368.31;
  249. const
  250. kCFCoreFoundationVersionNumber10_5 = 476.00;
  251. const
  252. kCFCoreFoundationVersionNumber10_5_1 = 476.00;
  253. const
  254. kCFCoreFoundationVersionNumber10_5_2 = 476.10;
  255. const
  256. kCFCoreFoundationVersionNumber10_5_3 = 476.13;
  257. const
  258. kCFCoreFoundationVersionNumber10_5_4 = 476.14;
  259. const
  260. kCFCoreFoundationVersionNumber10_5_5 = 476.15;
  261. const
  262. kCFCoreFoundationVersionNumber10_5_6 = 476.17;
  263. {$endc}
  264. {$ifc TARGET_OS_IPHONE}
  265. const
  266. kCFCoreFoundationVersionNumber_iPhoneOS_2_0 = 478.23;
  267. const
  268. kCFCoreFoundationVersionNumber_iPhoneOS_2_1 = 478.26;
  269. const
  270. kCFCoreFoundationVersionNumber_iPhoneOS_2_2 = 478.29;
  271. {$endc}
  272. type
  273. CFTypeID = UNSIGNEDLONG;
  274. CFOptionFlags = UNSIGNEDLONG;
  275. CFHashCode = UNSIGNEDLONG;
  276. CFIndex = SIGNEDLONG;
  277. CFIndexPtr = ^CFIndex;
  278. { Base "type" of all "CF objects", and polymorphic functions on them }
  279. type
  280. CFTypeRef = ^SInt32; { an opaque type }
  281. { GK: We need it for passing open arrays of CFTypes in MDQuery.pas }
  282. CFTypeRefPtr = ^CFTypeRef;
  283. type
  284. CFStringRef = ^SInt32; { an opaque type }
  285. CFStringRefPtr = ^CFStringRef;
  286. CFMutableStringRef = ^SInt32; { an opaque type }
  287. CFMutableStringRefPtr = ^CFMutableStringRef;
  288. {
  289. Type to mean any instance of a property list type;
  290. currently, CFString, CFData, CFNumber, CFBoolean, CFDate,
  291. CFArray, and CFDictionary.
  292. }
  293. type
  294. CFPropertyListRef = CFTypeRef;
  295. { Values returned from comparison functions }
  296. CFComparisonResult = SInt32;
  297. const
  298. kCFCompareLessThan = -1;
  299. kCFCompareEqualTo = 0;
  300. kCFCompareGreaterThan = 1;
  301. { A standard comparison function }
  302. type
  303. CFComparatorFunction = function( val1: {const} UnivPtr; val2: {const} UnivPtr; context: UnivPtr ): CFComparisonResult;
  304. { Constant used by some functions to indicate failed searches. }
  305. { This is of type CFIndex. }
  306. const
  307. kCFNotFound = -1;
  308. { Range type }
  309. type
  310. CFRangePtr = ^CFRange;
  311. CFRange = record
  312. location: CFIndex;
  313. length: CFIndex;
  314. end;
  315. function CFRangeMake( loc: CFIndex; len: CFIndex ): CFRange; external name '___CFRangeMake';
  316. { Private; do not use }
  317. function __CFRangeMake( loc: CFIndex; len: CFIndex ): CFRange; external name '___CFRangeMake';
  318. {#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED}
  319. { Null representant }
  320. type
  321. CFNullRef = ^SInt32; { an opaque 32-bit type }
  322. function CFNullGetTypeID: CFTypeID; external name '_CFNullGetTypeID';
  323. var kCFNull: CFNullRef; external name '_kCFNull'; (* attribute const *) // the singleton null instance
  324. {#endif}
  325. { Allocator API
  326. Most of the time when specifying an allocator to Create functions, the NULL
  327. argument indicates "use the default"; this is the same as using kCFAllocatorDefault
  328. or the return value from CFAllocatorGetDefault(). This assures that you will use
  329. the allocator in effect at that time.
  330. You should rarely use kCFAllocatorSystemDefault, the default default allocator.
  331. }
  332. type
  333. CFAllocatorRef = ^SInt32; { an opaque 32-bit type }
  334. CFAllocatorRefPtr = ^CFAllocatorRef;
  335. { This is a synonym for NULL, if you'd rather use a named constant. }
  336. var kCFAllocatorDefault: CFAllocatorRef; external name '_kCFAllocatorDefault'; (* attribute const *)
  337. { Default system allocator; you rarely need to use this. }
  338. var kCFAllocatorSystemDefault: CFAllocatorRef; external name '_kCFAllocatorSystemDefault'; (* attribute const *)
  339. { This allocator uses malloc(), realloc(), and free(). This should not be
  340. generally used; stick to kCFAllocatorDefault whenever possible. This
  341. allocator is useful as the "bytesDeallocator" in CFData or
  342. "contentsDeallocator" in CFString where the memory was obtained as a
  343. result of malloc() type functions.
  344. }
  345. var kCFAllocatorMalloc: CFAllocatorRef; external name '_kCFAllocatorMalloc'; (* attribute const *)
  346. { This allocator explicitly uses the default malloc zone, returned by
  347. malloc_default_zone(). It should only be used when an object is
  348. safe to be allocated in non-scanned memory.
  349. }
  350. var kCFAllocatorMallocZone: CFAllocatorRef; external name '_kCFAllocatorMallocZone'; (* attribute const *)
  351. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  352. { Null allocator which does nothing and allocates no memory. This allocator
  353. is useful as the "bytesDeallocator" in CFData or "contentsDeallocator"
  354. in CFString where the memory should not be freed.
  355. }
  356. var kCFAllocatorNull: CFAllocatorRef; external name '_kCFAllocatorNull'; (* attribute const *)
  357. { Special allocator argument to CFAllocatorCreate() which means
  358. "use the functions given in the context to allocate the allocator
  359. itself as well".
  360. }
  361. var kCFAllocatorUseContext: CFAllocatorRef; external name '_kCFAllocatorUseContext'; (* attribute const *)
  362. type
  363. CFAllocatorRetainCallBack = function( info: {const} UnivPtr ): UnivPtr;
  364. CFAllocatorReleaseCallBack = procedure( info: {const} UnivPtr );
  365. CFAllocatorCopyDescriptionCallBack = function( info: {const} UnivPtr ): CFStringRef;
  366. CFAllocatorAllocateCallBack = function( allocSize: CFIndex; hint: CFOptionFlags; info: UnivPtr ): UnivPtr;
  367. CFAllocatorReallocateCallBack = function( ptr: UnivPtr; newsize: CFIndex; hint: CFOptionFlags; info: UnivPtr ): UnivPtr;
  368. CFAllocatorDeallocateCallBack = procedure( ptr: UnivPtr; info: UnivPtr );
  369. CFAllocatorPreferredSizeCallBack = function( size: CFIndex; hint: CFOptionFlags; info: UnivPtr ): CFIndex;
  370. CFAllocatorContextPtr = ^CFAllocatorContext;
  371. CFAllocatorContext = record
  372. version: CFIndex;
  373. info: UnivPtr;
  374. retain: CFAllocatorRetainCallBack;
  375. release: CFAllocatorReleaseCallBack;
  376. copyDescription: CFAllocatorCopyDescriptionCallBack;
  377. allocate: CFAllocatorAllocateCallBack;
  378. reallocate: CFAllocatorReallocateCallBack;
  379. deallocate: CFAllocatorDeallocateCallBack;
  380. preferredSize: CFAllocatorPreferredSizeCallBack;
  381. end;
  382. function CFAllocatorGetTypeID: CFTypeID; external name '_CFAllocatorGetTypeID';
  383. {
  384. CFAllocatorSetDefault() sets the allocator that is used in the current
  385. thread whenever NULL is specified as an allocator argument. This means
  386. that most, if not all allocations will go through this allocator. It
  387. also means that any allocator set as the default needs to be ready to
  388. deal with arbitrary memory allocation requests; in addition, the size
  389. and number of requests will change between releases.
  390. An allocator set as the default will never be released, even if later
  391. another allocator replaces it as the default. Not only is it impractical
  392. for it to be released (as there might be caches created under the covers
  393. that refer to the allocator), in general it's also safer and more
  394. efficient to keep it around.
  395. If you wish to use a custom allocator in a context, it's best to provide
  396. it as the argument to the various creation functions rather than setting
  397. it as the default. Setting the default allocator is not encouraged.
  398. If you do set an allocator as the default, either do it for all time in
  399. your app, or do it in a nested fashion (by restoring the previous allocator
  400. when you exit your context). The latter might be appropriate for plug-ins
  401. or libraries that wish to set the default allocator.
  402. }
  403. procedure CFAllocatorSetDefault( allocator: CFAllocatorRef ); external name '_CFAllocatorSetDefault';
  404. function CFAllocatorGetDefault: CFAllocatorRef; external name '_CFAllocatorGetDefault';
  405. function CFAllocatorCreate( allocator: CFAllocatorRef; var context: CFAllocatorContext ): CFAllocatorRef; external name '_CFAllocatorCreate';
  406. function CFAllocatorAllocate( allocator: CFAllocatorRef; size: CFIndex; hint: CFOptionFlags ): UnivPtr; external name '_CFAllocatorAllocate';
  407. function CFAllocatorReallocate( allocator: CFAllocatorRef; ptr: UnivPtr; newsize: CFIndex; hint: CFOptionFlags ): UnivPtr; external name '_CFAllocatorReallocate';
  408. procedure CFAllocatorDeallocate( allocator: CFAllocatorRef; ptr: UnivPtr ); external name '_CFAllocatorDeallocate';
  409. function CFAllocatorGetPreferredSizeForSize( allocator: CFAllocatorRef; size: CFIndex; hint: CFOptionFlags ): CFIndex; external name '_CFAllocatorGetPreferredSizeForSize';
  410. procedure CFAllocatorGetContext( allocator: CFAllocatorRef; var context: CFAllocatorContext ); external name '_CFAllocatorGetContext';
  411. { Polymorphic CF functions }
  412. function CFGetTypeID( cf: CFTypeRef ): CFTypeID; external name '_CFGetTypeID';
  413. function CFCopyTypeIDDescription( type_id: CFTypeID ): CFStringRef; external name '_CFCopyTypeIDDescription';
  414. function CFRetain( cf: CFTypeRef ): CFTypeRef; external name '_CFRetain';
  415. procedure CFRelease( cf: CFTypeRef ); external name '_CFRelease';
  416. function CFGetRetainCount( cf: CFTypeRef ): CFIndex; external name '_CFGetRetainCount';
  417. function CFMakeCollectable( cf: CFTypeRef ): CFTypeRef; external name '_CFMakeCollectable';
  418. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  419. function CFEqual( cf1: CFTypeRef; cf2: CFTypeRef ): Boolean; external name '_CFEqual';
  420. function CFHash( cf: CFTypeRef ): CFHashCode; external name '_CFHash';
  421. function CFCopyDescription( cf: CFTypeRef ): CFStringRef; external name '_CFCopyDescription';
  422. function CFGetAllocator( cf: CFTypeRef ): CFAllocatorRef; external name '_CFGetAllocator';
  423. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  424. end.
  425. {$endc} {not MACOSALLINCLUDE}