CFByteOrders.pas 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. { CFByteOrder.h
  2. Copyright (c) 1995-2009, Apple Inc. All rights reserved.
  3. }
  4. { Pascal Translation: Peter N Lewis, <[email protected]>, August 2005 }
  5. { Pascal Translation Updated: Peter N Lewis, <[email protected]>, September 2005 }
  6. { Pascal Translation Updated: Jonas Maebe, <[email protected]>, April 2006, February 2008, 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. {$modeswitch cblocks}
  15. {$packenum 1}
  16. {$macro on}
  17. {$inline on}
  18. {$calling mwpascal}
  19. {$IFNDEF FPC_DOTTEDUNITS}
  20. unit CFByteOrders;
  21. {$ENDIF FPC_DOTTEDUNITS}
  22. interface
  23. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  24. {$setc GAP_INTERFACES_VERSION := $0308}
  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 CPUPOWERPC32}
  35. {$setc __ppc__ := 1}
  36. {$elsec}
  37. {$setc __ppc__ := 0}
  38. {$endc}
  39. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  40. {$setc __ppc64__ := 1}
  41. {$elsec}
  42. {$setc __ppc64__ := 0}
  43. {$endc}
  44. {$ifc not defined __i386__ and defined CPUI386}
  45. {$setc __i386__ := 1}
  46. {$elsec}
  47. {$setc __i386__ := 0}
  48. {$endc}
  49. {$ifc not defined __x86_64__ and defined CPUX86_64}
  50. {$setc __x86_64__ := 1}
  51. {$elsec}
  52. {$setc __x86_64__ := 0}
  53. {$endc}
  54. {$ifc not defined __arm__ and defined CPUARM}
  55. {$setc __arm__ := 1}
  56. {$elsec}
  57. {$setc __arm__ := 0}
  58. {$endc}
  59. {$ifc not defined __arm64__ and defined CPUAARCH64}
  60. {$setc __arm64__ := 1}
  61. {$elsec}
  62. {$setc __arm64__ := 0}
  63. {$endc}
  64. {$ifc defined cpu64}
  65. {$setc __LP64__ := 1}
  66. {$elsec}
  67. {$setc __LP64__ := 0}
  68. {$endc}
  69. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  70. {$error Conflicting definitions for __ppc__ and __i386__}
  71. {$endc}
  72. {$ifc defined __ppc__ and __ppc__}
  73. {$setc TARGET_CPU_PPC := TRUE}
  74. {$setc TARGET_CPU_PPC64 := FALSE}
  75. {$setc TARGET_CPU_X86 := FALSE}
  76. {$setc TARGET_CPU_X86_64 := FALSE}
  77. {$setc TARGET_CPU_ARM := FALSE}
  78. {$setc TARGET_CPU_ARM64 := FALSE}
  79. {$setc TARGET_OS_MAC := TRUE}
  80. {$setc TARGET_OS_IPHONE := FALSE}
  81. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  82. {$setc TARGET_OS_EMBEDDED := FALSE}
  83. {$elifc defined __ppc64__ and __ppc64__}
  84. {$setc TARGET_CPU_PPC := FALSE}
  85. {$setc TARGET_CPU_PPC64 := TRUE}
  86. {$setc TARGET_CPU_X86 := FALSE}
  87. {$setc TARGET_CPU_X86_64 := FALSE}
  88. {$setc TARGET_CPU_ARM := FALSE}
  89. {$setc TARGET_CPU_ARM64 := FALSE}
  90. {$setc TARGET_OS_MAC := TRUE}
  91. {$setc TARGET_OS_IPHONE := FALSE}
  92. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  93. {$setc TARGET_OS_EMBEDDED := FALSE}
  94. {$elifc defined __i386__ and __i386__}
  95. {$setc TARGET_CPU_PPC := FALSE}
  96. {$setc TARGET_CPU_PPC64 := FALSE}
  97. {$setc TARGET_CPU_X86 := TRUE}
  98. {$setc TARGET_CPU_X86_64 := FALSE}
  99. {$setc TARGET_CPU_ARM := FALSE}
  100. {$setc TARGET_CPU_ARM64 := FALSE}
  101. {$ifc defined iphonesim}
  102. {$setc TARGET_OS_MAC := FALSE}
  103. {$setc TARGET_OS_IPHONE := TRUE}
  104. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  105. {$elsec}
  106. {$setc TARGET_OS_MAC := TRUE}
  107. {$setc TARGET_OS_IPHONE := FALSE}
  108. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  109. {$endc}
  110. {$setc TARGET_OS_EMBEDDED := FALSE}
  111. {$elifc defined __x86_64__ and __x86_64__}
  112. {$setc TARGET_CPU_PPC := FALSE}
  113. {$setc TARGET_CPU_PPC64 := FALSE}
  114. {$setc TARGET_CPU_X86 := FALSE}
  115. {$setc TARGET_CPU_X86_64 := TRUE}
  116. {$setc TARGET_CPU_ARM := FALSE}
  117. {$setc TARGET_CPU_ARM64 := FALSE}
  118. {$ifc defined iphonesim}
  119. {$setc TARGET_OS_MAC := FALSE}
  120. {$setc TARGET_OS_IPHONE := TRUE}
  121. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  122. {$elsec}
  123. {$setc TARGET_OS_MAC := TRUE}
  124. {$setc TARGET_OS_IPHONE := FALSE}
  125. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  126. {$endc}
  127. {$setc TARGET_OS_EMBEDDED := FALSE}
  128. {$elifc defined __arm__ and __arm__}
  129. {$setc TARGET_CPU_PPC := FALSE}
  130. {$setc TARGET_CPU_PPC64 := FALSE}
  131. {$setc TARGET_CPU_X86 := FALSE}
  132. {$setc TARGET_CPU_X86_64 := FALSE}
  133. {$setc TARGET_CPU_ARM := TRUE}
  134. {$setc TARGET_CPU_ARM64 := FALSE}
  135. {$setc TARGET_OS_MAC := FALSE}
  136. {$setc TARGET_OS_IPHONE := TRUE}
  137. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  138. {$setc TARGET_OS_EMBEDDED := TRUE}
  139. {$elifc defined __arm64__ and __arm64__}
  140. {$setc TARGET_CPU_PPC := FALSE}
  141. {$setc TARGET_CPU_PPC64 := FALSE}
  142. {$setc TARGET_CPU_X86 := FALSE}
  143. {$setc TARGET_CPU_X86_64 := FALSE}
  144. {$setc TARGET_CPU_ARM := FALSE}
  145. {$setc TARGET_CPU_ARM64 := TRUE}
  146. {$ifc defined ios}
  147. {$setc TARGET_OS_MAC := FALSE}
  148. {$setc TARGET_OS_IPHONE := TRUE}
  149. {$setc TARGET_OS_EMBEDDED := TRUE}
  150. {$elsec}
  151. {$setc TARGET_OS_MAC := TRUE}
  152. {$setc TARGET_OS_IPHONE := FALSE}
  153. {$setc TARGET_OS_EMBEDDED := FALSE}
  154. {$endc}
  155. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  156. {$elsec}
  157. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
  158. {$endc}
  159. {$ifc defined __LP64__ and __LP64__ }
  160. {$setc TARGET_CPU_64 := TRUE}
  161. {$elsec}
  162. {$setc TARGET_CPU_64 := FALSE}
  163. {$endc}
  164. {$ifc defined FPC_BIG_ENDIAN}
  165. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  166. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  167. {$elifc defined FPC_LITTLE_ENDIAN}
  168. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  169. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  170. {$elsec}
  171. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  172. {$endc}
  173. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  174. {$setc CALL_NOT_IN_CARBON := FALSE}
  175. {$setc OLDROUTINENAMES := FALSE}
  176. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  177. {$setc OPAQUE_UPP_TYPES := TRUE}
  178. {$setc OTCARBONAPPLICATION := TRUE}
  179. {$setc OTKERNEL := FALSE}
  180. {$setc PM_USE_SESSION_APIS := TRUE}
  181. {$setc TARGET_API_MAC_CARBON := TRUE}
  182. {$setc TARGET_API_MAC_OS8 := FALSE}
  183. {$setc TARGET_API_MAC_OSX := TRUE}
  184. {$setc TARGET_CARBON := TRUE}
  185. {$setc TARGET_CPU_68K := FALSE}
  186. {$setc TARGET_CPU_MIPS := FALSE}
  187. {$setc TARGET_CPU_SPARC := FALSE}
  188. {$setc TARGET_OS_UNIX := FALSE}
  189. {$setc TARGET_OS_WIN32 := FALSE}
  190. {$setc TARGET_RT_MAC_68881 := FALSE}
  191. {$setc TARGET_RT_MAC_CFM := FALSE}
  192. {$setc TARGET_RT_MAC_MACHO := TRUE}
  193. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  194. {$setc TYPE_BOOL := FALSE}
  195. {$setc TYPE_EXTENDED := FALSE}
  196. {$setc TYPE_LONGLONG := TRUE}
  197. {$IFDEF FPC_DOTTEDUNITS}
  198. uses MacOsApi.MacTypes,MacOsApi.CFBase;
  199. {$ELSE FPC_DOTTEDUNITS}
  200. uses MacTypes,CFBase;
  201. {$ENDIF FPC_DOTTEDUNITS}
  202. {$endc} {not MACOSALLINCLUDE}
  203. {$ALIGN POWER}
  204. type
  205. CFByteOrder = SIGNEDLONG;
  206. const
  207. CFByteOrderUnknown = 0;
  208. CFByteOrderLittleEndian = 1;
  209. CFByteOrderBigEndian = 2;
  210. function CFByteOrderGetCurrent: CFByteOrder; inline;
  211. function CFSwapInt16( arg: UInt16 ): UInt16; inline;
  212. function CFSwapInt32( arg: UInt32 ): UInt32; inline;
  213. function CFSwapInt64( arg: UInt64 ): UInt64; inline;
  214. function CFSwapInt16BigToHost( arg: UInt16 ): UInt16; inline;
  215. function CFSwapInt32BigToHost( arg: UInt32 ): UInt32; inline;
  216. function CFSwapInt64BigToHost( arg: UInt64 ): UInt64; inline;
  217. function CFSwapInt16HostToBig( arg: UInt16 ): UInt16; inline;
  218. function CFSwapInt32HostToBig( arg: UInt32 ): UInt32; inline;
  219. function CFSwapInt64HostToBig( arg: UInt64 ): UInt64; inline;
  220. {$ifc TARGET_RT_BIG_ENDIAN}
  221. {$elsec}
  222. {$endc}
  223. function CFSwapInt16LittleToHost( arg: UInt16 ): UInt16; inline;
  224. function CFSwapInt32LittleToHost( arg: UInt32 ): UInt32; inline;
  225. function CFSwapInt64LittleToHost( arg: UInt64 ): UInt64; inline;
  226. function CFSwapInt16HostToLittle( arg: UInt16 ): UInt16; inline;
  227. function CFSwapInt32HostToLittle( arg: UInt32 ): UInt32; inline;
  228. function CFSwapInt64HostToLittle( arg: UInt64 ): UInt64; inline;
  229. {$ifc TARGET_RT_LITTLE_ENDIAN}
  230. {$elsec}
  231. {$endc}
  232. type
  233. CFSwappedFloat32 = record
  234. v: UInt32;
  235. end;
  236. type
  237. CFSwappedFloat64 = record
  238. v: UInt64;
  239. end;
  240. function CFConvertFloat32HostToSwapped( arg: Float32 ): CFSwappedFloat32; inline;
  241. function CFConvertFloat32SwappedToHost( arg: CFSwappedFloat32 ): Float32; inline;
  242. function CFConvertFloat64HostToSwapped( arg: Float64 ): CFSwappedFloat64; inline;
  243. function CFConvertFloat64SwappedToHost( arg: CFSwappedFloat64 ): Float64; inline;
  244. function CFConvertFloatHostToSwapped( arg: Float32 ): CFSwappedFloat32; inline;
  245. function CFConvertFloatSwappedToHost( arg: CFSwappedFloat32 ): Float32; inline;
  246. function CFConvertDoubleHostToSwapped( arg: Float64 ): CFSwappedFloat64; inline;
  247. function CFConvertDoubleSwappedToHost( arg: CFSwappedFloat64 ): Float64; inline;
  248. {$ifc TARGET_RT_LITTLE_ENDIAN}
  249. {$elsec}
  250. {$endc}
  251. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  252. implementation
  253. {$R-}
  254. function CFByteOrderGetCurrent: CFByteOrder; inline;
  255. var
  256. x: UInt32 = (CFByteOrderBigEndian shl 24) or CFByteOrderLittleEndian;
  257. begin
  258. CFByteOrderGetCurrent := CFByteOrder(UInt8Ptr(@x)^);
  259. end;
  260. function CFSwapInt16( arg: UInt16 ): UInt16; inline;
  261. begin
  262. CFSwapInt16 := (( arg shl 8) and $0FF00) or (( arg shr 8) and $00FF);
  263. end;
  264. function CFSwapInt32( arg: UInt32 ): UInt32; inline;
  265. begin
  266. CFSwapInt32 := ((arg and $FF) shl 24) or ((arg and $0FF00) shl 8) or ((arg shr 8) and $0FF00) or ((arg shr 24) and $FF);
  267. end;
  268. function CFSwapInt64( arg: UInt64 ): UInt64; inline;
  269. begin
  270. CFSwapInt64 := (UInt64(CFSwapInt32( arg and $FFFFFFFF )) shl 32) or CFSwapInt32( (arg shr 32) and $FFFFFFFF );
  271. end;
  272. {$ifc TARGET_RT_BIG_ENDIAN}
  273. function CFSwapInt16BigToHost( arg: UInt16 ): UInt16; inline;
  274. begin
  275. CFSwapInt16BigToHost := arg;
  276. end;
  277. function CFSwapInt32BigToHost( arg: UInt32 ): UInt32; inline;
  278. begin
  279. CFSwapInt32BigToHost := arg;
  280. end;
  281. function CFSwapInt64BigToHost( arg: UInt64 ): UInt64; inline;
  282. begin
  283. CFSwapInt64BigToHost := arg;
  284. end;
  285. function CFSwapInt16HostToBig( arg: UInt16 ): UInt16; inline;
  286. begin
  287. CFSwapInt16HostToBig := arg;
  288. end;
  289. function CFSwapInt32HostToBig( arg: UInt32 ): UInt32; inline;
  290. begin
  291. CFSwapInt32HostToBig := arg;
  292. end;
  293. function CFSwapInt64HostToBig( arg: UInt64 ): UInt64; inline;
  294. begin
  295. CFSwapInt64HostToBig := arg;
  296. end;
  297. function CFSwapInt16LittleToHost( arg: UInt16 ): UInt16; inline;
  298. begin
  299. CFSwapInt16LittleToHost := CFSwapInt16(arg);
  300. end;
  301. function CFSwapInt32LittleToHost( arg: UInt32 ): UInt32; inline;
  302. begin
  303. CFSwapInt32LittleToHost := CFSwapInt32(arg);
  304. end;
  305. function CFSwapInt64LittleToHost( arg: UInt64 ): UInt64; inline;
  306. begin
  307. CFSwapInt64LittleToHost := CFSwapInt64(arg);
  308. end;
  309. function CFSwapInt16HostToLittle( arg: UInt16 ): UInt16; inline;
  310. begin
  311. CFSwapInt16HostToLittle := CFSwapInt16(arg);
  312. end;
  313. function CFSwapInt32HostToLittle( arg: UInt32 ): UInt32; inline;
  314. begin
  315. CFSwapInt32HostToLittle := CFSwapInt32(arg);
  316. end;
  317. function CFSwapInt64HostToLittle( arg: UInt64 ): UInt64; inline;
  318. begin
  319. CFSwapInt64HostToLittle := CFSwapInt64(arg);
  320. end;
  321. function CFConvertFloat32HostToSwapped( arg: Float32 ): CFSwappedFloat32; inline;
  322. begin
  323. CFConvertFloat32HostToSwapped := CFSwappedFloat32(arg);
  324. end;
  325. function CFConvertFloat32SwappedToHost( arg: CFSwappedFloat32 ): Float32; inline;
  326. begin
  327. CFConvertFloat32SwappedToHost := Float32(arg);
  328. end;
  329. function CFConvertFloat64HostToSwapped( arg: Float64 ): CFSwappedFloat64; inline;
  330. begin
  331. CFConvertFloat64HostToSwapped := CFSwappedFloat64(arg);
  332. end;
  333. function CFConvertFloat64SwappedToHost( arg: CFSwappedFloat64 ): Float64; inline;
  334. begin
  335. CFConvertFloat64SwappedToHost := Float64(arg);
  336. end;
  337. function CFConvertFloatHostToSwapped( arg: Float32 ): CFSwappedFloat32; inline;
  338. begin
  339. CFConvertFloatHostToSwapped := CFSwappedFloat32(arg);
  340. end;
  341. function CFConvertFloatSwappedToHost( arg: CFSwappedFloat32 ): Float32; inline;
  342. begin
  343. CFConvertFloatSwappedToHost := Float32(arg);
  344. end;
  345. function CFConvertDoubleHostToSwapped( arg: Float64): CFSwappedFloat64; inline;
  346. begin
  347. CFConvertDoubleHostToSwapped := CFSwappedFloat64(arg);
  348. end;
  349. function CFConvertDoubleSwappedToHost( arg: CFSwappedFloat64 ): Float64; inline;
  350. begin
  351. CFConvertDoubleSwappedToHost := Float64(arg);
  352. end;
  353. {$elsec}
  354. function CFSwapInt16LittleToHost( arg: UInt16 ): UInt16; inline;
  355. begin
  356. CFSwapInt16LittleToHost := arg;
  357. end;
  358. function CFSwapInt32LittleToHost( arg: UInt32 ): UInt32; inline;
  359. begin
  360. CFSwapInt32LittleToHost := arg;
  361. end;
  362. function CFSwapInt64LittleToHost( arg: UInt64 ): UInt64; inline;
  363. begin
  364. CFSwapInt64LittleToHost := arg;
  365. end;
  366. function CFSwapInt16HostToLittle( arg: UInt16 ): UInt16; inline;
  367. begin
  368. CFSwapInt16HostToLittle := arg;
  369. end;
  370. function CFSwapInt32HostToLittle( arg: UInt32 ): UInt32; inline;
  371. begin
  372. CFSwapInt32HostToLittle := arg;
  373. end;
  374. function CFSwapInt64HostToLittle( arg: UInt64 ): UInt64; inline;
  375. begin
  376. CFSwapInt64HostToLittle := arg;
  377. end;
  378. function CFSwapInt16BigToHost( arg: UInt16 ): UInt16; inline;
  379. begin
  380. CFSwapInt16BigToHost := CFSwapInt16(arg);
  381. end;
  382. function CFSwapInt32BigToHost( arg: UInt32 ): UInt32; inline;
  383. begin
  384. CFSwapInt32BigToHost := CFSwapInt32(arg);
  385. end;
  386. function CFSwapInt64BigToHost( arg: UInt64 ): UInt64; inline;
  387. begin
  388. CFSwapInt64BigToHost := CFSwapInt64(arg);
  389. end;
  390. function CFSwapInt16HostToBig( arg: UInt16 ): UInt16; inline;
  391. begin
  392. CFSwapInt16HostToBig := CFSwapInt16(arg);
  393. end;
  394. function CFSwapInt32HostToBig( arg: UInt32 ): UInt32; inline;
  395. begin
  396. CFSwapInt32HostToBig := CFSwapInt32(arg);
  397. end;
  398. function CFSwapInt64HostToBig( arg: UInt64 ): UInt64; inline;
  399. begin
  400. CFSwapInt64HostToBig := CFSwapInt64(arg);
  401. end;
  402. function CFConvertFloat32HostToSwapped( arg: Float32 ): CFSwappedFloat32; inline;
  403. begin
  404. CFConvertFloat32HostToSwapped.v := CFSwapInt32(CFSwappedFloat32(arg).v);
  405. end;
  406. function CFConvertFloat32SwappedToHost( arg: CFSwappedFloat32 ): Float32; inline;
  407. begin
  408. CFConvertFloat32SwappedToHost := Float32(CFSwappedFloat32(CFSwapInt32(arg.v)));
  409. end;
  410. function CFConvertFloat64HostToSwapped( arg: Float64 ): CFSwappedFloat64; inline;
  411. begin
  412. CFConvertFloat64HostToSwapped.v := CFSwapInt64(CFSwappedFloat64(arg).v);
  413. end;
  414. function CFConvertFloat64SwappedToHost( arg: CFSwappedFloat64 ): Float64; inline;
  415. begin
  416. CFConvertFloat64SwappedToHost := Float64(CFSwappedFloat64(CFSwapInt64(arg.v)));
  417. end;
  418. function CFConvertFloatHostToSwapped( arg: Float32 ): CFSwappedFloat32; inline;
  419. begin
  420. CFConvertFloatHostToSwapped.v := CFSwapInt32(CFSwappedFloat32(arg).v);
  421. end;
  422. function CFConvertFloatSwappedToHost( arg: CFSwappedFloat32 ): Float32; inline;
  423. begin
  424. CFConvertFloatSwappedToHost := Float32(CFSwappedFloat32(CFSwapInt32(arg.v)));
  425. end;
  426. function CFConvertDoubleHostToSwapped( arg: Float64 ): CFSwappedFloat64; inline;
  427. begin
  428. CFConvertDoubleHostToSwapped.v := CFSwapInt64(CFSwappedFloat64(arg).v);
  429. end;
  430. function CFConvertDoubleSwappedToHost( arg: CFSwappedFloat64 ): Float64; inline;
  431. begin
  432. CFConvertDoubleSwappedToHost := Float64(CFSwappedFloat64(CFSwapInt64(arg.v)));
  433. end;
  434. {$endc}
  435. end.
  436. {$endc} {not MACOSALLINCLUDE}