zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

MacTypes.h (31798B) - Raw


      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
     57 extern "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 *********************************************************************************/
    117 typedef unsigned char                   UInt8;
    118 typedef signed char                     SInt8;
    119 typedef unsigned short                  UInt16;
    120 typedef signed short                    SInt16;
    121 
    122 #if __LP64__
    123 typedef unsigned int                    UInt32;
    124 typedef signed int                      SInt32;
    125 #else
    126 typedef unsigned long                   UInt32;
    127 typedef signed long                     SInt32;
    128 #endif
    129 
    130 /* avoid redeclaration if libkern/OSTypes.h */
    131 #ifndef _OS_OSTYPES_H
    132 #if TARGET_RT_BIG_ENDIAN
    133 struct wide {
    134   SInt32              hi;
    135   UInt32              lo;
    136 };
    137 typedef struct wide                     wide;
    138 struct UnsignedWide {
    139   UInt32              hi;
    140   UInt32              lo;
    141 };
    142 typedef struct UnsignedWide             UnsignedWide;
    143 #else
    144 struct wide {
    145   UInt32              lo;
    146   SInt32              hi;
    147 };
    148 typedef struct wide                     wide;
    149 struct UnsignedWide {
    150   UInt32              lo;
    151   UInt32              hi;
    152 };
    153 typedef 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 
    181 typedef wide                            SInt64;
    182 typedef 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 *********************************************************************************/
    195 typedef SInt32                          Fixed;
    196 typedef Fixed *                         FixedPtr;
    197 typedef SInt32                          Fract;
    198 typedef Fract *                         FractPtr;
    199 typedef UInt32                          UnsignedFixed;
    200 typedef UnsignedFixed *                 UnsignedFixedPtr;
    201 typedef short                           ShortFixed;
    202 typedef 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 *********************************************************************************/
    222 typedef float               Float32;
    223 typedef double              Float64;
    224 struct Float80 {
    225     SInt16  exp;
    226     UInt16  man[4];
    227 };
    228 typedef struct Float80 Float80;
    229 
    230 struct Float96 {
    231     SInt16  exp[2];     /* the second 16-bits are undefined */
    232     UInt16  man[4];
    233 };
    234 typedef struct Float96 Float96;
    235 struct Float32Point {
    236     Float32             x;
    237     Float32             y;
    238 };
    239 typedef 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 *********************************************************************************/
    250 typedef char *                          Ptr;
    251 typedef Ptr *                           Handle;
    252 typedef 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 *********************************************************************************/
    280 typedef SInt16                          OSErr;
    281 typedef SInt32                          OSStatus;
    282 typedef void *                          LogicalAddress;
    283 typedef const void *                    ConstLogicalAddress;
    284 typedef void *                          PhysicalAddress;
    285 typedef UInt8 *                         BytePtr;
    286 typedef unsigned long                   ByteCount;
    287 typedef unsigned long                   ByteOffset;
    288 typedef SInt32                          Duration;
    289 typedef UnsignedWide                    AbsoluteTime;
    290 typedef UInt32                          OptionBits;
    291 typedef unsigned long                   ItemCount;
    292 typedef UInt32                          PBVersion;
    293 typedef SInt16                          ScriptCode;
    294 typedef SInt16                          LangCode;
    295 typedef SInt16                          RegionCode;
    296 typedef UInt32                          FourCharCode;
    297 typedef FourCharCode                    OSType;
    298 typedef FourCharCode                    ResType;
    299 typedef OSType *                        OSTypePtr;
    300 typedef 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 *********************************************************************************/
    311 typedef 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 *********************************************************************************/
    326 typedef CALLBACK_API_C( long , ProcPtr )(void);
    327 typedef CALLBACK_API( void , Register68kProcPtr )(void);
    328 #if TARGET_RT_MAC_CFM
    329 /*  The RoutineDescriptor structure is defined in MixedMode.h */
    330 typedef struct RoutineDescriptor *UniversalProcPtr;
    331 #else
    332 typedef ProcPtr                         UniversalProcPtr;
    333 #endif  /* TARGET_RT_MAC_CFM */
    334 
    335 typedef ProcPtr *                       ProcHandle;
    336 typedef 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 *********************************************************************************/
    353 typedef void *                          PRefCon;
    354 #if __LP64__
    355 typedef void *                          URefCon;
    356 typedef void *                          SRefCon;
    357 #else
    358 typedef UInt32                          URefCon;
    359 typedef 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 *********************************************************************************/
    388 enum {
    389   noErr                         = 0
    390 };
    391 
    392 enum {
    393   kNilOptions                   = 0
    394 };
    395 
    396 #define kInvalidID   0
    397 enum {
    398   kVariableLengthArray  
    399 #ifdef __has_extension
    400    #if __has_extension(enumerator_attributes)
    401 		__attribute__((deprecated))  
    402 	#endif
    403 #endif
    404   = 1
    405 };
    406 
    407 enum {
    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 *********************************************************************************/
    463 typedef UInt32                          UnicodeScalarValue;
    464 typedef UInt32                          UTF32Char;
    465 typedef UInt16                          UniChar;
    466 typedef UInt16                          UTF16Char;
    467 typedef UInt8                           UTF8Char;
    468 typedef UniChar *                       UniCharPtr;
    469 typedef unsigned long                   UniCharCount;
    470 typedef UniCharCount *                  UniCharCountPtr;
    471 typedef unsigned char                   Str255[256];
    472 typedef unsigned char                   Str63[64];
    473 typedef unsigned char                   Str32[33];
    474 typedef unsigned char                   Str31[32];
    475 typedef unsigned char                   Str27[28];
    476 typedef 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 */
    485 typedef 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 */
    495 typedef Str63                           StrFileName;
    496 typedef unsigned char *                 StringPtr;
    497 typedef StringPtr *                     StringHandle;
    498 typedef const unsigned char *           ConstStringPtr;
    499 typedef const unsigned char *           ConstStr255Param;
    500 typedef const unsigned char *           ConstStr63Param;
    501 typedef const unsigned char *           ConstStr32Param;
    502 typedef const unsigned char *           ConstStr31Param;
    503 typedef const unsigned char *           ConstStr27Param;
    504 typedef const unsigned char *           ConstStr15Param;
    505 typedef ConstStr63Param                 ConstStrFileNameParam;
    506 #ifdef __cplusplus
    507 inline 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 */
    522 struct ProcessSerialNumber {
    523   UInt32              highLongOfPSN;
    524   UInt32              lowLongOfPSN;
    525 };
    526 typedef struct ProcessSerialNumber      ProcessSerialNumber;
    527 typedef 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 *********************************************************************************/
    544 struct Point {
    545   short               v;
    546   short               h;
    547 };
    548 typedef struct Point                    Point;
    549 typedef Point *                         PointPtr;
    550 struct Rect {
    551   short               top;
    552   short               left;
    553   short               bottom;
    554   short               right;
    555 };
    556 typedef struct Rect                     Rect;
    557 typedef Rect *                          RectPtr;
    558 struct FixedPoint {
    559   Fixed               x;
    560   Fixed               y;
    561 };
    562 typedef struct FixedPoint               FixedPoint;
    563 struct FixedRect {
    564   Fixed               left;
    565   Fixed               top;
    566   Fixed               right;
    567   Fixed               bottom;
    568 };
    569 typedef struct FixedRect                FixedRect;
    570 
    571 typedef short                           CharParameter;
    572 enum {
    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 
    583 typedef unsigned char                   Style;
    584 typedef short                           StyleParameter;
    585 typedef 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 *********************************************************************************/
    600 typedef SInt32                          TimeValue;
    601 typedef SInt32                          TimeScale;
    602 typedef wide                            CompTimeValue;
    603 typedef SInt64                          TimeValue64;
    604 typedef struct TimeBaseRecord*          TimeBase;
    605 struct TimeRecord {
    606   CompTimeValue       value;                  /* units (duration or absolute) */
    607   TimeScale           scale;                  /* units per second */
    608   TimeBase            base;                   /* refernce to the time base */
    609 };
    610 typedef 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
    643 struct 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 };
    650 typedef struct NumVersion               NumVersion;
    651 #else
    652 struct 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 };
    659 typedef struct NumVersion               NumVersion;
    660 #endif  /* TARGET_RT_BIG_ENDIAN */
    661 
    662 enum {
    663                                         /* Version Release Stage Codes */
    664   developStage                  = 0x20,
    665   alphaStage                    = 0x40,
    666   betaStage                     = 0x60,
    667   finalStage                    = 0x80
    668 };
    669 
    670 union NumVersionVariant {
    671                                               /* NumVersionVariant is a wrapper so NumVersion can be accessed as a 32-bit value */
    672   NumVersion          parts;
    673   UInt32              whole;
    674 };
    675 typedef union NumVersionVariant         NumVersionVariant;
    676 typedef NumVersionVariant *             NumVersionVariantPtr;
    677 typedef NumVersionVariantPtr *          NumVersionVariantHandle;
    678 struct 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 };
    685 typedef struct VersRec                  VersRec;
    686 typedef VersRec *                       VersRecPtr;
    687 typedef VersRecPtr *                    VersRecHndl;
    688 /*********************************************************************************
    689 
    690     Old names for types
    691         
    692 *********************************************************************************/
    693 typedef UInt8                           Byte;
    694 typedef SInt8                           SignedByte;
    695 typedef wide *                          WidePtr;
    696 typedef UnsignedWide *                  UnsignedWidePtr;
    697 typedef Float80                         extended80;
    698 typedef Float96                         extended96;
    699 typedef 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  */
    715 extern void 
    716 Debugger(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  */
    727 extern void 
    728 DebugStr(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  */
    774 extern void 
    775 SysBreak(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  */
    786 extern void 
    787 SysBreakStr(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  */
    798 extern void 
    799 SysBreakFunc(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