1 {
2 File: CarbonCore/FixMath.h
3
4 Contains: Fixed Math Interfaces.
5 The contents of this header file are deprecated.
6
7 Copyright: � 1985-2011 by Apple Inc. All rights reserved.
8 }
9 {
10 Modified for use with Free Pascal
11 Version 308
12 Please report any bugs to <gpc@microbizz.nl>
13 }
14
15 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
16 {$mode macpas}
17 {$modeswitch cblocks}
18 {$packenum 1}
19 {$macro on}
20 {$inline on}
21 {$calling mwpascal}
22
23 unit FixMath;
24 interface
25 {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
26 {$setc GAP_INTERFACES_VERSION := $0308}
27
28 {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
29 {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
30 {$endc}
31
32 {$ifc defined CPUPOWERPC and defined CPUI386}
33 {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
34 {$endc}
35 {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
36 {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
37 {$endc}
38
39 {$ifc not defined __ppc__ and defined CPUPOWERPC32}
40 {$setc __ppc__ := 1}
41 {$elsec}
42 {$setc __ppc__ := 0}
43 {$endc}
44 {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
45 {$setc __ppc64__ := 1}
46 {$elsec}
47 {$setc __ppc64__ := 0}
48 {$endc}
49 {$ifc not defined __i386__ and defined CPUI386}
50 {$setc __i386__ := 1}
51 {$elsec}
52 {$setc __i386__ := 0}
53 {$endc}
54 {$ifc not defined __x86_64__ and defined CPUX86_64}
55 {$setc __x86_64__ := 1}
56 {$elsec}
57 {$setc __x86_64__ := 0}
58 {$endc}
59 {$ifc not defined __arm__ and defined CPUARM}
60 {$setc __arm__ := 1}
61 {$elsec}
62 {$setc __arm__ := 0}
63 {$endc}
64 {$ifc not defined __arm64__ and defined CPUAARCH64}
65 {$setc __arm64__ := 1}
66 {$elsec}
67 {$setc __arm64__ := 0}
68 {$endc}
69
70 {$ifc defined cpu64}
71 {$setc __LP64__ := 1}
72 {$elsec}
73 {$setc __LP64__ := 0}
74 {$endc}
75
76
77 {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
78 {$error Conflicting definitions for __ppc__ and __i386__}
79 {$endc}
80
81 {$ifc defined __ppc__ and __ppc__}
82 {$setc TARGET_CPU_PPC := TRUE}
83 {$setc TARGET_CPU_PPC64 := FALSE}
84 {$setc TARGET_CPU_X86 := FALSE}
85 {$setc TARGET_CPU_X86_64 := FALSE}
86 {$setc TARGET_CPU_ARM := FALSE}
87 {$setc TARGET_CPU_ARM64 := FALSE}
88 {$setc TARGET_OS_MAC := TRUE}
89 {$setc TARGET_OS_IPHONE := FALSE}
90 {$setc TARGET_IPHONE_SIMULATOR := FALSE}
91 {$setc TARGET_OS_EMBEDDED := FALSE}
92 {$elifc defined __ppc64__ and __ppc64__}
93 {$setc TARGET_CPU_PPC := FALSE}
94 {$setc TARGET_CPU_PPC64 := TRUE}
95 {$setc TARGET_CPU_X86 := FALSE}
96 {$setc TARGET_CPU_X86_64 := FALSE}
97 {$setc TARGET_CPU_ARM := FALSE}
98 {$setc TARGET_CPU_ARM64 := FALSE}
99 {$setc TARGET_OS_MAC := TRUE}
100 {$setc TARGET_OS_IPHONE := FALSE}
101 {$setc TARGET_IPHONE_SIMULATOR := FALSE}
102 {$setc TARGET_OS_EMBEDDED := FALSE}
103 {$elifc defined __i386__ and __i386__}
104 {$setc TARGET_CPU_PPC := FALSE}
105 {$setc TARGET_CPU_PPC64 := FALSE}
106 {$setc TARGET_CPU_X86 := TRUE}
107 {$setc TARGET_CPU_X86_64 := FALSE}
108 {$setc TARGET_CPU_ARM := FALSE}
109 {$setc TARGET_CPU_ARM64 := FALSE}
110 {$ifc defined iphonesim}
111 {$setc TARGET_OS_MAC := FALSE}
112 {$setc TARGET_OS_IPHONE := TRUE}
113 {$setc TARGET_IPHONE_SIMULATOR := TRUE}
114 {$elsec}
115 {$setc TARGET_OS_MAC := TRUE}
116 {$setc TARGET_OS_IPHONE := FALSE}
117 {$setc TARGET_IPHONE_SIMULATOR := FALSE}
118 {$endc}
119 {$setc TARGET_OS_EMBEDDED := FALSE}
120 {$elifc defined __x86_64__ and __x86_64__}
121 {$setc TARGET_CPU_PPC := FALSE}
122 {$setc TARGET_CPU_PPC64 := FALSE}
123 {$setc TARGET_CPU_X86 := FALSE}
124 {$setc TARGET_CPU_X86_64 := TRUE}
125 {$setc TARGET_CPU_ARM := FALSE}
126 {$setc TARGET_CPU_ARM64 := FALSE}
127 {$ifc defined iphonesim}
128 {$setc TARGET_OS_MAC := FALSE}
129 {$setc TARGET_OS_IPHONE := TRUE}
130 {$setc TARGET_IPHONE_SIMULATOR := TRUE}
131 {$elsec}
132 {$setc TARGET_OS_MAC := TRUE}
133 {$setc TARGET_OS_IPHONE := FALSE}
134 {$setc TARGET_IPHONE_SIMULATOR := FALSE}
135 {$endc}
136 {$setc TARGET_OS_EMBEDDED := FALSE}
137 {$elifc defined __arm__ and __arm__}
138 {$setc TARGET_CPU_PPC := FALSE}
139 {$setc TARGET_CPU_PPC64 := FALSE}
140 {$setc TARGET_CPU_X86 := FALSE}
141 {$setc TARGET_CPU_X86_64 := FALSE}
142 {$setc TARGET_CPU_ARM := TRUE}
143 {$setc TARGET_CPU_ARM64 := FALSE}
144 {$setc TARGET_OS_MAC := FALSE}
145 {$setc TARGET_OS_IPHONE := TRUE}
146 {$setc TARGET_IPHONE_SIMULATOR := FALSE}
147 {$setc TARGET_OS_EMBEDDED := TRUE}
148 {$elifc defined __arm64__ and __arm64__}
149 {$setc TARGET_CPU_PPC := FALSE}
150 {$setc TARGET_CPU_PPC64 := FALSE}
151 {$setc TARGET_CPU_X86 := FALSE}
152 {$setc TARGET_CPU_X86_64 := FALSE}
153 {$setc TARGET_CPU_ARM := FALSE}
154 {$setc TARGET_CPU_ARM64 := TRUE}
155 {$ifc defined ios}
156 {$setc TARGET_OS_MAC := FALSE}
157 {$setc TARGET_OS_IPHONE := TRUE}
158 {$setc TARGET_OS_EMBEDDED := TRUE}
159 {$elsec}
160 {$setc TARGET_OS_MAC := TRUE}
161 {$setc TARGET_OS_IPHONE := FALSE}
162 {$setc TARGET_OS_EMBEDDED := FALSE}
163 {$endc}
164 {$setc TARGET_IPHONE_SIMULATOR := FALSE}
165 {$elsec}
166 {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
167 {$endc}
168
169 {$ifc defined __LP64__ and __LP64__ }
170 {$setc TARGET_CPU_64 := TRUE}
171 {$elsec}
172 {$setc TARGET_CPU_64 := FALSE}
173 {$endc}
174
175 {$ifc defined FPC_BIG_ENDIAN}
176 {$setc TARGET_RT_BIG_ENDIAN := TRUE}
177 {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
178 {$elifc defined FPC_LITTLE_ENDIAN}
179 {$setc TARGET_RT_BIG_ENDIAN := FALSE}
180 {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
181 {$elsec}
182 {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
183 {$endc}
184 {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
185 {$setc CALL_NOT_IN_CARBON := FALSE}
186 {$setc OLDROUTINENAMES := FALSE}
187 {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
188 {$setc OPAQUE_UPP_TYPES := TRUE}
189 {$setc OTCARBONAPPLICATION := TRUE}
190 {$setc OTKERNEL := FALSE}
191 {$setc PM_USE_SESSION_APIS := TRUE}
192 {$setc TARGET_API_MAC_CARBON := TRUE}
193 {$setc TARGET_API_MAC_OS8 := FALSE}
194 {$setc TARGET_API_MAC_OSX := TRUE}
195 {$setc TARGET_CARBON := TRUE}
196 {$setc TARGET_CPU_68K := FALSE}
197 {$setc TARGET_CPU_MIPS := FALSE}
198 {$setc TARGET_CPU_SPARC := FALSE}
199 {$setc TARGET_OS_UNIX := FALSE}
200 {$setc TARGET_OS_WIN32 := FALSE}
201 {$setc TARGET_RT_MAC_68881 := FALSE}
202 {$setc TARGET_RT_MAC_CFM := FALSE}
203 {$setc TARGET_RT_MAC_MACHO := TRUE}
204 {$setc TYPED_FUNCTION_POINTERS := TRUE}
205 {$setc TYPE_BOOL := FALSE}
206 {$setc TYPE_EXTENDED := FALSE}
207 {$setc TYPE_LONGLONG := TRUE}
208 uses MacTypes;
209 {$endc} {not MACOSALLINCLUDE}
210
211
212 {$ifc TARGET_OS_MAC}
213
214
215 const
216 fixed1 = $00010000;
217 fract1 = $40000000;
218 positiveInfinity = $7FFFFFFF;
219 negativeInfinity = $80000000;
220
221 {
222 FixRatio, FixMul, and FixRound were previously in ToolUtils.h
223 }
224 {
225 * FixRatio()
226 *
227 * Availability:
228 * Mac OS X: in version 10.0 and later in CoreServices.framework
229 * CarbonLib: in CarbonLib 1.0 and later
230 * Non-Carbon CFM: in InterfaceLib 7.1 and later
231 }
FixRationull232 function FixRatio( numer: SInt16; denom: SInt16 ): Fixed; external name '_FixRatio';
233 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
234
235
236 {
237 * FixMul()
238 *
239 * Availability:
240 * Mac OS X: in version 10.0 and later in CoreServices.framework
241 * CarbonLib: in CarbonLib 1.0 and later
242 * Non-Carbon CFM: in InterfaceLib 7.1 and later
243 }
FixMulnull244 function FixMul( a: Fixed; b: Fixed ): Fixed; external name '_FixMul';
245 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
246
247
248 {
249 * FixRound()
250 *
251 * Availability:
252 * Mac OS X: in version 10.0 and later in CoreServices.framework
253 * CarbonLib: in CarbonLib 1.0 and later
254 * Non-Carbon CFM: in InterfaceLib 7.1 and later
255 }
FixRoundnull256 function FixRound( x: Fixed ): SInt16; external name '_FixRound';
257 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
258
259
260 {
261 * Fix2Frac()
262 *
263 * Availability:
264 * Mac OS X: in version 10.0 and later in CoreServices.framework
265 * CarbonLib: in CarbonLib 1.0 and later
266 * Non-Carbon CFM: in InterfaceLib 7.1 and later
267 }
Fix2Fracnull268 function Fix2Frac( x: Fixed ): Fract; external name '_Fix2Frac';
269 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
270
271
272 {
273 * Fix2Long()
274 *
275 * Availability:
276 * Mac OS X: in version 10.0 and later in CoreServices.framework
277 * CarbonLib: in CarbonLib 1.0 and later
278 * Non-Carbon CFM: in InterfaceLib 7.1 and later
279 }
Fix2Longnull280 function Fix2Long( x: Fixed ): SInt32; external name '_Fix2Long';
281 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
282
283
284 {
285 * Long2Fix()
286 *
287 * Availability:
288 * Mac OS X: in version 10.0 and later in CoreServices.framework
289 * CarbonLib: in CarbonLib 1.0 and later
290 * Non-Carbon CFM: in InterfaceLib 7.1 and later
291 }
Long2Fixnull292 function Long2Fix( x: SInt32 ): Fixed; external name '_Long2Fix';
293 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
294
295
296 {
297 * Frac2Fix()
298 *
299 * Availability:
300 * Mac OS X: in version 10.0 and later in CoreServices.framework
301 * CarbonLib: in CarbonLib 1.0 and later
302 * Non-Carbon CFM: in InterfaceLib 7.1 and later
303 }
Frac2Fixnull304 function Frac2Fix( x: Fract ): Fixed; external name '_Frac2Fix';
305 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
306
307
308 {
309 * FracMul()
310 *
311 * Availability:
312 * Mac OS X: in version 10.0 and later in CoreServices.framework
313 * CarbonLib: in CarbonLib 1.0 and later
314 * Non-Carbon CFM: in InterfaceLib 7.1 and later
315 }
FracMulnull316 function FracMul( x: Fract; y: Fract ): Fract; external name '_FracMul';
317 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
318
319
320 {
321 * FixDiv()
322 *
323 * Availability:
324 * Mac OS X: in version 10.0 and later in CoreServices.framework
325 * CarbonLib: in CarbonLib 1.0 and later
326 * Non-Carbon CFM: in InterfaceLib 7.1 and later
327 }
FixDivnull328 function FixDiv( x: Fixed; y: Fixed ): Fixed; external name '_FixDiv';
329 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
330
331
332 {
333 * FracDiv()
334 *
335 * Availability:
336 * Mac OS X: in version 10.0 and later in CoreServices.framework
337 * CarbonLib: in CarbonLib 1.0 and later
338 * Non-Carbon CFM: in InterfaceLib 7.1 and later
339 }
FracDivnull340 function FracDiv( x: Fract; y: Fract ): Fract; external name '_FracDiv';
341 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
342
343
344 {
345 * FracSqrt()
346 *
347 * Availability:
348 * Mac OS X: in version 10.0 and later in CoreServices.framework
349 * CarbonLib: in CarbonLib 1.0 and later
350 * Non-Carbon CFM: in InterfaceLib 7.1 and later
351 }
FracSqrtnull352 function FracSqrt( x: Fract ): Fract; external name '_FracSqrt';
353 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
354
355
356 {
357 * FracSin()
358 *
359 * Availability:
360 * Mac OS X: in version 10.0 and later in CoreServices.framework
361 * CarbonLib: in CarbonLib 1.0 and later
362 * Non-Carbon CFM: in InterfaceLib 7.1 and later
363 }
FracSinnull364 function FracSin( x: Fixed ): Fract; external name '_FracSin';
365 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
366
367
368 {
369 * FracCos()
370 *
371 * Availability:
372 * Mac OS X: in version 10.0 and later in CoreServices.framework
373 * CarbonLib: in CarbonLib 1.0 and later
374 * Non-Carbon CFM: in InterfaceLib 7.1 and later
375 }
FracCosnull376 function FracCos( x: Fixed ): Fract; external name '_FracCos';
377 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
378
379
380 {
381 * FixATan2()
382 *
383 * Availability:
384 * Mac OS X: in version 10.0 and later in CoreServices.framework
385 * CarbonLib: in CarbonLib 1.0 and later
386 * Non-Carbon CFM: in InterfaceLib 7.1 and later
387 }
FixATan2null388 function FixATan2( x: SInt32; y: SInt32 ): Fixed; external name '_FixATan2';
389 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
390
391
392 {
393 Frac2X, Fix2X, X2Fix, and X2Frac translate to and from
394 the floating point type "extended" (that's what the X is for).
395 On the original Mac this was 80-bits and the functions could be
396 accessed via A-Traps. When the 68881 co-processor was added,
397 it used 96-bit floating point types, so the A-Traps could not
398 be used. When PowerPC was added, it used 64-bit floating point
399 types, so yet another prototype was added.
400 }
401 {
402 * Frac2X()
403 *
404 * Availability:
405 * Mac OS X: in version 10.0 and later in CoreServices.framework
406 * CarbonLib: in CarbonLib 1.0 and later
407 * Non-Carbon CFM: in InterfaceLib 7.1 and later
408 }
Frac2Xnull409 function Frac2X( x: Fract ): Float64; external name '_Frac2X';
410 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
411
412
413 {
414 * Fix2X()
415 *
416 * Availability:
417 * Mac OS X: in version 10.0 and later in CoreServices.framework
418 * CarbonLib: in CarbonLib 1.0 and later
419 * Non-Carbon CFM: in InterfaceLib 7.1 and later
420 }
Fix2Xnull421 function Fix2X( x: Fixed ): Float64; external name '_Fix2X';
422 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
423
424
425 {
426 * X2Fix()
427 *
428 * Availability:
429 * Mac OS X: in version 10.0 and later in CoreServices.framework
430 * CarbonLib: in CarbonLib 1.0 and later
431 * Non-Carbon CFM: in InterfaceLib 7.1 and later
432 }
X2Fixnull433 function X2Fix( x: Float64 ): Fixed; external name '_X2Fix';
434 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
435
436
437 {
438 * X2Frac()
439 *
440 * Availability:
441 * Mac OS X: in version 10.0 and later in CoreServices.framework
442 * CarbonLib: in CarbonLib 1.0 and later
443 * Non-Carbon CFM: in InterfaceLib 7.1 and later
444 }
X2Fracnull445 function X2Frac( x: Float64 ): Fract; external name '_X2Frac';
446 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
447
448
449 {
450 * WideCompare()
451 *
452 * Parameters:
453 *
454 * target:
455 * a pointer to the first wide to compare
456 *
457 * source:
458 * a pointer to the second wide to compare
459 *
460 * Result:
461 * return 0 if the value in target == the value in source ; a value
462 * < 0 if *target < *source and a value > 0 if *target > *source
463 *
464 * Availability:
465 * Mac OS X: in version 10.0 and later in CoreServices.framework
466 * CarbonLib: in CarbonLib 1.0 and later
467 * Non-Carbon CFM: in InterfaceLib 7.1 and later
468 }
WideComparenull469 function WideCompare( const (*var*) target: wide; const (*var*) source: wide ): SInt16; external name '_WideCompare';
470 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
471
472
473 {
474 * WideAdd()
475 *
476 * Discussion:
477 * Adds the value in source to target and returns target. Note that
478 * target is updated to the new value.
479 *
480 * Parameters:
481 *
482 * target:
483 * a pointer to the value to have source added to
484 *
485 * source:
486 * a pointer to the value to be added to target
487 *
488 * Result:
489 * returns the value target
490 *
491 * Availability:
492 * Mac OS X: in version 10.0 and later in CoreServices.framework
493 * CarbonLib: in CarbonLib 1.0 and later
494 * Non-Carbon CFM: in InterfaceLib 7.1 and later
495 }
WideAddnull496 function WideAdd( var target: wide; const (*var*) source: wide ): widePtr; external name '_WideAdd';
497 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
498
499
500 {
501 * WideSubtract()
502 *
503 * Discussion:
504 * Subtracts the value in source from target and returns target.
505 * Note that target is updated to the new value.
506 *
507 * Parameters:
508 *
509 * target:
510 * a pointer to the value to have source subtracted from
511 *
512 * source:
513 * a pointer to the value to be substracted from target
514 *
515 * Result:
516 * returns the value target
517 *
518 * Availability:
519 * Mac OS X: in version 10.0 and later in CoreServices.framework
520 * CarbonLib: in CarbonLib 1.0 and later
521 * Non-Carbon CFM: in InterfaceLib 7.1 and later
522 }
WideSubtractnull523 function WideSubtract( var target: wide; const (*var*) source: wide ): widePtr; external name '_WideSubtract';
524 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
525
526
527 {
528 * WideNegate()
529 *
530 * Discussion:
531 * Negates the value ( twos complement ) in target and returns
532 * target. Note that target is updated to the new value.
533 *
534 * Parameters:
535 *
536 * target:
537 *
538 * Result:
539 * returns the value target
540 *
541 * Availability:
542 * Mac OS X: in version 10.0 and later in CoreServices.framework
543 * CarbonLib: in CarbonLib 1.0 and later
544 * Non-Carbon CFM: in InterfaceLib 7.1 and later
545 }
WideNegatenull546 function WideNegate( var target: wide ): widePtr; external name '_WideNegate';
547 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
548
549
550 {
551 * WideShift()
552 *
553 * Discussion:
554 * Shift the value in target by shift bits with upwards rounding of
555 * the remainder. Note that target is updated to the new value.
556 *
557 * Parameters:
558 *
559 * target:
560 * the value to be shifted
561 *
562 * shift:
563 * the count of bits to shift, positive values shift right and
564 * negative values shift left
565 *
566 * Availability:
567 * Mac OS X: in version 10.0 and later in CoreServices.framework
568 * CarbonLib: in CarbonLib 1.0 and later
569 * Non-Carbon CFM: in InterfaceLib 7.1 and later
570 }
WideShiftnull571 function WideShift( var target: wide; shift: SInt32 ): widePtr; external name '_WideShift';
572 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
573
574
575 {
576 * WideSquareRoot()
577 *
578 * Discussion:
579 * Return the closest integer value to the square root for the given
580 * number.
581 *
582 * Parameters:
583 *
584 * source:
585 * the value to calculate the root for
586 *
587 * Result:
588 * the closest integer value to the square root of source
589 *
590 * Availability:
591 * Mac OS X: in version 10.0 and later in CoreServices.framework
592 * CarbonLib: in CarbonLib 1.0 and later
593 * Non-Carbon CFM: in InterfaceLib 7.1 and later
594 }
WideSquareRootnull595 function WideSquareRoot( const (*var*) source: wide ): UInt32; external name '_WideSquareRoot';
596 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
597
598
599 {
600 * WideMultiply()
601 *
602 * Discussion:
603 * Returns the wide result of multipling two SInt32 values
604 *
605 * Parameters:
606 *
607 * multiplicand:
608 *
609 * multiplier:
610 *
611 * target:
612 * a pointer to where to put the result of multiplying
613 * multiplicand and multiplier, must not be NULL
614 *
615 * Result:
616 * the value target
617 *
618 * Availability:
619 * Mac OS X: in version 10.0 and later in CoreServices.framework
620 * CarbonLib: in CarbonLib 1.0 and later
621 * Non-Carbon CFM: in InterfaceLib 7.1 and later
622 }
WideMultiplynull623 function WideMultiply( multiplicand: SInt32; multiplier: SInt32; var target: wide ): widePtr; external name '_WideMultiply';
624 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
625
626
627 {
628 * WideDivide()
629 *
630 * Discussion:
631 * Returns the integer and remainder results after dividing a wide
632 * value by an SInt32. Will overflow to positiveInfinity or
633 * negativeInfinity if the result won't fit into an SInt32. If
634 * remainder is (SInt32) -1 then any overflow rounds to
635 * negativeInfinity.
636 *
637 * Parameters:
638 *
639 * dividend:
640 * the value to be divided
641 *
642 * divisor:
643 * the value to divide by
644 *
645 * remainder:
646 * a pointer to where to put the remainder result, between 0 and
647 * divisor, after dividing divident by divisor. If NULL, no
648 * remainder is returned. If (SInt32*) -1, then any overflow
649 * result will round to negativeInfinity.
650 *
651 * Result:
652 * the integer signed result of dividend / divisor
653 *
654 * Availability:
655 * Mac OS X: in version 10.0 and later in CoreServices.framework
656 * CarbonLib: in CarbonLib 1.0 and later
657 * Non-Carbon CFM: in InterfaceLib 7.1 and later
658 }
WideDividenull659 function WideDivide( const (*var*) dividend: wide; divisor: SInt32; var remainder: SInt32 ): SInt32; external name '_WideDivide';
660 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
661
662
663 {
664 * WideWideDivide()
665 *
666 * Discussion:
667 * Returns the wide integer and remainder results after dividing a
668 * wide value by an SInt32. Note that dividend is updated with the
669 * result.
670 *
671 * Parameters:
672 *
673 * dividend:
674 * the value to be divided
675 *
676 * divisor:
677 * the value to divide by
678 *
679 * remainder:
680 * a pointer to where to put the remainder result, between 0 and
681 * divisor, after dividing divident by divisor
682 *
683 * Result:
684 * the wide result of dividend / divisor
685 *
686 * Availability:
687 * Mac OS X: in version 10.0 and later in CoreServices.framework
688 * CarbonLib: in CarbonLib 1.0 and later
689 * Non-Carbon CFM: in InterfaceLib 7.1 and later
690 }
WideWideDividenull691 function WideWideDivide( var dividend: wide; divisor: SInt32; var remainder: SInt32 ): widePtr; external name '_WideWideDivide';
692 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
693
694
695 {
696 * WideBitShift()
697 *
698 * Discussion:
699 * Shift the value in target by shift bits. Note that target is
700 * updated with the shifted result.
701 *
702 * Parameters:
703 *
704 * target:
705 * the value to be shifted
706 *
707 * shift:
708 * the count of bits to shift, positive values shift right and
709 * negative values shift left
710 *
711 * Result:
712 * return the value target
713 *
714 * Availability:
715 * Mac OS X: in version 10.0 and later in CoreServices.framework
716 * CarbonLib: in CarbonLib 1.0 and later
717 * Non-Carbon CFM: in InterfaceLib 7.1 and later
718 }
WideBitShiftnull719 function WideBitShift( var target: wide; shift: SInt32 ): widePtr; external name '_WideBitShift';
720 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
721
722
723 {
724 * UnsignedFixedMulDiv()
725 *
726 * Availability:
727 * Mac OS X: in version 10.4 and later in CoreServices.framework
728 * CarbonLib: not available
729 * Non-Carbon CFM: not available
730 }
UnsignedFixedMulDivnull731 function UnsignedFixedMulDiv( value: UnsignedFixed; multiplier: UnsignedFixed; divisor: UnsignedFixed ): UnsignedFixed; external name '_UnsignedFixedMulDiv';
732 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
733
734 {$endc} {TARGET_OS_MAC}
735 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
736
737 end.
738 {$endc} {not MACOSALLINCLUDE}
739