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