1 /*
2  * Copyright (c) 1985-2011 by Apple Inc.. All rights reserved.
3  *
4  * @APPLE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. Please obtain a copy of the License at
10  * http://www.opensource.apple.com/apsl/ and read it before using this
11  * file.
12  *
13  * The Original Code and all software distributed under the License are
14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18  * Please see the License for the specific language governing rights and
19  * limitations under the License.
20  *
21  * @APPLE_LICENSE_HEADER_END@
22  */
23 
24 /*
25      File:       MacTypes.h
26 
27      Contains:   Basic Macintosh data types.
28 
29      Version:    CarbonCore-769~1
30 
31      Bugs?:      For bug reports, consult the following page on
32                  the World Wide Web:
33 
34                      http://developer.apple.com/bugreporter/
35 
36 */
37 #ifndef __MACTYPES__
38 #define __MACTYPES__
39 
40 #ifndef __CONDITIONALMACROS__
41 #include <ConditionalMacros.h>
42 #endif
43 
44 #include <stdbool.h>
45 
46 #include <sys/types.h>
47 
48 #include <Availability.h>
49 
50 #if PRAGMA_ONCE
51 #pragma once
52 #endif
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 #pragma pack(push, 2)
59 
60 
61 /*
62         CarbonCore Deprecation flags.
63 
64      Certain Carbon API functions are deprecated in 10.3 and later
65       systems.  These will produce a warning when compiling on 10.3.
66 
67         Other functions and constants do not produce meaningful
68         results when building Carbon for Mac OS X.  For these
69       functions, no-op macros are provided, but only when the
70         ALLOW_OBSOLETE_CARBON flag is defined to be 0: eg
71       -DALLOW_OBSOLETE_CARBON=0.
72 */
73 
74 #if  ! defined(ALLOW_OBSOLETE_CARBON) || ! ALLOW_OBSOLETE_CARBON
75 
76 #define ALLOW_OBSOLETE_CARBON_MACMEMORY        0
77 #define ALLOW_OBSOLETE_CARBON_OSUTILS     0
78 
79 #else
80 
81 #define ALLOW_OBSOLETE_CARBON_MACMEMORY       1       /* Removes obsolete constants; turns HLock/HUnlock into no-op macros */
82 #define ALLOW_OBSOLETE_CARBON_OSUTILS       1       /* Removes obsolete structures */
83 
84 #endif
85 
86 #ifndef NULL
87 #define NULL    __DARWIN_NULL
88 #endif /* ! NULL */
89 #ifndef nil
90   #if defined(__has_feature)
91     #if __has_feature(cxx_nullptr)
92       #define nil nullptr
93     #else
94       #define nil __DARWIN_NULL
95     #endif
96   #else
97     #define nil __DARWIN_NULL
98   #endif
99 #endif
100 
101 /********************************************************************************
102 
103     Base integer types for all target OS's and CPU's
104 
105         UInt8            8-bit unsigned integer
106         SInt8            8-bit signed integer
107         UInt16          16-bit unsigned integer
108         SInt16          16-bit signed integer
109         UInt32          32-bit unsigned integer
110         SInt32          32-bit signed integer
111         UInt64          64-bit unsigned integer
112         SInt64          64-bit signed integer
113 
114 *********************************************************************************/
115 typedef unsigned char                   UInt8;
116 typedef signed char                     SInt8;
117 typedef unsigned short                  UInt16;
118 typedef signed short                    SInt16;
119 
120 #if __LP64__
121 typedef unsigned int                    UInt32;
122 typedef signed int                      SInt32;
123 #else
124 typedef unsigned long                   UInt32;
125 typedef signed long                     SInt32;
126 #endif
127 
128 /* avoid redeclaration if libkern/OSTypes.h */
129 #ifndef _OS_OSTYPES_H
130 #if TARGET_RT_BIG_ENDIAN
131 struct wide {
132   SInt32              hi;
133   UInt32              lo;
134 };
135 typedef struct wide                     wide;
136 struct UnsignedWide {
137   UInt32              hi;
138   UInt32              lo;
139 };
140 typedef struct UnsignedWide             UnsignedWide;
141 #else
142 struct wide {
143   UInt32              lo;
144   SInt32              hi;
145 };
146 typedef struct wide                     wide;
147 struct UnsignedWide {
148   UInt32              lo;
149   UInt32              hi;
150 };
151 typedef struct UnsignedWide             UnsignedWide;
152 #endif  /* TARGET_RT_BIG_ENDIAN */
153 
154 #endif
155 
156 #if TYPE_LONGLONG
157 /*
158   Note:   wide and UnsignedWide must always be structs for source code
159            compatibility. On the other hand UInt64 and SInt64 can be
160           either a struct or a long long, depending on the compiler.
161 
162            If you use UInt64 and SInt64 you should do all operations on
163           those data types through the functions/macros in Math64.h.
164            This will assure that your code compiles with compilers that
165            support long long and those that don't.
166 
167            The MS Visual C/C++ compiler uses __int64 instead of long long.
168 */
169     #if defined(_MSC_VER) && !defined(__MWERKS__) && defined(_M_IX86)
170       typedef   signed __int64                SInt64;
171         typedef unsigned __int64                UInt64;
172     #else
173       typedef   signed long long              SInt64;
174         typedef unsigned long long              UInt64;
175     #endif
176 #else
177 
178 
179 typedef wide                            SInt64;
180 typedef UnsignedWide                    UInt64;
181 #endif  /* TYPE_LONGLONG */
182 
183 /********************************************************************************
184 
185     Base fixed point types
186 
187         Fixed           16-bit signed integer plus 16-bit fraction
188         UnsignedFixed   16-bit unsigned integer plus 16-bit fraction
189         Fract           2-bit signed integer plus 30-bit fraction
190         ShortFixed      8-bit signed integer plus 8-bit fraction
191 
192 *********************************************************************************/
193 typedef SInt32                          Fixed;
194 typedef Fixed *                         FixedPtr;
195 typedef SInt32                          Fract;
196 typedef Fract *                         FractPtr;
197 typedef UInt32                          UnsignedFixed;
198 typedef UnsignedFixed *                 UnsignedFixedPtr;
199 typedef short                           ShortFixed;
200 typedef ShortFixed *                    ShortFixedPtr;
201 
202 
203 /********************************************************************************
204 
205     Base floating point types
206 
207         Float32         32 bit IEEE float:  1 sign bit, 8 exponent bits, 23 fraction bits
208         Float64         64 bit IEEE float:  1 sign bit, 11 exponent bits, 52 fraction bits
209         Float80         80 bit MacOS float: 1 sign bit, 15 exponent bits, 1 integer bit, 63 fraction bits
210         Float96         96 bit 68881 float: 1 sign bit, 15 exponent bits, 16 pad bits, 1 integer bit, 63 fraction bits
211 
212     Note: These are fixed size floating point types, useful when writing a floating
213           point value to disk.  If your compiler does not support a particular size
214           float, a struct is used instead.
215           Use one of the NCEG types (e.g. double_t) or an ANSI C type (e.g. double) if
216           you want a floating point representation that is natural for any given
217           compiler, but might be a different size on different compilers.
218 
219 *********************************************************************************/
220 typedef float               Float32;
221 typedef double              Float64;
222 struct Float80 {
223     SInt16  exp;
224     UInt16  man[4];
225 };
226 typedef struct Float80 Float80;
227 
228 struct Float96 {
229     SInt16  exp[2];     /* the second 16-bits are undefined */
230     UInt16  man[4];
231 };
232 typedef struct Float96 Float96;
233 struct Float32Point {
234     Float32             x;
235     Float32             y;
236 };
237 typedef struct Float32Point Float32Point;
238 
239 /********************************************************************************
240 
241     MacOS Memory Manager types
242 
243         Ptr             Pointer to a non-relocatable block
244         Handle          Pointer to a master pointer to a relocatable block
245         Size            The number of bytes in a block (signed for historical reasons)
246 
247 *********************************************************************************/
248 typedef char *                          Ptr;
249 typedef Ptr *                           Handle;
250 typedef long                            Size;
251 
252 /********************************************************************************
253 
254     Higher level basic types
255 
256         OSErr                   16-bit result error code
257         OSStatus                32-bit result error code
258         LogicalAddress          Address in the clients virtual address space
259         ConstLogicalAddress     Address in the clients virtual address space that will only be read
260         PhysicalAddress         Real address as used on the hardware bus
261         BytePtr                 Pointer to an array of bytes
262         ByteCount               The size of an array of bytes
263         ByteOffset              An offset into an array of bytes
264         ItemCount               32-bit iteration count
265         OptionBits              Standard 32-bit set of bit flags
266         PBVersion               ?
267         Duration                32-bit millisecond timer for drivers
268         AbsoluteTime            64-bit clock
269         ScriptCode              A particular set of written characters (e.g. Roman vs Cyrillic) and their encoding
270         LangCode                A particular language (e.g. English), as represented using a particular ScriptCode
271         RegionCode              Designates a language as used in a particular region (e.g. British vs American
272                                 English) together with other region-dependent characteristics (e.g. date format)
273         FourCharCode            A 32-bit value made by packing four 1 byte characters together
274         OSType                  A FourCharCode used in the OS and file system (e.g. creator)
275         ResType                 A FourCharCode used to tag resources (e.g. 'DLOG')
276 
277 *********************************************************************************/
278 typedef SInt16                          OSErr;
279 typedef SInt32                          OSStatus;
280 typedef void *                          LogicalAddress;
281 typedef const void *                    ConstLogicalAddress;
282 typedef void *                          PhysicalAddress;
283 typedef UInt8 *                         BytePtr;
284 typedef unsigned long                   ByteCount;
285 typedef unsigned long                   ByteOffset;
286 typedef SInt32                          Duration;
287 typedef UnsignedWide                    AbsoluteTime;
288 typedef UInt32                          OptionBits;
289 typedef unsigned long                   ItemCount;
290 typedef UInt32                          PBVersion;
291 typedef SInt16                          ScriptCode;
292 typedef SInt16                          LangCode;
293 typedef SInt16                          RegionCode;
294 typedef UInt32                          FourCharCode;
295 typedef FourCharCode                    OSType;
296 typedef FourCharCode                    ResType;
297 typedef OSType *                        OSTypePtr;
298 typedef ResType *                       ResTypePtr;
299 /********************************************************************************
300 
301     Boolean types and values
302 
303         Boolean         Mac OS historic type, sizeof(Boolean)==1
304         bool            Defined in stdbool.h, ISO C/C++ standard type
305         false           Now defined in stdbool.h
306         true            Now defined in stdbool.h
307 
308 *********************************************************************************/
309 typedef unsigned char                   Boolean;
310 /********************************************************************************
311 
312     Function Pointer Types
313 
314         ProcPtr                 Generic pointer to a function
315         Register68kProcPtr      Pointer to a 68K function that expects parameters in registers
316         UniversalProcPtr        Pointer to classic 68K code or a RoutineDescriptor
317 
318         ProcHandle              Pointer to a ProcPtr
319         UniversalProcHandle     Pointer to a UniversalProcPtr
320 
321 *********************************************************************************/
322 typedef CALLBACK_API_C( long , ProcPtr )(void);
323 typedef CALLBACK_API( void , Register68kProcPtr )(void);
324 #if TARGET_RT_MAC_CFM
325 /*  The RoutineDescriptor structure is defined in MixedMode.h */
326 typedef struct RoutineDescriptor *UniversalProcPtr;
327 #else
328 typedef ProcPtr                         UniversalProcPtr;
329 #endif  /* TARGET_RT_MAC_CFM */
330 
331 typedef ProcPtr *                       ProcHandle;
332 typedef UniversalProcPtr *              UniversalProcHandle;
333 /********************************************************************************
334 
335     RefCon Types
336 
337         For access to private data in callbacks, etc.; refcons are generally
338         used as a pointer to something, but in the 32-bit world refcons in
339         different APIs have had various types: pointer, unsigned scalar, and
340         signed scalar. The RefCon types defined here support the current 32-bit
341         usage but provide normalization to pointer types for 64-bit.
342 
343         PRefCon is preferred for new APIs; URefCon and SRefCon are primarily
344         for compatibility with existing APIs.
345 
346 *********************************************************************************/
347 typedef void *                          PRefCon;
348 #if __LP64__
349 typedef void *                          URefCon;
350 typedef void *                          SRefCon;
351 #else
352 typedef UInt32                          URefCon;
353 typedef SInt32                          SRefCon;
354 #endif  /* __LP64__ */
355 
356 /********************************************************************************
357 
358     Common Constants
359 
360         noErr                   OSErr: function performed properly - no error
361         kNilOptions             OptionBits: all flags false
362         kInvalidID              KernelID: NULL is for pointers as kInvalidID is for ID's
363         kVariableLengthArray    array bounds: variable length array
364 
365     Note: kVariableLengthArray was used in array bounds to specify a variable length array,
366           usually the last field in a struct.  Now that the C language supports
367 		  the concept of flexible array members, you can instead use:
368 
369 		struct BarList
370 		{
371 			short	listLength;
372 			Bar		elements[];
373 		};
374 
375 		However, this changes the semantics somewhat, as sizeof( BarList ) contains
376 		no space for any of the elements, so to allocate a list with space for
377 		the count elements
378 
379 		struct BarList* l = (struct BarList*) malloc( sizeof(BarList) + count * sizeof(Bar) );
380 
381 *********************************************************************************/
382 enum {
383   noErr                         = 0
384 };
385 
386 enum {
387   kNilOptions                   = 0
388 };
389 
390 #define kInvalidID   0
391 enum {
392   kVariableLengthArray
393 #ifdef __has_extension
394    #if __has_extension(enumerator_attributes)
395 		__attribute__((deprecated))
396 	#endif
397 #endif
398   = 1
399 };
400 
401 enum {
402   kUnknownType                  = 0x3F3F3F3F /* "????" QuickTime 3.0: default unknown ResType or OSType */
403 };
404 
405 
406 
407 /********************************************************************************
408 
409     String Types and Unicode Types
410 
411         UnicodeScalarValue,     A complete Unicode character in UTF-32 format, with
412         UTF32Char               values from 0 through 0x10FFFF (excluding the surrogate
413                                 range 0xD800-0xDFFF and certain disallowed values).
414 
415         UniChar,                A 16-bit Unicode code value in the default UTF-16 format.
416         UTF16Char               UnicodeScalarValues 0-0xFFFF are expressed in UTF-16
417                                 format using a single UTF16Char with the same value.
418                                 UnicodeScalarValues 0x10000-0x10FFFF are expressed in
419                                 UTF-16 format using a pair of UTF16Chars - one in the
420                                 high surrogate range (0xD800-0xDBFF) followed by one in
421                                 the low surrogate range (0xDC00-0xDFFF). All of the
422                                 characters defined in Unicode versions through 3.0 are
423                                 in the range 0-0xFFFF and can be expressed using a single
424                                 UTF16Char, thus the term "Unicode character" generally
425                                 refers to a UniChar = UTF16Char.
426 
427         UTF8Char                An 8-bit code value in UTF-8 format. UnicodeScalarValues
428                                 0-0x7F are expressed in UTF-8 format using one UTF8Char
429                                 with the same value. UnicodeScalarValues above 0x7F are
430                                 expressed in UTF-8 format using 2-4 UTF8Chars, all with
431                                 values in the range 0x80-0xF4 (UnicodeScalarValues
432                                 0x100-0xFFFF use two or three UTF8Chars,
433                                 UnicodeScalarValues 0x10000-0x10FFFF use four UTF8Chars).
434 
435         UniCharCount            A count of UTF-16 code values in an array or buffer.
436 
437         StrNNN                  Pascal string holding up to NNN bytes
438         StringPtr               Pointer to a pascal string
439         StringHandle            Pointer to a StringPtr
440         ConstStringPtr          Pointer to a read-only pascal string
441         ConstStrNNNParam        For function parameters only - means string is const
442 
443         CStringPtr              Pointer to a C string           (in C:  char*)
444         ConstCStringPtr         Pointer to a read-only C string (in C:  const char*)
445 
446     Note: The length of a pascal string is stored as the first byte.
447           A pascal string does not have a termination byte.
448           A pascal string can hold at most 255 bytes of data.
449           The first character in a pascal string is offset one byte from the start of the string.
450 
451           A C string is terminated with a byte of value zero.
452           A C string has no length limitation.
453           The first character in a C string is the zeroth byte of the string.
454 
455 
456 *********************************************************************************/
457 typedef UInt32                          UnicodeScalarValue;
458 typedef UInt32                          UTF32Char;
459 typedef UInt16                          UniChar;
460 typedef UInt16                          UTF16Char;
461 typedef UInt8                           UTF8Char;
462 typedef UniChar *                       UniCharPtr;
463 typedef unsigned long                   UniCharCount;
464 typedef UniCharCount *                  UniCharCountPtr;
465 typedef unsigned char                   Str255[256];
466 typedef unsigned char                   Str63[64];
467 typedef unsigned char                   Str32[33];
468 typedef unsigned char                   Str31[32];
469 typedef unsigned char                   Str27[28];
470 typedef unsigned char                   Str15[16];
471 /*
472     The type Str32 is used in many AppleTalk based data structures.
473     It holds up to 32 one byte chars.  The problem is that with the
474     length byte it is 33 bytes long.  This can cause weird alignment
475     problems in structures.  To fix this the type "Str32Field" has
476     been created.  It should only be used to hold 32 chars, but
477     it is 34 bytes long so that there are no alignment problems.
478 */
479 typedef unsigned char                   Str32Field[34];
480 /*
481     QuickTime 3.0:
482     The type StrFileName is used to make MacOS structs work
483     cross-platform.  For example FSSpec or SFReply previously
484     contained a Str63 field.  They now contain a StrFileName
485     field which is the same when targeting the MacOS but is
486     a 256 char buffer for Win32 and unix, allowing them to
487     contain long file names.
488 */
489 typedef Str63                           StrFileName;
490 typedef unsigned char *                 StringPtr;
491 typedef StringPtr *                     StringHandle;
492 typedef const unsigned char *           ConstStringPtr;
493 typedef const unsigned char *           ConstStr255Param;
494 typedef const unsigned char *           ConstStr63Param;
495 typedef const unsigned char *           ConstStr32Param;
496 typedef const unsigned char *           ConstStr31Param;
497 typedef const unsigned char *           ConstStr27Param;
498 typedef const unsigned char *           ConstStr15Param;
499 typedef ConstStr63Param                 ConstStrFileNameParam;
500 #ifdef __cplusplus
StrLength(ConstStr255Param string)501 inline unsigned char StrLength(ConstStr255Param string) { return (*string); }
502 #else
503 #define StrLength(string) (*(const unsigned char *)(string))
504 #endif  /* defined(__cplusplus) */
505 
506 #if OLDROUTINENAMES
507 #define Length(string) StrLength(string)
508 #endif  /* OLDROUTINENAMES */
509 
510 /********************************************************************************
511 
512     Process Manager type ProcessSerialNumber (previously in Processes.h)
513 
514 *********************************************************************************/
515 /* type for unique process identifier */
516 struct ProcessSerialNumber {
517   UInt32              highLongOfPSN;
518   UInt32              lowLongOfPSN;
519 };
520 typedef struct ProcessSerialNumber      ProcessSerialNumber;
521 typedef ProcessSerialNumber *           ProcessSerialNumberPtr;
522 /********************************************************************************
523 
524     Quickdraw Types
525 
526         Point               2D Quickdraw coordinate, range: -32K to +32K
527         Rect                Rectangular Quickdraw area
528         Style               Quickdraw font rendering styles
529         StyleParameter      Style when used as a parameter (historical 68K convention)
530         StyleField          Style when used as a field (historical 68K convention)
531         CharParameter       Char when used as a parameter (historical 68K convention)
532 
533     Note:   The original Macintosh toolbox in 68K Pascal defined Style as a SET.
534             Both Style and CHAR occupy 8-bits in packed records or 16-bits when
535             used as fields in non-packed records or as parameters.
536 
537 *********************************************************************************/
538 struct Point {
539   short               v;
540   short               h;
541 };
542 typedef struct Point                    Point;
543 typedef Point *                         PointPtr;
544 struct Rect {
545   short               top;
546   short               left;
547   short               bottom;
548   short               right;
549 };
550 typedef struct Rect                     Rect;
551 typedef Rect *                          RectPtr;
552 struct FixedPoint {
553   Fixed               x;
554   Fixed               y;
555 };
556 typedef struct FixedPoint               FixedPoint;
557 struct FixedRect {
558   Fixed               left;
559   Fixed               top;
560   Fixed               right;
561   Fixed               bottom;
562 };
563 typedef struct FixedRect                FixedRect;
564 
565 typedef short                           CharParameter;
566 enum {
567   normal                        = 0,
568   bold                          = 1,
569   italic                        = 2,
570   underline                     = 4,
571   outline                       = 8,
572   shadow                        = 0x10,
573   condense                      = 0x20,
574   extend                        = 0x40
575 };
576 
577 typedef unsigned char                   Style;
578 typedef short                           StyleParameter;
579 typedef Style                           StyleField;
580 
581 
582 /********************************************************************************
583 
584     QuickTime TimeBase types (previously in Movies.h)
585 
586         TimeValue           Count of units
587         TimeScale           Units per second
588         CompTimeValue       64-bit count of units (always a struct)
589         TimeValue64         64-bit count of units (long long or struct)
590         TimeBase            An opaque reference to a time base
591         TimeRecord          Package of TimeBase, duration, and scale
592 
593 *********************************************************************************/
594 typedef SInt32                          TimeValue;
595 typedef SInt32                          TimeScale;
596 typedef wide                            CompTimeValue;
597 typedef SInt64                          TimeValue64;
598 typedef struct TimeBaseRecord*          TimeBase;
599 struct TimeRecord {
600   CompTimeValue       value;                  /* units (duration or absolute) */
601   TimeScale           scale;                  /* units per second */
602   TimeBase            base;                   /* refernce to the time base */
603 };
604 typedef struct TimeRecord               TimeRecord;
605 
606 /********************************************************************************
607 
608     THINK C base objects
609 
610         HandleObject        Root class for handle based THINK C++ objects
611         PascalObject        Root class for pascal style objects in THINK C++
612 
613 *********************************************************************************/
614 #if defined(__SC__) && !defined(__STDC__) && defined(__cplusplus)
615         class __machdl HandleObject {};
616         #if TARGET_CPU_68K
617             class __pasobj PascalObject {};
618         #endif
619 #endif
620 
621 
622 /********************************************************************************
623 
624     MacOS versioning structures
625 
626         VersRec                 Contents of a 'vers' resource
627         VersRecPtr              Pointer to a VersRecPtr
628         VersRecHndl             Resource Handle containing a VersRec
629         NumVersion              Packed BCD version representation (e.g. "4.2.1a3" is 0x04214003)
630         UniversalProcPtr        Pointer to classic 68K code or a RoutineDescriptor
631 
632         ProcHandle              Pointer to a ProcPtr
633         UniversalProcHandle     Pointer to a UniversalProcPtr
634 
635 *********************************************************************************/
636 #if TARGET_RT_BIG_ENDIAN
637 struct NumVersion {
638                                               /* Numeric version part of 'vers' resource */
639   UInt8               majorRev;               /*1st part of version number in BCD*/
640   UInt8               minorAndBugRev;         /*2nd & 3rd part of version number share a byte*/
641   UInt8               stage;                  /*stage code: dev, alpha, beta, final*/
642   UInt8               nonRelRev;              /*revision level of non-released version*/
643 };
644 typedef struct NumVersion               NumVersion;
645 #else
646 struct NumVersion {
647                                               /* Numeric version part of 'vers' resource accessable in little endian format */
648   UInt8               nonRelRev;              /*revision level of non-released version*/
649   UInt8               stage;                  /*stage code: dev, alpha, beta, final*/
650   UInt8               minorAndBugRev;         /*2nd & 3rd part of version number share a byte*/
651   UInt8               majorRev;               /*1st part of version number in BCD*/
652 };
653 typedef struct NumVersion               NumVersion;
654 #endif  /* TARGET_RT_BIG_ENDIAN */
655 
656 enum {
657                                         /* Version Release Stage Codes */
658   developStage                  = 0x20,
659   alphaStage                    = 0x40,
660   betaStage                     = 0x60,
661   finalStage                    = 0x80
662 };
663 
664 union NumVersionVariant {
665                                               /* NumVersionVariant is a wrapper so NumVersion can be accessed as a 32-bit value */
666   NumVersion          parts;
667   UInt32              whole;
668 };
669 typedef union NumVersionVariant         NumVersionVariant;
670 typedef NumVersionVariant *             NumVersionVariantPtr;
671 typedef NumVersionVariantPtr *          NumVersionVariantHandle;
672 struct VersRec {
673                                               /* 'vers' resource format */
674   NumVersion          numericVersion;         /*encoded version number*/
675   short               countryCode;            /*country code from intl utilities*/
676   Str255              shortVersion;           /*version number string - worst case*/
677   Str255              reserved;               /*longMessage string packed after shortVersion*/
678 };
679 typedef struct VersRec                  VersRec;
680 typedef VersRec *                       VersRecPtr;
681 typedef VersRecPtr *                    VersRecHndl;
682 /*********************************************************************************
683 
684     Old names for types
685 
686 *********************************************************************************/
687 typedef UInt8                           Byte;
688 typedef SInt8                           SignedByte;
689 typedef wide *                          WidePtr;
690 typedef UnsignedWide *                  UnsignedWidePtr;
691 typedef Float80                         extended80;
692 typedef Float96                         extended96;
693 typedef SInt8                           VHSelect;
694 /*********************************************************************************
695 
696     Debugger functions
697 
698 *********************************************************************************/
699 /*
700  *  Debugger()
701  *
702  *  Availability:
703  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
704  *    CarbonLib:        in CarbonLib 1.0 and later
705  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
706  */
707 extern void
708 Debugger(void)                                                __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
709 
710 
711 /*
712  *  DebugStr()
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  */
719 extern void
720 DebugStr(ConstStr255Param debuggerMsg)                        __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
721 
722 
723 /*
724  *  debugstr()
725  *
726  *  Availability:
727  *    Mac OS X:         not available
728  *    CarbonLib:        not available
729  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
730  */
731 
732 
733 #if TARGET_CPU_PPC
734 /* Only for Mac OS native drivers */
735 /*
736  *  SysDebug()
737  *
738  *  Availability:
739  *    Mac OS X:         not available
740  *    CarbonLib:        not available
741  *    Non-Carbon CFM:   in DriverServicesLib 1.0 and later
742  */
743 
744 
745 /*
746  *  SysDebugStr()
747  *
748  *  Availability:
749  *    Mac OS X:         not available
750  *    CarbonLib:        not available
751  *    Non-Carbon CFM:   in DriverServicesLib 1.0 and later
752  */
753 
754 
755 #endif  /* TARGET_CPU_PPC */
756 
757 /* SADE break points */
758 /*
759  *  SysBreak()
760  *
761  *  Availability:
762  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
763  *    CarbonLib:        in CarbonLib 1.0 and later
764  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
765  */
766 extern void
767 SysBreak(void)                                                __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
768 
769 
770 /*
771  *  SysBreakStr()
772  *
773  *  Availability:
774  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
775  *    CarbonLib:        in CarbonLib 1.0 and later
776  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
777  */
778 extern void
779 SysBreakStr(ConstStr255Param debuggerMsg)                     __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
780 
781 
782 /*
783  *  SysBreakFunc()
784  *
785  *  Availability:
786  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
787  *    CarbonLib:        in CarbonLib 1.0 and later
788  *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
789  */
790 extern void
791 SysBreakFunc(ConstStr255Param debuggerMsg)                    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
792 
793 
794 /* old names for Debugger and DebugStr */
795 #if OLDROUTINENAMES && TARGET_CPU_68K
796     #define Debugger68k()   Debugger()
797     #define DebugStr68k(s)  DebugStr(s)
798 #endif
799 
800 
801 #pragma pack(pop)
802 
803 #ifdef __cplusplus
804 }
805 #endif
806 
807 #endif /* __MACTYPES__ */