1 {
2      File:       CarbonCore/ToolUtils.h
3 
4      Contains:   Toolbox Utilities Interfaces.
5                  The contents of this header file are deprecated.
6 
7      Copyright:  � 1990-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 ToolUtils;
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,FixMath,TextUtils,IconsCore,QuickdrawTypes;
209 {$endc} {not MACOSALLINCLUDE}
210 
211 
212 {$ifc TARGET_OS_MAC}
213 
214 {$ALIGN MAC68K}
215 
216 {
217 ������������������������������������������������������������������������������������
218     Note:
219 
220     The following routines that used to be in this header file, have moved to
221     more appropriate headers.
222 
223         FixMath.h:      FixMul
224                         FixRatio
225                         FixRound
226 
227         Icons.h:        GetIcon
228                         PlotIcon
229 
230         Quickdraw.h:    AngleFromSlope
231                         DeltaPoint
232                         GetCursor
233                         GetIndPattern
234                         GetPattern
235                         GetPicture
236                         PackBits
237                         ScreenRes
238                         ShieldCursor
239                         SlopeFromAngle
240                         UnpackBits
241 
242         TextUtils.h:    Munger
243                         GetIndString
244                         GetString
245                         NewString
246                         SetString
247 ������������������������������������������������������������������������������������
248 }
249 
250 {
251  *  BitTst()
252  *
253  *  Availability:
254  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
255  *    CarbonLib:        in CarbonLib 1.0 and later
256  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
257  }
BitTstnull258 function BitTst( bytePtr: {const} UnivPtr; bitNum: SIGNEDLONG ): Boolean; external name '_BitTst';
259 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
260 
261 
262 {
263  *  BitSet()
264  *
265  *  Availability:
266  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
267  *    CarbonLib:        in CarbonLib 1.0 and later
268  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
269  }
270 procedure BitSet( bytePtr: UnivPtr; bitNum: SIGNEDLONG ); external name '_BitSet';
271 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
272 
273 
274 {
275  *  BitClr()
276  *
277  *  Availability:
278  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
279  *    CarbonLib:        in CarbonLib 1.0 and later
280  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
281  }
282 procedure BitClr( bytePtr: UnivPtr; bitNum: SIGNEDLONG ); external name '_BitClr';
283 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
284 
285 
286 {
287  *  BitAnd()
288  *
289  *  Availability:
290  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
291  *    CarbonLib:        in CarbonLib 1.0 and later
292  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
293  }
BitAndnull294 function BitAnd( value1: SIGNEDLONG; value2: SIGNEDLONG ): SIGNEDLONG; external name '_BitAnd';
295 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
296 
297 
298 {
299  *  BitOr()
300  *
301  *  Availability:
302  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
303  *    CarbonLib:        in CarbonLib 1.0 and later
304  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
305  }
BitOrnull306 function BitOr( value1: SIGNEDLONG; value2: SIGNEDLONG ): SIGNEDLONG; external name '_BitOr';
307 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
308 
309 
310 {
311  *  BitXor()
312  *
313  *  Availability:
314  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
315  *    CarbonLib:        in CarbonLib 1.0 and later
316  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
317  }
BitXornull318 function BitXor( value1: SIGNEDLONG; value2: SIGNEDLONG ): SIGNEDLONG; external name '_BitXor';
319 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
320 
321 
322 {
323  *  BitNot()
324  *
325  *  Availability:
326  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
327  *    CarbonLib:        in CarbonLib 1.0 and later
328  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
329  }
BitNotnull330 function BitNot( value: SIGNEDLONG ): SIGNEDLONG; external name '_BitNot';
331 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
332 
333 
334 {
335  *  BitShift()
336  *
337  *  Availability:
338  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
339  *    CarbonLib:        in CarbonLib 1.0 and later
340  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
341  }
BitShiftnull342 function BitShift( value: SIGNEDLONG; count: SInt16 ): SIGNEDLONG; external name '_BitShift';
343 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA) *)
344 
345 {
346    HiWord and LoWord are not in Carbon, but Metrowerks
347    supplies an implementation on PPC
348 }
349 {
350  *  HiWord()
351  *
352  *  Availability:
353  *    Non-Carbon CFM:   not available
354  *    CarbonLib:        in CarbonLib H.a.c.k and later
355  *    Mac OS X:         not available
356  }
357 
358 {
359  *  LoWord()
360  *
361  *  Availability:
362  *    Non-Carbon CFM:   not available
363  *    CarbonLib:        in CarbonLib H.a.c.k and later
364  *    Mac OS X:         not available
365  }
366 
HiWordnull367 function HiWord(arg: SInt32): SInt16; inline; overload;
HiWordnull368 function HiWord(arg: UInt32): UInt16; inline; overload;
LoWordnull369 function LoWord(arg: SInt32): SInt16; inline; overload;
LoWordnull370 function LoWord(arg: UInt32): UInt16; inline; overload;
371 
372 
373 
374 {$ALIGN MAC68K}
375 
376 {$endc} {TARGET_OS_MAC}
377 
378 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
379 implementation
380 
381 {$ifc TARGET_OS_MAC}
382 
383 
384 
HiWordnull385 function HiWord(arg: SInt32): SInt16; inline;
386 begin
387   HiWord := arg shr 16;
388 end;
389 
390 
HiWordnull391 function HiWord(arg: UInt32): UInt16; inline;
392 begin
393   HiWord := arg shr 16;
394 end;
395 
396 
LoWordnull397 function LoWord(arg: SInt32): SInt16; inline;
398 begin
399   LoWord := SInt16(arg);
400 end;
401 
402 
LoWordnull403 function LoWord(arg: UInt32): UInt16; inline;
404 begin
405   LoWord := UInt16(arg);
406 end;
407 
408 
409 {$endc} {TARGET_OS_MAC}
410 
411 end.
412 
413 {$endc} {not MACOSALLINCLUDE}
414