HIArchive.pas 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. {
  2. File: HIToolbox/HIArchive.h
  3. Contains: HIArchive Interfaces.
  4. Version: HIToolbox-219.4.81~2
  5. Copyright: © 2004-2005 by Apple Computer, Inc., all rights reserved.
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://www.freepascal.org/bugs.html
  9. }
  10. { Pascal Translation: Peter N Lewis, <[email protected]>, August 2005 }
  11. {
  12. Modified for use with Free Pascal
  13. Version 200
  14. Please report any bugs to <[email protected]>
  15. }
  16. {$mode macpas}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$CALLING MWPASCAL}
  21. unit HIArchive;
  22. interface
  23. {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
  24. {$setc GAP_INTERFACES_VERSION := $0200}
  25. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  26. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  27. {$endc}
  28. {$ifc defined CPUPOWERPC and defined CPUI386}
  29. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  30. {$endc}
  31. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  32. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  33. {$endc}
  34. {$ifc not defined __ppc__ and defined CPUPOWERPC}
  35. {$setc __ppc__ := 1}
  36. {$elsec}
  37. {$setc __ppc__ := 0}
  38. {$endc}
  39. {$ifc not defined __i386__ and defined CPUI386}
  40. {$setc __i386__ := 1}
  41. {$elsec}
  42. {$setc __i386__ := 0}
  43. {$endc}
  44. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  45. {$error Conflicting definitions for __ppc__ and __i386__}
  46. {$endc}
  47. {$ifc defined __ppc__ and __ppc__}
  48. {$setc TARGET_CPU_PPC := TRUE}
  49. {$setc TARGET_CPU_X86 := FALSE}
  50. {$elifc defined __i386__ and __i386__}
  51. {$setc TARGET_CPU_PPC := FALSE}
  52. {$setc TARGET_CPU_X86 := TRUE}
  53. {$elsec}
  54. {$error Neither __ppc__ nor __i386__ is defined.}
  55. {$endc}
  56. {$setc TARGET_CPU_PPC_64 := FALSE}
  57. {$ifc defined FPC_BIG_ENDIAN}
  58. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  59. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  60. {$elifc defined FPC_LITTLE_ENDIAN}
  61. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  62. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  63. {$elsec}
  64. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  65. {$endc}
  66. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  67. {$setc CALL_NOT_IN_CARBON := FALSE}
  68. {$setc OLDROUTINENAMES := FALSE}
  69. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  70. {$setc OPAQUE_UPP_TYPES := TRUE}
  71. {$setc OTCARBONAPPLICATION := TRUE}
  72. {$setc OTKERNEL := FALSE}
  73. {$setc PM_USE_SESSION_APIS := TRUE}
  74. {$setc TARGET_API_MAC_CARBON := TRUE}
  75. {$setc TARGET_API_MAC_OS8 := FALSE}
  76. {$setc TARGET_API_MAC_OSX := TRUE}
  77. {$setc TARGET_CARBON := TRUE}
  78. {$setc TARGET_CPU_68K := FALSE}
  79. {$setc TARGET_CPU_MIPS := FALSE}
  80. {$setc TARGET_CPU_SPARC := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_UNIX := FALSE}
  83. {$setc TARGET_OS_WIN32 := FALSE}
  84. {$setc TARGET_RT_MAC_68881 := FALSE}
  85. {$setc TARGET_RT_MAC_CFM := FALSE}
  86. {$setc TARGET_RT_MAC_MACHO := TRUE}
  87. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  88. {$setc TYPE_BOOL := FALSE}
  89. {$setc TYPE_EXTENDED := FALSE}
  90. {$setc TYPE_LONGLONG := TRUE}
  91. uses MacTypes,CFBase,CFData,CFNumber,HIObject;
  92. {$ALIGN POWER}
  93. {
  94. * HIArchive
  95. *
  96. * Discussion:
  97. * HIArchive provides a standard, extensible mechanism to flatten
  98. * objects for storage in memory or on disk for later retrieval or
  99. * transfer to another application. The archive is encoded using the
  100. * binary property list format. The binary plist can be converted to
  101. * text XML with /usr/bin/plutil for develoment purposes. Details on
  102. * how to create an object that supports the HIArchive protocol are
  103. * provided in HIToolbox/HIObject.h.
  104. *
  105. * When writing data out to an archive, the client must first use
  106. * HIArchiveCreateForEncoding to generate the archive into which the
  107. * data will be encoded. From there, data may be added to the
  108. * archive by calling HIArchiveEncodeBoolean, HIArchiveEncodeNumber,
  109. * and HIArchiveEncodeCFType. If HIArchiveEncodeCFType is being
  110. * called on one of your custom HIObjects, HIToolbox will send it
  111. * the kEventHIObjectEncode (HIOBject.h) event. In order to receive
  112. * this event your HIObject must first have set its archiving
  113. * ignored value to false via HIObjectSetArchivingIgnored. This lets
  114. * HIToolbox know your object supports archiving. The
  115. * kEventParamHIArchive parameter contains the HIArchiveRef into
  116. * which it should encode all of its relevant state information. All
  117. * information added to the archive is written with a key. This key
  118. * is used later during the unarchiving process to pull the encoded
  119. * data from the archive. System supplied HIObjects namespace their
  120. * keys with an HI prefix. Subclasses of system supplied HIObjects
  121. * should only use this namespace if explicitly overriding a value
  122. * written to the archive by the superclass. Take care to mantain
  123. * the same preference format when overriding the default to avoid
  124. * incompatibilities. When your archiving process is complete,
  125. * HIArchiveCopyEncodedData will compress the data into the archive
  126. * return it in a CFDataRef. This CFDataRef can be sent to another
  127. * application or written out to disk for later retrieval. Once the
  128. * encoded data is compressed, no more data may be added to the
  129. * archive. At this point, the HIArchiveRef must be released via
  130. * CFRelease.
  131. *
  132. * When retrieving data from an archive, the client must first use
  133. * HIArchiveCreateForDecoding to create an archive reference capable
  134. * of decoding the data from the provided CFDataRef. Given the
  135. * HIArchiveRef, data may be pulled from the archive via
  136. * HIArchiveDecodeBoolean, HIArchiveDecodeNumber,
  137. * HIArchiveCopyDecodedCFType and HIArchiveCopyDecodedHIObject. If
  138. * HIArchiveCopyDecodedHIObject is called on one of you custom
  139. * HIObjects, HIToolbox will send it the kEventHIObjectInitialize
  140. * (HIOBject.h) event. The kEventParamHIArchive parameter contains
  141. * the HIArchiveRef from which it should decode all of its relevant
  142. * state information. Because these data values were written by key,
  143. * they can be read in any order regardless of how they were
  144. * written. This also means new keyed values can be added without
  145. * breaking existing decoding routines. Once all data has been read
  146. * from the archive, it may simply be released via CFRelease.
  147. *
  148. *
  149. * For those clients who wish to provide HIArchive editing features
  150. * there are a few tricks necessary to achieve the desired behavior.
  151. * A generic HIArchive editor will likely be used by clients to edit
  152. * objects for which it has no direct knowledge (or which have not
  153. * yet been designed). For instance, it may provide users with the
  154. * ability to edit custom HIViews including generic functionality to
  155. * set the view's class identifier, title, frame, etc. In this case,
  156. * it is necessary to instantiate the superclass
  157. * ("com.apple.hiview") of the custom view object because it doesn't
  158. * exist and hasn't been registered within the editor.
  159. *
  160. * After the user has completed editing the object and desires to
  161. * write out the archive, the editor must set the custom archive
  162. * data to the object with HIObjectSetCustomArchiveData as a
  163. * CFDictionary. Standard keys for initialization parameter types,
  164. * names and values, class and superclass identifiers and CDEF
  165. * procID are provided in HIToolbox/HIObject.h. Of particular
  166. * importance are the object's class and superclass identifier.
  167. * HIArchive uses these values to instantiate the proper object when
  168. * loading the archive within the client's application. The
  169. * parameter types, names and values are then automatically passed
  170. * to the client object through its initialization event.
  171. *
  172. * At this point, the object can simply be written into the archive
  173. * with HIArchiveCreateForEncoding and HIArchiveEncodeCFType.
  174. * HIArchive will handle writing the appropriate classID based on
  175. * the custom data that was assigned earlier.
  176. *
  177. * Generic HIArchive editing applications will also need to handle
  178. * loading client archives. In this case, the archive is decoded in
  179. * editing mode by passing the
  180. * kHIArchiveDecodeSuperclassForUnregisteredObjects proxy bit in
  181. * HIArchiveCreateForDecoding. When objects not registered in the
  182. * current application are decoded, HIArchive will notice this and
  183. * look into the custom data for the object's superclass identifier,
  184. * instantiate an object of that type instead and attach the custom
  185. * data to the newly created object. The editor can then look at the
  186. * attached custom data with HIObjectCopyCustomArchiveData and
  187. * provide it in the UI for the user to edit.
  188. }
  189. type
  190. HIArchiveRef = ^SInt32; { an opaque 32-bit type }
  191. {
  192. * Discussion:
  193. * HIArchive errors
  194. }
  195. const
  196. {
  197. * The archive was created specifically for encoding or decoding but
  198. * passed into a non-corresponding routine.
  199. }
  200. hiArchiveTypeMismatchErr = -6780;
  201. {
  202. * The keyed value requested does not exist in the archive.
  203. }
  204. hiArchiveKeyNotAvailableErr = -6781;
  205. {
  206. * HIArchiveCopyEncodedData has been called and no more data may be
  207. * encoded.
  208. }
  209. hiArchiveEncodingCompleteErr = -6782;
  210. {
  211. * The HIObject does not support the archiving protocol.
  212. }
  213. hiArchiveHIObjectIgnoresArchivingErr = -6783;
  214. {
  215. * Discussion:
  216. * HIArchiveCreateForDecoding options
  217. }
  218. const
  219. {
  220. * kDecodeSuperclassForUnregisteredObjects is passed to
  221. * HIArchiveCreateForDecoding indicating that if an HIObject's class
  222. * has not been registered before it is pulled from the archive,
  223. * HIArchiveCopyDecodedCFType will automatically instantiate the
  224. * unarchived object as its superclass if it exists. For instance, a
  225. * custom HIView of class "com.myco.customview" being unarchived will
  226. * be instantiated as class "com.apple.hiview" if your app has not
  227. * yet registered "com.myco.customview". This is useful for archive
  228. * editors that do not implement all objects contained in a client
  229. * archive. Note that only data written to the archive by the
  230. * superclass will be decoded. All data unique to the unregistered
  231. * subclass will be ignored. This option also signals the HIObject to
  232. * load its custom archive data so it can be accessed via
  233. * HIObjectCopyCustomArchiveData. HIArchive is unable to instantiate
  234. * unregistered objects whose superclasses are also unregistered.
  235. }
  236. kHIArchiveDecodeSuperclassForUnregisteredObjects = 1 shl 0;
  237. {
  238. * HIArchiveGetTypeID()
  239. *
  240. * Summary:
  241. * Returns the CFType identifier for an HIArchive object.
  242. *
  243. * Mac OS X threading:
  244. * Not thread safe
  245. *
  246. * Result:
  247. * A CFTypeID unique to HIArchive instances.
  248. *
  249. * Availability:
  250. * Mac OS X: in version 10.4 and later in Carbon.framework
  251. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  252. * Non-Carbon CFM: not available
  253. }
  254. function HIArchiveGetTypeID: CFTypeID; external name '_HIArchiveGetTypeID';
  255. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  256. {
  257. * HIArchiveCreateForEncoding()
  258. *
  259. * Summary:
  260. * Creates an HIArchive for use in encoding object information.
  261. *
  262. * Discussion:
  263. * The created HIArchiveRef is a CFType and must be released via
  264. * CFRelease.
  265. *
  266. * Mac OS X threading:
  267. * Not thread safe
  268. *
  269. * Parameters:
  270. *
  271. * outEncoder:
  272. * An HIArchive reference which receives the created HIArchive on
  273. * return.
  274. *
  275. * Result:
  276. * An operating system result code.
  277. *
  278. * Availability:
  279. * Mac OS X: in version 10.4 and later in Carbon.framework
  280. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  281. * Non-Carbon CFM: not available
  282. }
  283. function HIArchiveCreateForEncoding( var outEncoder: HIArchiveRef ): OSStatus; external name '_HIArchiveCreateForEncoding';
  284. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  285. {
  286. * HIArchiveEncodeBoolean()
  287. *
  288. * Summary:
  289. * Adds a keyed boolean value to the provided archive.
  290. *
  291. * Mac OS X threading:
  292. * Not thread safe
  293. *
  294. * Parameters:
  295. *
  296. * inEncoder:
  297. * An HIArchiveRef to which the boolean value is added.
  298. *
  299. * inKey:
  300. * The key associated with the boolean value used for later
  301. * decoding.
  302. *
  303. * inBoolean:
  304. * The boolean value to be encoded.
  305. *
  306. * Result:
  307. * An operating system result code.
  308. *
  309. * Availability:
  310. * Mac OS X: in version 10.4 and later in Carbon.framework
  311. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  312. * Non-Carbon CFM: not available
  313. }
  314. function HIArchiveEncodeBoolean( inEncoder: HIArchiveRef; inKey: CFStringRef; inBoolean: Boolean ): OSStatus; external name '_HIArchiveEncodeBoolean';
  315. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  316. {
  317. * HIArchiveEncodeNumber()
  318. *
  319. * Summary:
  320. * Adds a keyed number value to the provided archive.
  321. *
  322. * Mac OS X threading:
  323. * Not thread safe
  324. *
  325. * Parameters:
  326. *
  327. * inEncoder:
  328. * An HIArchiveRef to which the number value is added.
  329. *
  330. * inKey:
  331. * The key associated with the number value used for later
  332. * decoding.
  333. *
  334. * inNumberType:
  335. * A CFNumberType describing the type of number value being
  336. * encoded.
  337. *
  338. * inNumberValue:
  339. * The number value to be encoded.
  340. *
  341. * Result:
  342. * An operating system result code.
  343. *
  344. * Availability:
  345. * Mac OS X: in version 10.4 and later in Carbon.framework
  346. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  347. * Non-Carbon CFM: not available
  348. }
  349. function HIArchiveEncodeNumber( inEncoder: HIArchiveRef; inKey: CFStringRef; inNumberType: CFNumberType; inNumberValue: {const} UnivPtr ): OSStatus; external name '_HIArchiveEncodeNumber';
  350. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  351. {
  352. * HIArchiveEncodeCFType()
  353. *
  354. * Summary:
  355. * Adds a keyed CFType to the provided archive.
  356. *
  357. * Discussion:
  358. * Encodes basic and property list based CFTypes including HIObjects
  359. * supporting the archiving protocol. If the HIObject supports the
  360. * archiving protocol, it will receive the kEventHIObjectEncode
  361. * event during which it should encode all relevant state
  362. * information. The kEventParamHIArchive parameter contains the
  363. * archive into which data should be added.
  364. *
  365. * Mac OS X threading:
  366. * Not thread safe
  367. *
  368. * Parameters:
  369. *
  370. * inEncoder:
  371. * An HIArchiveRef to which the CFType is added.
  372. *
  373. * inKey:
  374. * The key associated with the CFType used for later decoding.
  375. *
  376. * inCFType:
  377. * The CFType to be encoded.
  378. *
  379. * Result:
  380. * An operating system result code.
  381. *
  382. * Availability:
  383. * Mac OS X: in version 10.4 and later in Carbon.framework
  384. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  385. * Non-Carbon CFM: not available
  386. }
  387. function HIArchiveEncodeCFType( inEncoder: HIArchiveRef; inKey: CFStringRef; inCFType: CFTypeRef ): OSStatus; external name '_HIArchiveEncodeCFType';
  388. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  389. {
  390. * HIArchiveCopyEncodedData()
  391. *
  392. * Summary:
  393. * Returns the encoded archive as a CFDataRef.
  394. *
  395. * Discussion:
  396. * Compresses the archived data for storage and returns it as a
  397. * CFDataRef. After the archived data is compressed, no further
  398. * information may be encoded. Do not call this routine until the
  399. * encoding process is complete.
  400. *
  401. * Mac OS X threading:
  402. * Not thread safe
  403. *
  404. * Parameters:
  405. *
  406. * inEncoder:
  407. * An HIArchiveRef into which the archived data was compiled.
  408. *
  409. * outData:
  410. * A CFData reference which receives the compressed archive data
  411. * on return.
  412. *
  413. * Result:
  414. * An operating system result code.
  415. *
  416. * Availability:
  417. * Mac OS X: in version 10.4 and later in Carbon.framework
  418. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  419. * Non-Carbon CFM: not available
  420. }
  421. function HIArchiveCopyEncodedData( inEncoder: HIArchiveRef; var outData: CFDataRef ): OSStatus; external name '_HIArchiveCopyEncodedData';
  422. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  423. {
  424. * HIArchiveCreateForDecoding()
  425. *
  426. * Summary:
  427. * Creates an HIArchive for use in decoding the object information
  428. * contained in the provided CFData reference.
  429. *
  430. * Discussion:
  431. * The created HIArchiveRef is a CFType and must be released via
  432. * CFRelease.
  433. *
  434. * Mac OS X threading:
  435. * Not thread safe
  436. *
  437. * Parameters:
  438. *
  439. * inData:
  440. * A CFDataRef containing a previously encoded archive.
  441. *
  442. * inOptions:
  443. * The only option supported by this routine at present is
  444. * kHIArchiveDecodeSuperclassForUnregisteredObjects. You may also
  445. * pass zero for this parameter to get the default behavior.
  446. *
  447. * outDecoder:
  448. * An HIArchive reference which receives the created HIArchive on
  449. * return.
  450. *
  451. * Result:
  452. * An operating system result code.
  453. *
  454. * Availability:
  455. * Mac OS X: in version 10.4 and later in Carbon.framework
  456. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  457. * Non-Carbon CFM: not available
  458. }
  459. function HIArchiveCreateForDecoding( inData: CFDataRef; inOptions: OptionBits; var outDecoder: HIArchiveRef ): OSStatus; external name '_HIArchiveCreateForDecoding';
  460. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  461. {
  462. * HIArchiveDecodeBoolean()
  463. *
  464. * Summary:
  465. * Pulls a keyed boolean value from the provided archive.
  466. *
  467. * Mac OS X threading:
  468. * Not thread safe
  469. *
  470. * Parameters:
  471. *
  472. * inDecoder:
  473. * An HIArchiveRef from which the boolean value is pulled.
  474. *
  475. * inKey:
  476. * The key associated with the boolean value used while encoding.
  477. *
  478. * outBoolean:
  479. * The boolean value to be decoded.
  480. *
  481. * Result:
  482. * An operating system result code.
  483. *
  484. * Availability:
  485. * Mac OS X: in version 10.4 and later in Carbon.framework
  486. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  487. * Non-Carbon CFM: not available
  488. }
  489. function HIArchiveDecodeBoolean( inDecoder: HIArchiveRef; inKey: CFStringRef; var outBoolean: Boolean ): OSStatus; external name '_HIArchiveDecodeBoolean';
  490. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  491. {
  492. * HIArchiveDecodeNumber()
  493. *
  494. * Summary:
  495. * Pulls a keyed number value from the provided archive.
  496. *
  497. * Mac OS X threading:
  498. * Not thread safe
  499. *
  500. * Parameters:
  501. *
  502. * inDecoder:
  503. * An HIArchiveRef from which the number value is pulled.
  504. *
  505. * inKey:
  506. * The key associated with the number value used while encoding.
  507. *
  508. * inNumberType:
  509. * A CFNumberType describing the type of number value being
  510. * encoded.
  511. *
  512. * outNumberValue:
  513. * The number value to be decoded.
  514. *
  515. * Result:
  516. * An operating system result code.
  517. *
  518. * Availability:
  519. * Mac OS X: in version 10.4 and later in Carbon.framework
  520. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  521. * Non-Carbon CFM: not available
  522. }
  523. function HIArchiveDecodeNumber( inDecoder: HIArchiveRef; inKey: CFStringRef; inNumberType: CFNumberType; outNumberValue: UnivPtr ): OSStatus; external name '_HIArchiveDecodeNumber';
  524. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  525. {
  526. * HIArchiveCopyDecodedCFType()
  527. *
  528. * Summary:
  529. * Pulls a keyed CFType from the provided archive.
  530. *
  531. * Discussion:
  532. * Decodes basic and property list based CFTypes and HIObjects. If
  533. * the CFType is an HIObject, it will be constructed and receive the
  534. * kEventHIObjectInitialize event. The kEventParamHIArchive
  535. * parameter contains the archive from which data should be
  536. * retrieved.
  537. *
  538. * Mac OS X threading:
  539. * Not thread safe
  540. *
  541. * Parameters:
  542. *
  543. * inDecoder:
  544. * An HIArchiveRef from which the CFType value is pulled.
  545. *
  546. * inKey:
  547. * The key associated with the CFType used while encoding.
  548. *
  549. * outCFType:
  550. * The CFType to be decoded.
  551. *
  552. * Result:
  553. * An operating system result code.
  554. *
  555. * Availability:
  556. * Mac OS X: in version 10.4 and later in Carbon.framework
  557. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later
  558. * Non-Carbon CFM: not available
  559. }
  560. function HIArchiveCopyDecodedCFType( inDecoder: HIArchiveRef; inKey: CFStringRef; var outCFType: CFTypeRef ): OSStatus; external name '_HIArchiveCopyDecodedCFType';
  561. (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)
  562. end.