Mac OS 9
MacTypes.h
Go to the documentation of this file.
1 
19 #ifndef __MACTYPES__
20 #define __MACTYPES__
21 
22 #ifndef __CONDITIONALMACROS__
23 #include <ConditionalMacros.h>
24 #endif
25 
26 #if PRAGMA_ONCE
27 #pragma once
28 #endif
29 
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #endif
34 
35 #if PRAGMA_IMPORT
36 #pragma import on
37 #endif
38 
39 #if PRAGMA_STRUCT_ALIGN
40 #pragma options align = mac68k
41 #elif PRAGMA_STRUCT_PACKPUSH
42 #pragma pack(push, 2)
43 #elif PRAGMA_STRUCT_PACK
44 #pragma pack(2)
45 #endif
46 
47 /*********************************************************************************
48 
49  Special values in C
50 
51  NULL The C standard for an impossible pointer value
52  nil A carry over from pascal, NULL is prefered for C
53 
54 *********************************************************************************/
55 #ifndef NULL
56 #if !defined(__cplusplus) && (defined(__SC__) || defined(THINK_C))
58 #define NULL ((void *)0)
59 #else
61 #define NULL 0L
62 #endif
63 #endif
64 
65 #ifndef nil
66 #define nil NULL
67 #endif
68 
69  /*********************************************************************************
70 
71  Base integer types for all target OS's and CPU's
72 
73  UInt8 8-bit unsigned integer
74  SInt8 8-bit signed integer
75  UInt16 16-bit unsigned integer
76  SInt16 16-bit signed integer
77  UInt32 32-bit unsigned integer
78  SInt32 32-bit signed integer
79  UInt64 64-bit unsigned integer
80  SInt64 64-bit signed integer
81 
82  *********************************************************************************/
83  typedef unsigned char UInt8;
84  typedef signed char SInt8;
85  typedef unsigned short UInt16;
86  typedef signed short SInt16;
87  typedef unsigned long UInt32;
88  typedef signed long SInt32;
89 #if TARGET_RT_BIG_ENDIAN
90  struct wide
91  {
92  SInt32 hi;
93  UInt32 lo;
94  };
95  typedef struct wide wide;
96  struct UnsignedWide
97  {
98  UInt32 hi;
99  UInt32 lo;
100  };
101  typedef struct UnsignedWide UnsignedWide;
102 #else
103 struct wide
104 {
105  UInt32 lo;
106  SInt32 hi;
107 };
108 typedef struct wide wide;
110 {
111  UInt32 lo;
112  UInt32 hi;
113 };
114 typedef struct UnsignedWide UnsignedWide;
115 #endif
117 #if TYPE_LONGLONG
130 #if defined(_MSC_VER) && !defined(__MWERKS__) && defined(_M_IX86)
131  typedef signed __int64 SInt64;
132  typedef unsigned __int64 UInt64;
133 #else
134  typedef signed long long SInt64;
135  typedef unsigned long long UInt64;
136 #endif
137 #else
138 
139 typedef wide SInt64;
140 typedef UnsignedWide UInt64;
141 #endif
143  /*********************************************************************************
144 
145  Base fixed point types
146 
147  Fixed 16-bit signed integer plus 16-bit fraction
148  UnsignedFixed 16-bit unsigned integer plus 16-bit fraction
149  Fract 2-bit signed integer plus 30-bit fraction
150  ShortFixed 8-bit signed integer plus 8-bit fraction
151 
152  *********************************************************************************/
153  typedef long Fixed;
154  typedef Fixed *FixedPtr;
155  typedef long Fract;
156  typedef Fract *FractPtr;
157  typedef unsigned long UnsignedFixed;
158  typedef UnsignedFixed *UnsignedFixedPtr;
159  typedef short ShortFixed;
160  typedef ShortFixed *ShortFixedPtr;
161 
162  /*********************************************************************************
163 
164  Base floating point types
165 
166  Float32 32 bit IEEE float: 1 sign bit, 8 exponent bits, 23
167  fraction bits Float64 64 bit IEEE float: 1 sign bit, 11 exponent bits,
168  52 fraction bits Float80 80 bit MacOS float: 1 sign bit, 15 exponent
169  bits, 1 integer bit, 63 fraction bits Float96 96 bit 68881 float: 1 sign
170  bit, 15 exponent bits, 16 pad bits, 1 integer bit, 63 fraction bits
171 
172  Note: These are fixed size floating point types, useful when writing a
173  floating point value to disk. If your compiler does not support a particular
174  size float, a struct is used instead. Use of of the NCEG types (e.g. double_t)
175  or an ANSI C type (e.g. double) if you want a floating point representation that
176  is natural for any given compiler, but might be a different size on different
177  compilers.
178 
179  *********************************************************************************/
180  typedef float Float32;
181 #if defined(__MWERKS__) || defined(THINK_C)
182  typedef short double Float64;
183 #else
184 typedef double Float64;
185 #endif
186 #if TARGET_CPU_68K
187 #if TARGET_RT_MAC_68881
188  typedef long double Float96;
189  struct Float80
190  {
191  SInt16 exp;
192  UInt16 man[4];
193  };
194  typedef struct Float80 Float80;
195 #else
196  typedef long double Float80;
197  struct Float96
198  {
199  SInt16 exp[2];
200  UInt16 man[4];
201  };
202  typedef struct Float96 Float96;
203 #endif
204 #else
205 struct Float80
206 {
207  SInt16 exp;
208  UInt16 man[4];
209 };
210 typedef struct Float80 Float80;
211 
212 struct Float96
213 {
214  SInt16 exp[2];
215  UInt16 man[4];
216 };
217 typedef struct Float96 Float96;
218 #endif
220  {
221  Float32 x;
222  Float32 y;
223  };
224  typedef struct Float32Point Float32Point;
225 
226  /*********************************************************************************
227 
228  MacOS Memory Manager types
229 
230  Ptr Pointer to a non-relocatable block
231  Handle Pointer to a master pointer to a relocatable block
232  Size The number of bytes in a block (signed for historical
233  reasons)
234 
235  *********************************************************************************/
236  typedef char *Ptr;
237  typedef Ptr *Handle;
238  typedef long Size;
239 
240  /*********************************************************************************
241 
242  Higher level basic types
243 
244  OSErr 16-bit result error code
245  OSStatus 32-bit result error code
246  LogicalAddress Address in the clients virtual address space
247  ConstLogicalAddress Address in the clients virtual address space
248  that will only be read PhysicalAddress Real address as used on the
249  hardware bus BytePtr Pointer to an array of bytes ByteCount The
250  size of an array of bytes ByteOffset An offset into an array of
251  bytes ItemCount 32-bit iteration count OptionBits Standard 32-bit
252  set of bit flags PBVersion ? Duration 32-bit
253  millisecond timer for drivers AbsoluteTime 64-bit clock ScriptCode A
254  particular set of written characters (e.g. Roman vs Cyrillic) and their encoding
255  LangCode A particular language (e.g. English), as
256  represented using a particular ScriptCode RegionCode Designates a
257  language as used in a particular region (e.g. British vs American English)
258  together with other region-dependent characteristics (e.g. date format)
259  FourCharCode A 32-bit value made by packing four 1 byte
260  characters together OSType A FourCharCode used in the OS and
261  file system (e.g. creator) ResType A FourCharCode used to tag
262  resources (e.g. 'DLOG')
263 
264  *********************************************************************************/
265  typedef SInt16 OSErr;
266  typedef SInt32 OSStatus;
267  typedef void *LogicalAddress;
268  typedef const void *ConstLogicalAddress;
269  typedef void *PhysicalAddress;
270  typedef UInt8 *BytePtr;
271  typedef UInt32 ByteCount;
272  typedef UInt32 ByteOffset;
273  typedef SInt32 Duration;
274  typedef UnsignedWide AbsoluteTime;
275  typedef UInt32 OptionBits;
276  typedef UInt32 ItemCount;
277  typedef UInt32 PBVersion;
278  typedef SInt16 ScriptCode;
279  typedef SInt16 LangCode;
280  typedef SInt16 RegionCode;
281  typedef unsigned long FourCharCode;
282  typedef FourCharCode OSType;
283  typedef FourCharCode ResType;
284  typedef OSType *OSTypePtr;
285  typedef ResType *ResTypePtr;
286 
287 /*********************************************************************************
288 
289  Boolean types and values
290 
291  Boolean A one byte value, holds "false" (0) or "true" (1)
292  false The Boolean value of zero (0)
293  true The Boolean value of one (1)
294 
295 *********************************************************************************/
302 #if !TYPE_BOOL
303 #if TARGET_OS_WIN32
305 #pragma warning(disable : 4237)
306 #endif
307  enum
308  {
309  false = 0,
310  true = 1
311  };
312 
313 #if TARGET_OS_WIN32
314 #pragma warning(default : 4237)
315 #endif
316 #endif
318  typedef unsigned char Boolean;
319  /*********************************************************************************
320 
321  Function Pointer Types
322 
323  ProcPtr Generic pointer to a function
324  Register68kProcPtr Pointer to a 68K function that expects
325  parameters in registers UniversalProcPtr Pointer to classic 68K code or a
326  RoutineDescriptor
327 
328  ProcHandle Pointer to a ProcPtr
329  UniversalProcHandle Pointer to a UniversalProcPtr
330 
331  *********************************************************************************/
332  typedef CALLBACK_API_C(long, ProcPtr)();
333  typedef CALLBACK_API(void, Register68kProcPtr)();
334 #if TARGET_OS_MAC && TARGET_RT_MAC_CFM
336  typedef struct RoutineDescriptor *UniversalProcPtr;
337 #else
338 typedef ProcPtr UniversalProcPtr;
339 #endif
341  typedef ProcPtr *ProcHandle;
342  typedef UniversalProcPtr *UniversalProcHandle;
343 
344  /*********************************************************************************
345 
346  Common Constants
347 
348  noErr OSErr: function performed properly - no error
349  kNilOptions OptionBits: all flags false
350  kInvalidID KernelID: NULL is for pointers as kInvalidID is
351  for ID's kVariableLengthArray array bounds: variable length array
352 
353  Note: kVariableLengthArray is used in array bounds to specify a variable
354  length array. It is ususally used in variable length structs when the last field
355  is an array of any size. Before ANSI C, we used zero as the bounds of variable
356  length array, but zero length array are illegal in ANSI C. Example usage:
357 
358  struct FooList
359  {
360  short listLength;
361  Foo elements[kVariableLengthArray];
362  };
363 
364  *********************************************************************************/
365  enum
366  {
367  noErr = 0
368  };
369 
370  enum
371  {
372  kNilOptions = 0
373  };
374 
375 #define kInvalidID 0
376  enum
377  {
378  kVariableLengthArray = 1
379  };
380 
381  enum
382  {
383  kUnknownType =
384  0x3F3F3F3F
385  };
386 
387  /*********************************************************************************
388 
389  String Types and Unicode Types
390 
391  UnicodeScalarValue, A complete Unicode character in UTF-32 format,
392  with UTF32Char values from 0 through 0x10FFFF (excluding the
393  surrogate range 0xD800-0xDFFF and certain disallowed values).
394 
395  UniChar, A 16-bit Unicode code value in the default
396  UTF-16 format. UTF16Char UnicodeScalarValues 0-0xFFFF are
397  expressed in UTF-16 format using a single UTF16Char with the same value.
398  UnicodeScalarValues 0x10000-0x10FFFF are
399  expressed in UTF-16 format using a pair of UTF16Chars - one in the high
400  surrogate range (0xD800-0xDBFF) followed by one in the low surrogate range
401  (0xDC00-0xDFFF). All of the characters defined in Unicode versions through 3.0
402  are in the range 0-0xFFFF and can be expressed using a single UTF16Char, thus
403  the term "Unicode character" generally refers to a UniChar = UTF16Char.
404 
405  UTF8Char An 8-bit code value in UTF-8 format.
406  UnicodeScalarValues 0-0x7F are expressed in UTF-8 format using one UTF8Char with
407  the same value. UnicodeScalarValues above 0x7F are expressed in UTF-8 format
408  using 2-4 UTF8Chars, all with values in the range 0x80-0xF4 (UnicodeScalarValues
409  0x100-0xFFFF use two or three UTF8Chars,
410  UnicodeScalarValues 0x10000-0x10FFFF use four
411  UTF8Chars).
412 
413  UniCharCount A count of UTF-16 code values in an array or
414  buffer.
415 
416  StrNNN Pascal string holding up to NNN bytes
417  StringPtr Pointer to a pascal string
418  StringHandle Pointer to a StringPtr
419  ConstStringPtr Pointer to a read-only pascal string
420  ConstStrNNNParam For function parameters only - means string is
421  const
422 
423  CStringPtr Pointer to a C string (in C: char*)
424  ConstCStringPtr Pointer to a read-only C string (in C: const
425  char*)
426 
427  Note: The length of a pascal string is stored as the first byte.
428  A pascal string does not have a termination byte.
429  A pascal string can hold at most 255 bytes of data.
430  The first character in a pascal string is offset one byte from the
431  start of the string.
432 
433  A C string is terminated with a byte of value zero.
434  A C string has no length limitation.
435  The first character in a C string is the zeroth byte of the string.
436 
437 
438  *********************************************************************************/
439  typedef UInt32 UnicodeScalarValue;
440  typedef UInt32 UTF32Char;
441  typedef UInt16 UniChar;
442  typedef UInt16 UTF16Char;
443  typedef UInt8 UTF8Char;
444  typedef UniChar *UniCharPtr;
445  typedef UInt32 UniCharCount;
446  typedef UniCharCount *UniCharCountPtr;
447  typedef unsigned char Str255[256];
448  typedef unsigned char Str63[64];
449  typedef unsigned char Str32[33];
450  typedef unsigned char Str31[32];
451  typedef unsigned char Str27[28];
452  typedef unsigned char Str15[16];
461  typedef unsigned char Str32Field[34];
471 #if TARGET_OS_MAC
472  typedef Str63 StrFileName;
473 #else
474 typedef Str255 StrFileName;
475 #endif
477  typedef unsigned char *StringPtr;
478  typedef StringPtr *StringHandle;
479  typedef const unsigned char *ConstStringPtr;
480  typedef const unsigned char *ConstStr255Param;
481  typedef const unsigned char *ConstStr63Param;
482  typedef const unsigned char *ConstStr32Param;
483  typedef const unsigned char *ConstStr31Param;
484  typedef const unsigned char *ConstStr27Param;
485  typedef const unsigned char *ConstStr15Param;
486 #if TARGET_OS_MAC
487  typedef ConstStr63Param ConstStrFileNameParam;
488 #else
489 typedef ConstStr255Param ConstStrFileNameParam;
490 #endif
492 #ifdef __cplusplus
493  inline unsigned char StrLength(ConstStr255Param string) { return (*string); }
494 #else
495 #define StrLength(string) (*(unsigned char *)(string))
496 #endif
498 #if OLDROUTINENAMES
499 #define Length(string) StrLength(string)
500 #endif
502  /*********************************************************************************
503 
504  Quickdraw Types
505 
506  Point 2D Quickdraw coordinate, range: -32K to +32K
507  Rect Rectangular Quickdraw area
508  Style Quickdraw font rendering styles
509  StyleParameter Style when used as a parameter (historical 68K
510  convention) StyleField Style when used as a field (historical 68K
511  convention) CharParameter Char when used as a parameter (historical 68K
512  convention)
513 
514  Note: The original Macintosh toolbox in 68K Pascal defined Style as a SET.
515  Both Style and CHAR occupy 8-bits in packed records or 16-bits when
516  used as fields in non-packed records or as parameters.
517 
518  *********************************************************************************/
519  struct Point
520  {
521  short v;
522  short h;
523  };
524  typedef struct Point Point;
525  typedef Point *PointPtr;
526  struct Rect
527  {
528  short top;
529  short left;
530  short bottom;
531  short right;
532  };
533  typedef struct Rect Rect;
534  typedef Rect *RectPtr;
535  struct FixedPoint
536  {
537  Fixed x;
538  Fixed y;
539  };
540  typedef struct FixedPoint FixedPoint;
541  struct FixedRect
542  {
543  Fixed left;
544  Fixed top;
545  Fixed right;
546  Fixed bottom;
547  };
548  typedef struct FixedRect FixedRect;
549 
550  typedef short CharParameter;
551  enum
552  {
553  normal = 0,
554  bold = 1,
555  italic = 2,
556  underline = 4,
557  outline = 8,
558  shadow = 0x10,
559  condense = 0x20,
560  extend = 0x40
561  };
562 
563  typedef unsigned char Style;
564  typedef short StyleParameter;
565  typedef Style StyleField;
566 
567  /*********************************************************************************
568 
569  QuickTime TimeBase types (previously in Movies.h)
570 
571  TimeValue Count of units
572  TimeScale Units per second
573  CompTimeValue 64-bit count of units (always a struct)
574  TimeValue64 64-bit count of units (long long or struct)
575  TimeBase An opaque reference to a time base
576  TimeRecord Package of TimeBase, duration, and scale
577 
578  *********************************************************************************/
579  typedef long TimeValue;
580  typedef long TimeScale;
581  typedef wide CompTimeValue;
582  typedef SInt64 TimeValue64;
583  typedef struct TimeBaseRecord *TimeBase;
584  struct TimeRecord
585  {
586  CompTimeValue value;
587  TimeScale scale;
588  TimeBase base;
589  };
590  typedef struct TimeRecord TimeRecord;
591 
592 /*********************************************************************************
593 
594  THINK C base objects
595 
596  HandleObject Root class for handle based THINK C++ objects
597  PascalObject Root class for pascal style objects in THINK C++
598 
599 *********************************************************************************/
600 #if defined(__SC__) && !defined(__STDC__) && defined(__cplusplus)
601  class __machdl HandleObject
602  {
603  };
604 #if TARGET_CPU_68K
605  class __pasobj PascalObject
606  {
607  };
608 #endif
609 #endif
610 
611 /*********************************************************************************
612 
613  MacOS versioning structures
614 
615  VersRec Contents of a 'vers' resource
616  VersRecPtr Pointer to a VersRecPtr
617  VersRecHndl Resource Handle containing a VersRec
618  NumVersion Packed BCD version representation (e.g.
619 "4.2.1a3" is 0x04214003) UniversalProcPtr Pointer to classic 68K code or
620 a RoutineDescriptor
621 
622  ProcHandle Pointer to a ProcPtr
623  UniversalProcHandle Pointer to a UniversalProcPtr
624 
625 *********************************************************************************/
626 #if TARGET_RT_BIG_ENDIAN
627  struct NumVersion
628  {
630  UInt8 majorRev;
631  UInt8 minorAndBugRev;
632  UInt8 stage;
633  UInt8 nonRelRev;
634  };
635  typedef struct NumVersion NumVersion;
636 #else
638 {
641  UInt8 nonRelRev;
642  UInt8 stage;
644  UInt8 majorRev;
645 };
646 typedef struct NumVersion NumVersion;
647 #endif
649  enum
650  {
652  developStage = 0x20,
653  alphaStage = 0x40,
654  betaStage = 0x60,
655  finalStage = 0x80
656  };
657 
659  {
663  unsigned long whole;
664  };
665  typedef union NumVersionVariant NumVersionVariant;
668  struct VersRec
669  {
672  short countryCode;
673  Str255 shortVersion;
674  Str255 reserved;
675  };
676  typedef struct VersRec VersRec;
677  typedef VersRec *VersRecPtr;
678  typedef VersRecPtr *VersRecHndl;
679  /**********************************************************************************
680 
681  Old names for types
682 
683  *********************************************************************************/
684  typedef UInt8 Byte;
685  typedef SInt8 SignedByte;
686  typedef wide *WidePtr;
687  typedef UnsignedWide *UnsignedWidePtr;
688  typedef Float80 extended80;
689  typedef Float96 extended96;
690  typedef SInt8 VHSelect;
691  /**********************************************************************************
692 
693  Debugger functions
694 
695  *********************************************************************************/
696 
708  ...
709 #ifdef DEBUGGING
710  Debugger();
711 #endif
712  ... The DebugStr function does the same thing, but passes a string to the
713  debugger(which then displays the message)
714  .Remember that Debugger will crash the system with an ID 12 System
715  Error if no debugger is installed when it is invoked.This is the real reason
716  why not to ship with debug traps in your code
717  - most end users do not have debuggers installed.</ pre> * \copyright THINK Reference © 1991 - 1992 Symantec Corporation * \non_carbon_cfm in InterfaceLib 7.1 and
718  later
719  * \carbon_lib in CarbonLib 1.0 and
720  later
721  * \mac_os_x in version 10.0 and
722  later
723  * /
724  void Debugger(void);
725 
737  ...
738 #ifdef DEBUGGING
739  DebugStr("\pGot an invalid Menu command.");
740 #endif
741  ... The Debugger function also activates the debugger, but does not pass any information to it.Remember that Debugger will crash the system with an ID 12 System Error if no debugger is installed when it is invoked.This is the real reason why not to ship with debug traps in your code - most end users do not have debuggers installed.A real handy feature of using DebugStr is the ";" feature.You can issue Macsbug commands from inside your program by embedding the commands in a pascal string, prefixing each command with the ";" character.For example : DebugStr("\p ;hs ;g");
742 Would toggle heap scrambling. You can use this for any Macsbug command
743 such as logging files, toggling heap scrambling and doing heap displays
744 during execution of your program for later review.
745 </pre>
746  * \copyright THINK Reference © 1991-1992 Symantec Corporation
747  * \non_carbon_cfm in InterfaceLib 7.1 and later
748  * \carbon_lib in CarbonLib 1.0 and later
749  * \mac_os_x in version 10.0 and later
750  */
751 void
752 DebugStr(ConstStr255Param debuggerMsg);
753 
754 #if TARGET_OS_MAC
755 #if CALL_NOT_IN_CARBON
764 void debugstr(const char *debuggerMsg);
765 
766 #endif
768 #if TARGET_CPU_PPC
770 #if CALL_NOT_IN_CARBON
779  void
780  SysDebug(void);
781 
790  void
791  SysDebugStr(ConstStr255Param str);
792 
793 #endif
795 #endif
806  void
807  SysBreak(void);
808 
817  void
818  SysBreakStr(ConstStr255Param debuggerMsg);
819 
828  void
829  SysBreakFunc(ConstStr255Param debuggerMsg);
830 
832 #if OLDROUTINENAMES && TARGET_CPU_68K
833 #define Debugger68k() Debugger()
834 #define DebugStr68k(s) DebugStr(s)
835 #endif
836 #endif
838 #if PRAGMA_STRUCT_ALIGN
839 #pragma options align = reset
840 #elif PRAGMA_STRUCT_PACKPUSH
841 #pragma pack(pop)
842 #elif PRAGMA_STRUCT_PACK
843 #pragma pack()
844 #endif
845 
846 #ifdef PRAGMA_IMPORT_OFF
847 #pragma import off
848 #elif PRAGMA_IMPORT
849 #pragma import reset
850 #endif
851 
852 #ifdef __cplusplus
853 }
854 #endif
855 
856 #endif
857 */*/
Set up for compiler independent conditionals.
long Fixed
Definition: MacTypes.h:153
unsigned char Str32Field[34]
Definition: MacTypes.h:461
Str255 StrFileName
Definition: MacTypes.h:474
unsigned char * StringPtr
Definition: MacTypes.h:477
ProcPtr * ProcHandle
Definition: MacTypes.h:341
The DebugStr function does the same but passes a string to the debugger(which then displays the message) .Remember that Debugger will crash the system with an ID 12 System Error if no debugger is installed when it is invoked.This is the real reason why not to ship with debug traps in your code - most end users do not have debuggers installed.</pre > *@par Copyright The Debugger function also activates the debugger
Invoke the debugging program; pass string to display.
Definition: MacTypes.h:713
#define StrLength(string)
Definition: MacTypes.h:495
The DebugStr function does the same thing
Invoke the debugging program.
Definition: MacTypes.h:712
unsigned char Boolean
Definition: MacTypes.h:318
@ developStage
Definition: MacTypes.h:652
wide SInt64
Definition: MacTypes.h:139
@ crash
Definition: Script.h:1071
Definition: MacTypes.h:536
Definition: MacTypes.h:542
Definition: MacTypes.h:220
Definition: MacTypes.h:206
Definition: MacTypes.h:213
UInt16 man[4]
Definition: MacTypes.h:215
Definition: MacTypes.h:638
UInt8 majorRev
Definition: MacTypes.h:644
UInt8 stage
Definition: MacTypes.h:642
UInt8 minorAndBugRev
Definition: MacTypes.h:643
UInt8 nonRelRev
Definition: MacTypes.h:641
Definition: MacTypes.h:520
Definition: MacTypes.h:527
Definition: MixedMode.h:214
Definition: RAVE.h:426
Definition: MacTypes.h:585
TimeBase base
Definition: MacTypes.h:588
TimeScale scale
Definition: MacTypes.h:587
Definition: MacTypes.h:110
Definition: MacTypes.h:669
Str255 reserved
Definition: MacTypes.h:674
NumVersion numericVersion
Definition: MacTypes.h:671
short countryCode
Definition: MacTypes.h:672
Str255 shortVersion
Definition: MacTypes.h:673
Definition: MacTypes.h:104
Definition: MacTypes.h:659
NumVersion parts
Definition: MacTypes.h:662