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