|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: File: hfs_macos_types.h
24:
25: Contains: Basic Macintosh OS data types.
26:
27: Version: System 7.5
28:
29: DRI: Nick Kledzik
30:
31: Warning: *** APPLE INTERNAL USE ONLY ***
32: This file may contain unreleased API's
33:
34: This file is not to be exported
35: History:
36: 12-Aug-1999 Scott Roberts Created from ConditionalMacros.h, MacOSStubs.h, MacOSTypes.h
37:
38:
39:
40: */
41:
42:
43: #ifndef __hfs_macos_types__
44: #define __hfs_macos_types__
45:
46:
47: #include <sys/param.h>
48: #ifdef KERNEL
49: #include <libkern/libkern.h>
50: #include <sys/systm.h>
51: #endif
52:
53: #include <sys/types.h>
54: #include <sys/time.h>
55: #include <sys/proc.h>
56: #include <sys/lock.h>
57:
58: /****** START OF CONDITIONALMACROS *********/
59:
60: #if defined(__ppc__) || defined(powerpc) || defined(ppc)
61: #define TARGET_CPU_PPC 1
62: #define TARGET_CPU_68K 0
63: #define TARGET_CPU_X86 0
64: #define TARGET_CPU_MIPS 0
65: #define TARGET_CPU_SPARC 0
66: #define TARGET_CPU_ALPHA 0
67: #define TARGET_RT_MAC_CFM 0
68: #define TARGET_RT_MAC_MACHO 1
69: #define TARGET_RT_MAC_68881 0
70: #define TARGET_RT_LITTLE_ENDIAN 0
71: #define TARGET_RT_BIG_ENDIAN 1
72: #elif defined(m68k)
73: #define TARGET_CPU_PPC 0
74: #define TARGET_CPU_68K 1
75: #define TARGET_CPU_X86 0
76: #define TARGET_CPU_MIPS 0
77: #define TARGET_CPU_SPARC 0
78: #define TARGET_CPU_ALPHA 0
79: #define TARGET_RT_MAC_CFM 0
80: #define TARGET_RT_MAC_MACHO 1
81: #define TARGET_RT_MAC_68881 0
82: #define TARGET_RT_LITTLE_ENDIAN 0
83: #define TARGET_RT_BIG_ENDIAN 1
84: #elif defined(sparc)
85: #define TARGET_CPU_PPC 0
86: #define TARGET_CPU_68K 0
87: #define TARGET_CPU_X86 0
88: #define TARGET_CPU_MIPS 0
89: #define TARGET_CPU_SPARC 1
90: #define TARGET_CPU_ALPHA 0
91: #define TARGET_RT_MAC_CFM 0
92: #define TARGET_RT_MAC_MACHO 1
93: #define TARGET_RT_MAC_68881 0
94: #define TARGET_RT_LITTLE_ENDIAN 0
95: #define TARGET_RT_BIG_ENDIAN 1
96: #elif defined(__i386__) || defined(i386) || defined(intel)
97: #define TARGET_CPU_PPC 0
98: #define TARGET_CPU_68K 0
99: #define TARGET_CPU_X86 1
100: #define TARGET_CPU_MIPS 0
101: #define TARGET_CPU_SPARC 0
102: #define TARGET_CPU_ALPHA 0
103: #define TARGET_RT_MAC_CFM 0
104: #define TARGET_RT_MAC_MACHO 1
105: #define TARGET_RT_MAC_68881 0
106: #define TARGET_RT_LITTLE_ENDIAN 1
107: #define TARGET_RT_BIG_ENDIAN 0
108: #else
109: #error unrecognized GNU C compiler
110: #endif
111:
112:
113: #define TARGET_OS_MAC 0
114: #define TARGET_OS_WIN32 0
115: #define TARGET_OS_UNIX 0
116:
117: #define PRAGMA_IMPORT 0
118: #define PRAGMA_STRUCT_ALIGN 1
119: #define PRAGMA_ONCE 0
120: #define PRAGMA_STRUCT_PACK 0
121: #define PRAGMA_STRUCT_PACKPUSH 0
122: #define PRAGMA_ENUM_PACK 0
123: #define PRAGMA_ENUM_ALWAYSINT 0
124: #define PRAGMA_ENUM_OPTIONS 0
125: #define FOUR_CHAR_CODE(x) (x)
126:
127: #define TYPE_EXTENDED 0
128: #if __GNUC__ >= 2
129: #define TYPE_LONGLONG 1
130: #else
131: #define TYPE_LONGLONG 0
132: #endif
133: #ifdef __cplusplus
134: #define TYPE_BOOL 1
135: #else
136: #define TYPE_BOOL 0
137: #endif
138:
139: #define FUNCTION_PASCAL 0
140: #define FUNCTION_DECLSPEC 0
141: #define FUNCTION_WIN32CC 0
142:
143:
144: #define EXTERN_API(_type) extern _type
145: #define EXTERN_API_C(_type) extern _type
146: #define EXTERN_API_STDCALL(_type) extern _type
147: #define EXTERN_API_C_STDCALL(_type) extern _type
148:
149: #define DEFINE_API(_type) _type
150: #define DEFINE_API_C(_type) _type
151: #define DEFINE_API_STDCALL(_type) _type
152: #define DEFINE_API_C_STDCALL(_type) _type
153:
154: #define CALLBACK_API(_type, _name) _type ( * _name)
155: #define CALLBACK_API_C(_type, _name) _type ( * _name)
156: #define CALLBACK_API_STDCALL(_type, _name) _type ( * _name)
157: #define CALLBACK_API_C_STDCALL(_type, _name) _type ( * _name)
158:
159: #define TARGET_API_MACOS_X 1
160: #define TARGET_API_MAC_OS8 0
161: #define TARGET_API_MAC_CARBON 0
162:
163: #define ONEWORDINLINE(w1)
164: #define TWOWORDINLINE(w1,w2)
165: #define THREEWORDINLINE(w1,w2,w3)
166: #define FOURWORDINLINE(w1,w2,w3,w4)
167: #define FIVEWORDINLINE(w1,w2,w3,w4,w5)
168: #define SIXWORDINLINE(w1,w2,w3,w4,w5,w6)
169: #define SEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7)
170: #define EIGHTWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8)
171: #define NINEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9)
172: #define TENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10)
173: #define ELEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11)
174: #define TWELVEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12)
175:
176:
177: /****** START OF MACOSTYPES *********/
178:
179:
180: /*
181: 4.4BSD's sys/types.h defines size_t without defining __size_t__:
182: Things are a lot clearer from here on if we define __size_t__ now.
183: */
184: #define __size_t__
185:
186: /*
187: Convert kernel's diagnostic flag to MacOS's
188: */
189: #if HFS_DIAGNOSTIC
190: #define DEBUG_BUILD 1
191: #else
192: #define DEBUG_BUILD 0
193: #endif /* DIAGNOSTIC */
194:
195: /********************************************************************************
196:
197: Special values in C
198:
199: NULL The C standard for an impossible pointer value
200: nil A carry over from pascal, NULL is prefered for C
201:
202: *********************************************************************************/
203: #ifndef NULL
204: #define NULL 0
205: #endif
206:
207: #ifndef nil
208: #define nil NULL
209: #endif
210:
211:
212: /********************************************************************************
213:
214: Base integer types for all target OS's and CPU's
215:
216: UInt8 8-bit unsigned integer
217: SInt8 8-bit signed integer
218: UInt16 16-bit unsigned integer
219: SInt16 16-bit signed integer
220: UInt32 32-bit unsigned integer
221: SInt32 32-bit signed integer
222: UInt64 64-bit unsigned integer
223: SInt64 64-bit signed integer
224:
225: *********************************************************************************/
226: typedef u_int8_t UInt8;
227: typedef int8_t SInt8;
228: typedef u_int16_t UInt16;
229: typedef int16_t SInt16;
230: typedef u_int32_t UInt32;
231: typedef int32_t SInt32;
232: typedef u_int64_t UInt64;
233: typedef int64_t SInt64;
234:
235:
236:
237: /********************************************************************************
238:
239: Base floating point types
240:
241: Float32 32 bit IEEE float: 1 sign bit, 8 exponent bits, 23 fraction bits
242: Float64 64 bit IEEE float: 1 sign bit, 11 exponent bits, 52 fraction bits
243: Float80 80 bit MacOS float: 1 sign bit, 15 exponent bits, 1 integer bit, 63 fraction bits
244: Float96 96 bit 68881 float: 1 sign bit, 15 exponent bits, 16 pad bits, 1 integer bit, 63 fraction bits
245:
246: Note: These are fixed size floating point types, useful when writing a floating
247: point value to disk. If your compiler does not support a particular size
248: float, a struct is used instead.
249: Use of of the NCEG types (e.g. double_t) or an ANSI C type (e.g. double) if
250: you want a floating point representation that is natural for any given
251: compiler, but might be a different size on different compilers.
252:
253: *********************************************************************************/
254: typedef float Float32;
255: typedef double Float64;
256:
257: struct Float80 {
258: SInt16 exp;
259: UInt16 man[4];
260: };
261: typedef struct Float80 Float80;
262:
263: struct Float96 {
264: SInt16 exp[2]; /* the second 16-bits is always zero */
265: UInt16 man[4];
266: };
267: typedef struct Float96 Float96;
268:
269:
270:
271: /********************************************************************************
272:
273: MacOS Memory Manager types
274:
275: Ptr Pointer to a non-relocatable block
276: Handle Pointer to a master pointer to a relocatable block
277: Size The number of bytes in a block (signed for historical reasons)
278:
279: *********************************************************************************/
280: typedef char * Ptr;
281: typedef Ptr * Handle;
282: typedef long Size;
283: /********************************************************************************
284:
285: Higher level basic types
286:
287: OSErr 16-bit result error code
288: OSStatus 32-bit result error code
289: LogicalAddress Address in the clients virtual address space
290: ConstLogicalAddress Address in the clients virtual address space that will only be read
291: PhysicalAddress Real address as used on the hardware bus
292: BytePtr Pointer to an array of bytes
293: ByteCount The size of an array of bytes
294: ByteOffset An offset into an array of bytes
295: ItemCount 32-bit iteration count
296: OptionBits Standard 32-bit set of bit flags
297: PBVersion ?
298: Duration 32-bit millisecond timer for drivers
299: AbsoluteTime 64-bit clock
300: ScriptCode The coarse features of a written language (e.g. Roman vs Cyrillic)
301: LangCode A particular language (e.g. English)
302: RegionCode A variation of a language (British vs American English)
303: FourCharCode A 32-bit value made by packing four 1 byte characters together
304: OSType A FourCharCode used in the OS and file system (e.g. creator)
305: ResType A FourCharCode used to tag resources (e.g. 'DLOG')
306:
307: *********************************************************************************/
308: typedef SInt16 OSErr;
309: typedef SInt32 OSStatus;
310: typedef void * LogicalAddress;
311: typedef const void * ConstLogicalAddress;
312: typedef void * PhysicalAddress;
313: typedef UInt8 * BytePtr;
314: typedef UInt32 ByteCount;
315: typedef UInt32 ByteOffset;
316: typedef SInt32 Duration;
317: typedef UInt64 AbsoluteTime;
318: typedef UInt32 OptionBits;
319: typedef UInt32 ItemCount;
320: typedef UInt32 PBVersion;
321: typedef SInt16 ScriptCode;
322: typedef SInt16 LangCode;
323: typedef SInt16 RegionCode;
324: typedef unsigned long FourCharCode;
325: typedef FourCharCode OSType;
326: typedef FourCharCode ResType;
327: typedef OSType * OSTypePtr;
328: typedef ResType * ResTypePtr;
329:
330:
331: /********************************************************************************
332:
333: Boolean types and values
334:
335: Boolean A one byte value, holds "false" (0) or "true" (1)
336: false The Boolean value of zero (0)
337: true The Boolean value of one (1)
338:
339: *********************************************************************************/
340: /*
341: The identifiers "true" and "false" are becoming keywords in C++
342: and work with the new built-in type "bool"
343: "Boolean" will remain an unsigned char for compatibility with source
344: code written before "bool" existed.
345: */
346: #if !TYPE_BOOL
347:
348: enum {
349: false = 0,
350: true = 1
351: };
352:
353: #endif /* !TYPE_BOOL */
354:
355: typedef unsigned char Boolean;
356:
357:
358: /********************************************************************************
359:
360: Function Pointer Types
361:
362: ProcPtr Generic pointer to a function
363: Register68kProcPtr Pointer to a 68K function that expects parameters in registers
364: UniversalProcPtr Pointer to classic 68K code or a RoutineDescriptor
365:
366: ProcHandle Pointer to a ProcPtr
367: UniversalProcHandle Pointer to a UniversalProcPtr
368:
369: *********************************************************************************/
370: typedef long (*ProcPtr)();
371: typedef void (*Register68kProcPtr)();
372:
373: typedef ProcPtr UniversalProcPtr;
374:
375: typedef ProcPtr * ProcHandle;
376: typedef UniversalProcPtr * UniversalProcHandle;
377:
378: /********************************************************************************
379:
380: Quickdraw Types
381:
382: Point 2D Quickdraw coordinate, range: -32K to +32K
383: Rect Rectangluar Quickdraw area
384: Style Quickdraw font rendering styles
385: StyleParameter Style when used as a parameter (historical 68K convention)
386: StyleField Style when used as a field (historical 68K convention)
387: CharParameter Char when used as a parameter (historical 68K convention)
388:
389: Note: The original Macintosh toolbox in 68K Pascal defined Style as a SET.
390: Both Style and CHAR occupy 8-bits in packed records or 16-bits when
391: used as fields in non-packed records or as parameters.
392:
393: *********************************************************************************/
394: struct Point {
395: short v;
396: short h;
397: };
398: typedef struct Point Point;
399:
400: typedef Point * PointPtr;
401: struct Rect {
402: short top;
403: short left;
404: short bottom;
405: short right;
406: };
407: typedef struct Rect Rect;
408:
409: typedef Rect * RectPtr;
410: typedef short CharParameter;
411:
412: enum {
413: normal = 0,
414: bold = 1,
415: italic = 2,
416: underline = 4,
417: outline = 8,
418: shadow = 0x10,
419: condense = 0x20,
420: extend = 0x40
421: };
422:
423: typedef unsigned char Style;
424: typedef short StyleParameter;
425: typedef Style StyleField;
426:
427:
428: /********************************************************************************
429:
430: Common Constants
431:
432: noErr OSErr: function performed properly - no error
433: kNilOptions OptionBits: all flags false
434: kInvalidID KernelID: NULL is for pointers as kInvalidID is for ID's
435: kVariableLengthArray array bounds: variable length array
436:
437: Note: kVariableLengthArray is used in array bounds to specify a variable length array.
438: It is ususally used in variable length structs when the last field is an array
439: of any size. Before ANSI C, we used zero as the bounds of variable length
440: array, but zero length array are illegal in ANSI C. Example usage:
441:
442: struct FooList
443: {
444: short listLength;
445: Foo elements[kVariableLengthArray];
446: };
447:
448: *********************************************************************************/
449:
450: enum {
451: noErr = 0
452: };
453:
454:
455: enum {
456: kNilOptions = 0
457: };
458:
459: #define kInvalidID 0
460:
461: enum {
462: kVariableLengthArray = 1
463: };
464:
465:
466:
467: /********************************************************************************
468:
469: String Types
470:
471: UniChar A single UniCode character (16-bits)
472:
473: StrNNN Pascal string holding up to NNN bytes
474: StringPtr Pointer to a pascal string
475: StringHandle Pointer to a StringPtr
476: ConstStrNNNParam For function parameters only - means string is const
477:
478: CStringPtr Pointer to a C string (same as: char*)
479: ConstCStringPtr Pointer to a const C string (same as: const char*)
480:
481: Note: The length of a pascal string is stored in the first byte.
482: A pascal string does not have a termination byte and can be at most 255 bytes long.
483: The first character in a pascal string is offset one byte from the start of the string.
484:
485: A C string is terminated with a byte of value zero.
486: A C string has no length limitation.
487: The first character in a C string is the first byte of the string.
488:
489:
490: *********************************************************************************/
491: typedef UInt16 UniChar;
492: typedef unsigned char Str255[256];
493: typedef unsigned char Str63[64];
494: typedef unsigned char Str32[33];
495: typedef unsigned char Str31[32];
496: typedef unsigned char Str27[28];
497: typedef unsigned char Str15[16];
498: /*
499: The type Str32 is used in many AppleTalk based data structures.
500: It holds up to 32 one byte chars. The problem is that with the
501: length byte it is 33 bytes long. This can cause weird alignment
502: problems in structures. To fix this the type "Str32Field" has
503: been created. It should only be used to hold 32 chars, but
504: it is 34 bytes long so that there are no alignment problems.
505: */
506: typedef unsigned char Str32Field[34];
507: typedef unsigned char * StringPtr;
508: typedef StringPtr * StringHandle;
509: typedef const unsigned char * ConstStr255Param;
510: typedef const unsigned char * ConstStr63Param;
511: typedef const unsigned char * ConstStr32Param;
512: typedef const unsigned char * ConstStr31Param;
513: typedef const unsigned char * ConstStr27Param;
514: typedef const unsigned char * ConstStr15Param;
515: #ifdef __cplusplus
516: inline unsigned char StrLength(ConstStr255Param string) { return (*string); }
517: #else
518: #define StrLength(string) (*(unsigned char *)(string))
519: #endif /* defined(__cplusplus) */
520:
521: typedef const unsigned char * ConstUTF8Param;
522:
523: /*********************************************************************************
524:
525: Old names for types
526:
527: *********************************************************************************/
528: typedef UInt8 Byte;
529: typedef SInt8 SignedByte;
530: typedef SInt64 * WidePtr;
531: typedef UInt64 * UnsignedWidePtr;
532: typedef Float80 extended80;
533: typedef Float96 extended96;
534: typedef SInt8 VHSelect;
535:
536:
537: EXTERN_API( void )
538: DebugStr (ConstStr255Param debuggerMsg);
539:
540: /*********************************************************************************
541:
542: Added types for HFSPlus MacOS X functionality. Needs to be incorporated to
543: other places
544:
545: *********************************************************************************/
546:
547: typedef struct vnode* FileReference;
548: #define kNoFileReference NULL
549:
550:
551: #define HFSInstrumentation 0
552:
553:
554: /***** START OF MACOSSTUBS ********/
555:
556:
557: /*
558: SizeTDef.h -- Common definitions
559:
560: size_t - this type is defined by several ANSI headers.
561: */
562: #if ! defined (__size_t__)
563: #define __size_t__
564: #if defined (__xlc) || defined (__xlC) || defined (__xlC__) || defined (__MWERKS__)
565: typedef unsigned long size_t;
566: #else /* __xlC */
567: typedef unsigned int size_t;
568: #endif /* __xlC */
569: #endif /* __size_t__ */
570:
571:
572: struct FSSpec {
573: long parID;
574: Str255 name;
575: };
576: typedef struct FSSpec FSSpec;
577:
578: /*
579: StdDef.h -- Common definitions
580:
581: */
582:
583: #define offsetof(structure,field) ((size_t)&((structure *) 0)->field)
584:
585:
586:
587: /*
588: File: Errors.h
589:
590: */
591: enum {
592: paramErr = -50, /*error in user parameter list*/
593: noHardwareErr = -200, /*Sound Manager Error Returns*/
594: notEnoughHardwareErr = -201, /*Sound Manager Error Returns*/
595: userCanceledErr = -128,
596: qErr = -1, /*queue element not found during deletion*/
597: vTypErr = -2, /*invalid queue element*/
598: corErr = -3, /*core routine number out of range*/
599: unimpErr = -4, /*unimplemented core routine*/
600: SlpTypeErr = -5, /*invalid queue element*/
601: seNoDB = -8, /*no debugger installed to handle debugger command*/
602: controlErr = -17, /*I/O System Errors*/
603: statusErr = -18, /*I/O System Errors*/
604: readErr = -19, /*I/O System Errors*/
605: writErr = -20, /*I/O System Errors*/
606: badUnitErr = -21, /*I/O System Errors*/
607: unitEmptyErr = -22, /*I/O System Errors*/
608: openErr = -23, /*I/O System Errors*/
609: closErr = -24, /*I/O System Errors*/
610: dRemovErr = -25, /*tried to remove an open driver*/
611: dInstErr = -26 /*DrvrInstall couldn't find driver in resources*/
612: };
613:
614: enum { /* Printing Errors */
615: iMemFullErr = -108,
616: iIOAbort = -27, /*Scrap Manager errors*/
617: noScrapErr = -100, /*No scrap exists error*/
618: noTypeErr = -102, /*No object of that type in scrap*/
619: memROZWarn = -99, /*soft error in ROZ*/
620: memROZError = -99, /*hard error in ROZ*/
621: memROZErr = -99, /*hard error in ROZ*/
622: memFullErr = -108, /*Not enough room in heap zone*/
623: nilHandleErr = -109, /*Master Pointer was NIL in HandleZone or other*/
624: memWZErr = -111, /*WhichZone failed (applied to free block)*/
625: memPurErr = -112, /*trying to purge a locked or non-purgeable block*/
626: memAdrErr = -110 /*address was odd; or out of range*/
627: };
628:
629:
630:
631: enum {
632: abortErr = -27, /*IO call aborted by KillIO*/
633: iIOAbortErr = -27, /*IO abort error (Printing Manager)*/
634: notOpenErr = -28, /*Couldn't rd/wr/ctl/sts cause driver not opened*/
635: unitTblFullErr = -29, /*unit table has no more entries*/
636: dceExtErr = -30, /*dce extension error*/
637: slotNumErr = -360, /*invalid slot # error*/
638: gcrOnMFMErr = -400, /*gcr format on high density media error*/
639: dirFulErr = -33, /*Directory full*/
640: dskFulErr = -34, /*disk full*/
641: nsvErr = -35, /*no such volume*/
642: ioErr = -36, /*I/O error (bummers)*/
643: bdNamErr = -37, /*there may be no bad names in the final system!*/
644: fnOpnErr = -38, /*File not open*/
645: eofErr = -39, /*End of file*/
646: posErr = -40, /*tried to position to before start of file (r/w)*/
647: mFulErr = -41, /*memory full (open) or file won't fit (load)*/
648: tmfoErr = -42, /*too many files open*/
649: fnfErr = -43, /*File not found*/
650: wPrErr = -44, /*diskette is write protected.*/
651: fLckdErr = -45 /*file is locked*/
652: };
653:
654:
655: enum {
656: vLckdErr = -46, /*volume is locked*/
657: fBsyErr = -47, /*File is busy (delete)*/
658: dupFNErr = -48, /*duplicate filename (rename)*/
659: opWrErr = -49, /*file already open with with write permission*/
660: rfNumErr = -51, /*refnum error*/
661: gfpErr = -52, /*get file position error*/
662: volOffLinErr = -53, /*volume not on line error (was Ejected)*/
663: permErr = -54, /*permissions error (on file open)*/
664: volOnLinErr = -55, /*drive volume already on-line at MountVol*/
665: nsDrvErr = -56, /*no such drive (tried to mount a bad drive num)*/
666: noMacDskErr = -57, /*not a mac diskette (sig bytes are wrong)*/
667: extFSErr = -58, /*volume in question belongs to an external fs*/
668: fsRnErr = -59, /*file system internal error:during rename the old entry was deleted but could not be restored.*/
669: badMDBErr = -60, /*bad master directory block*/
670: wrPermErr = -61, /*write permissions error*/
671: dirNFErr = -120, /*Directory not found*/
672: tmwdoErr = -121, /*No free WDCB available*/
673: badMovErr = -122, /*Move into offspring error*/
674: wrgVolTypErr = -123, /*Wrong volume type error [operation not supported for MFS]*/
675: volGoneErr = -124 /*Server volume has been disconnected.*/
676: };
677:
678: enum {
679: /*Dictionary Manager errors*/
680: notBTree = -410, /*The file is not a dictionary.*/
681: btNoSpace = -413, /*Can't allocate disk space.*/
682: btDupRecErr = -414, /*Record already exists.*/
683: btRecNotFnd = -415, /*Record cannot be found.*/
684: btKeyLenErr = -416, /*Maximum key length is too long or equal to zero.*/
685: btKeyAttrErr = -417, /*There is no such a key attribute.*/
686: unknownInsertModeErr = -20000, /*There is no such an insert mode.*/
687: recordDataTooBigErr = -20001, /*The record data is bigger than buffer size (1024 bytes).*/
688: invalidIndexErr = -20002 /*The recordIndex parameter is not valid.*/
689: };
690:
691:
692: enum {
693: fidNotFound = -1300, /*no file thread exists.*/
694: fidExists = -1301, /*file id already exists*/
695: notAFileErr = -1302, /*directory specified*/
696: diffVolErr = -1303, /*files on different volumes*/
697: catChangedErr = -1304, /*the catalog has been modified*/
698: desktopDamagedErr = -1305, /*desktop database files are corrupted*/
699: sameFileErr = -1306, /*can't exchange a file with itself*/
700: badFidErr = -1307, /*file id is dangling or doesn't match with the file number*/
701: notARemountErr = -1308, /*when _Mount allows only remounts and doesn't get one*/
702: fileBoundsErr = -1309, /*file's EOF, offset, mark or size is too big*/
703: fsDataTooBigErr = -1310, /*file or volume is too big for system*/
704: volVMBusyErr = -1311, /*can't eject because volume is in use by VM*/
705: envNotPresent = -5500, /*returned by glue.*/
706: envBadVers = -5501, /*Version non-positive*/
707: envVersTooBig = -5502, /*Version bigger than call can handle*/
708: fontDecError = -64, /*error during font declaration*/
709: fontNotDeclared = -65, /*font not declared*/
710: fontSubErr = -66, /*font substitution occured*/
711: fontNotOutlineErr = -32615, /*bitmap font passed to routine that does outlines only*/
712: firstDskErr = -84, /*I/O System Errors*/
713: lastDskErr = -64, /*I/O System Errors*/
714: noDriveErr = -64, /*drive not installed*/
715: offLinErr = -65, /*r/w requested for an off-line drive*/
716: noNybErr = -66 /*couldn't find 5 nybbles in 200 tries*/
717: };
718:
719: enum {
720: /* general text errors*/
721: kTextUnsupportedEncodingErr = -8738, /* specified encoding not supported for this operation*/
722: kTextMalformedInputErr = -8739, /* in DBCS, for example, high byte followed by invalid low byte*/
723: kTextUndefinedElementErr = -8740, /* text conversion errors*/
724: kTECMissingTableErr = -8745,
725: kTECTableChecksumErr = -8746,
726: kTECTableFormatErr = -8747,
727: kTECCorruptConverterErr = -8748, /* invalid converter object reference*/
728: kTECNoConversionPathErr = -8749,
729: kTECBufferBelowMinimumSizeErr = -8750, /* output buffer too small to allow processing of first input text element*/
730: kTECArrayFullErr = -8751, /* supplied name buffer or TextRun, TextEncoding, or UnicodeMapping array is too small*/
731: kTECBadTextRunErr = -8752,
732: kTECPartialCharErr = -8753, /* input buffer ends in the middle of a multibyte character, conversion stopped*/
733: kTECUnmappableElementErr = -8754,
734: kTECIncompleteElementErr = -8755, /* text element may be incomplete or is too long for internal buffers*/
735: kTECDirectionErr = -8756, /* direction stack overflow, etc.*/
736: kTECGlobalsUnavailableErr = -8770, /* globals have already been deallocated (premature TERM)*/
737: kTECItemUnavailableErr = -8771, /* item (e.g. name) not available for specified region (& encoding if relevant)*/
738: /* text conversion status codes*/
739: kTECUsedFallbacksStatus = -8783,
740: kTECNeedFlushStatus = -8784,
741: kTECOutputBufferFullStatus = -8785, /* output buffer has no room for conversion of next input text element (partial conversion)*/
742: /* deprecated error & status codes for low-level converter*/
743: unicodeChecksumErr = -8769,
744: unicodeNoTableErr = -8768,
745: unicodeVariantErr = -8767,
746: unicodeFallbacksErr = -8766,
747: unicodePartConvertErr = -8765,
748: unicodeBufErr = -8764,
749: unicodeCharErr = -8763,
750: unicodeElementErr = -8762,
751: unicodeNotFoundErr = -8761,
752: unicodeTableFormatErr = -8760,
753: unicodeDirectionErr = -8759,
754: unicodeContextualErr = -8758,
755: unicodeTextEncodingDataErr = -8757
756: };
757:
758:
759: /*
760: File: MacMemory.h
761:
762:
763: */
764:
765:
766: /*
767: File: MixedMode.h
768:
769: */
770:
771: /* Calling Conventions */
772: typedef unsigned short CallingConventionType;
773:
774: enum {
775: kPascalStackBased = 0,
776: kCStackBased = 1,
777: kRegisterBased = 2,
778: kD0DispatchedPascalStackBased = 8,
779: kD1DispatchedPascalStackBased = 12,
780: kD0DispatchedCStackBased = 9,
781: kStackDispatchedPascalStackBased = 14,
782: kThinkCStackBased = 5
783: };
784:
785:
786: #define STACK_UPP_TYPE(name) name
787: #define REGISTER_UPP_TYPE(name) name
788:
789:
790: /*
791: File: OSUtils.h
792:
793: */
794: typedef struct QElem QElem;
795:
796: typedef QElem * QElemPtr;
797: struct QHdr {
798: short qFlags;
799: QElemPtr qHead;
800: QElemPtr qTail;
801: };
802: typedef struct QHdr QHdr;
803:
804: typedef QHdr * QHdrPtr;
805:
806: typedef CALLBACK_API( void , DeferredTaskProcPtr )(long dtParam);
807: /*
808: WARNING: DeferredTaskProcPtr uses register based parameters under classic 68k
809: and cannot be written in a high-level language without
810: the help of mixed mode or assembly glue.
811: */
812: typedef REGISTER_UPP_TYPE(DeferredTaskProcPtr) DeferredTaskUPP;
813: enum { uppDeferredTaskProcInfo = 0x0000B802 }; /* register no_return_value Func(4_bytes:A1) */
814: #define NewDeferredTaskProc(userRoutine) (DeferredTaskUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeferredTaskProcInfo, GetCurrentArchitecture())
815: #define CallDeferredTaskProc(userRoutine, dtParam) CALL_ONE_PARAMETER_UPP((userRoutine), uppDeferredTaskProcInfo, (dtParam))
816: struct DeferredTask {
817: QElemPtr qLink;
818: short qType;
819: short dtFlags;
820: DeferredTaskUPP dtAddr;
821: long dtParam;
822: long dtReserved;
823: };
824: typedef struct DeferredTask DeferredTask;
825:
826: typedef DeferredTask * DeferredTaskPtr;
827:
828: /*
829: File: Finder.h
830:
831:
832: */
833:
834: /*
835: The following declerations used to be in Files.�,
836: but are Finder specific and were moved here.
837: */
838:
839: enum {
840: /* Finder Flags */
841: kIsOnDesk = 0x0001,
842: kColor = 0x000E,
843: kIsShared = 0x0040, /* bit 0x0080 is hasNoINITS */
844: kHasBeenInited = 0x0100, /* bit 0x0200 was the letter bit for AOCE, but is now reserved for future use */
845: kHasCustomIcon = 0x0400,
846: kIsStationery = 0x0800,
847: kNameLocked = 0x1000,
848: kHasBundle = 0x2000,
849: kIsInvisible = 0x4000,
850: kIsAlias = 0x8000
851: };
852:
853:
854: enum {
855: /* Finder Constants */
856: fOnDesk = 1,
857: fHasBundle = 8192,
858: fTrash = -3,
859: fDesktop = -2,
860: fDisk = 0
861: };
862:
863: #if PRAGMA_STRUCT_ALIGN
864: #pragma options align=mac68k
865: #elif PRAGMA_STRUCT_PACKPUSH
866: #pragma pack(push, 2)
867: #elif PRAGMA_STRUCT_PACK
868: #pragma pack(2)
869: #endif
870:
871:
872: struct FInfo {
873: OSType fdType; /*the type of the file*/
874: OSType fdCreator; /*file's creator*/
875: unsigned short fdFlags; /*flags ex. hasbundle,invisible,locked, etc.*/
876: Point fdLocation; /*file's location in folder*/
877: short fdFldr; /*folder containing file*/
878: };
879: typedef struct FInfo FInfo;
880:
881: struct FXInfo {
882: short fdIconID; /*Icon ID*/
883: short fdUnused[3]; /*unused but reserved 6 bytes*/
884: SInt8 fdScript; /*Script flag and number*/
885: SInt8 fdXFlags; /*More flag bits*/
886: short fdComment; /*Comment ID*/
887: long fdPutAway; /*Home Dir ID*/
888: };
889: typedef struct FXInfo FXInfo;
890:
891: struct DInfo {
892: Rect frRect; /*folder rect*/
893: unsigned short frFlags; /*Flags*/
894: Point frLocation; /*folder location*/
895: short frView; /*folder view*/
896: };
897: typedef struct DInfo DInfo;
898:
899: struct DXInfo {
900: Point frScroll; /*scroll position*/
901: long frOpenChain; /*DirID chain of open folders*/
902: SInt8 frScript; /*Script flag and number*/
903: SInt8 frXFlags; /*More flag bits*/
904: short frComment; /*comment*/
905: long frPutAway; /*DirID*/
906: };
907: typedef struct DXInfo DXInfo;
908:
909: #if PRAGMA_STRUCT_ALIGN
910: #pragma options align=reset
911: #elif PRAGMA_STRUCT_PACKPUSH
912: #pragma pack(pop)
913: #elif PRAGMA_STRUCT_PACK
914: #pragma pack()
915: #endif
916:
917:
918: enum {
919: fsRtParID = 1,
920: fsRtDirID = 2
921: };
922:
923:
924:
925: #if PRAGMA_STRUCT_ALIGN
926: #pragma options align=mac68k
927: #elif PRAGMA_STRUCT_PACKPUSH
928: #pragma pack(push, 2)
929: #elif PRAGMA_STRUCT_PACK
930: #pragma pack(2)
931: #endif
932:
933:
934: #if PRAGMA_STRUCT_ALIGN
935: #pragma options align=reset
936: #elif PRAGMA_STRUCT_PACKPUSH
937: #pragma pack(pop)
938: #elif PRAGMA_STRUCT_PACK
939: #pragma pack()
940: #endif
941:
942:
943: /*
944: * UTGetBlock options
945: */
946:
947: enum {
948: gbDefault = 0, /* default value - read if not found */
949: /* bits and masks */
950: gbReadBit = 0, /* read block from disk (forced read) */
951: gbReadMask = 0x0001,
952: gbExistBit = 1, /* get existing cache block */
953: gbExistMask = 0x0002,
954: gbNoReadBit = 2, /* don't read block from disk if not found in cache */
955: gbNoReadMask = 0x0004,
956: gbReleaseBit = 3, /* release block immediately after GetBlock */
957: gbReleaseMask = 0x0008
958: };
959:
960:
961: /*
962: * UTReleaseBlock options
963: */
964:
965: enum {
966: rbDefault = 0, /* default value - just mark the buffer not in-use */
967: /* bits and masks */
968: rbWriteBit = 0, /* force write buffer to disk */
969: rbWriteMask = 0x0001,
970: rbTrashBit = 1, /* trash buffer contents after release */
971: rbTrashMask = 0x0002,
972: rbDirtyBit = 2, /* mark buffer dirty */
973: rbDirtyMask = 0x0004,
974: rbFreeBit = 3, /* free the buffer (save in the hash) */
975: rbFreeMask = 0x000A /* rbFreeMask (rbFreeBit + rbTrashBit) works as rbTrash on < System 7.0 RamCache; on >= System 7.0, rbfreeMask overrides rbTrash */
976: };
977:
978: /*
979: * UTFlushCache options
980: */
981:
982: enum {
983: fcDefault = 0, /* default value - pass this fcOption to just flush any dirty buffers */
984: /* bits and masks */
985: fcTrashBit = 0, /* (don't pass this as fcOption, use only for testing bit) */
986: fcTrashMask = 0x0001, /* pass this fcOption value to flush and trash cache blocks */
987: fcFreeBit = 1, /* (don't pass this as fcOption, use only for testing bit) */
988: fcFreeMask = 0x0003 /* pass this fcOption to flush and free cache blocks (Note: both fcTrash and fcFree bits are set) */
989: };
990:
991:
992:
993: /*
994: * FCBRec.fcbFlags bits
995: */
996:
997: enum {
998: fcbWriteBit = 0, /* Data can be written to this file */
999: fcbWriteMask = 0x01,
1000: fcbResourceBit = 1, /* This file is a resource fork */
1001: fcbResourceMask = 0x02,
1002: fcbWriteLockedBit = 2, /* File has a locked byte range */
1003: fcbWriteLockedMask = 0x04,
1004: fcbSharedWriteBit = 4, /* File is open for shared write access */
1005: fcbSharedWriteMask = 0x10,
1006: fcbFileLockedBit = 5, /* File is locked (write-protected) */
1007: fcbFileLockedMask = 0x20,
1008: fcbOwnClumpBit = 6, /* File has clump size specified in FCB */
1009: fcbOwnClumpMask = 0x40,
1010: fcbModifiedBit = 7, /* File has changed since it was last flushed */
1011: fcbModifiedMask = 0x80
1012: };
1013:
1014:
1015: /*
1016: File: TextCommon.h
1017:
1018: */
1019:
1020: /* LocaleIdentifier is an obsolete Copland typedef, will be removed soon*/
1021: typedef UInt32 LocaleIdentifier;
1022: /* TextEncodingBase type & values */
1023: /* (values 0-32 correspond to the Script Codes defined in Inside Macintosh: Text pages 6-52 and 6-53 */
1024: typedef UInt32 TextEncodingBase;
1025:
1026: enum {
1027: /* Mac OS encodings*/
1028: kTextEncodingMacRoman = 0L,
1029: kTextEncodingMacJapanese = 1,
1030: kTextEncodingMacChineseTrad = 2,
1031: kTextEncodingMacKorean = 3,
1032: kTextEncodingMacArabic = 4,
1033: kTextEncodingMacHebrew = 5,
1034: kTextEncodingMacGreek = 6,
1035: kTextEncodingMacCyrillic = 7,
1036: kTextEncodingMacDevanagari = 9,
1037: kTextEncodingMacGurmukhi = 10,
1038: kTextEncodingMacGujarati = 11,
1039: kTextEncodingMacOriya = 12,
1040: kTextEncodingMacBengali = 13,
1041: kTextEncodingMacTamil = 14,
1042: kTextEncodingMacTelugu = 15,
1043: kTextEncodingMacKannada = 16,
1044: kTextEncodingMacMalayalam = 17,
1045: kTextEncodingMacSinhalese = 18,
1046: kTextEncodingMacBurmese = 19,
1047: kTextEncodingMacKhmer = 20,
1048: kTextEncodingMacThai = 21,
1049: kTextEncodingMacLaotian = 22,
1050: kTextEncodingMacGeorgian = 23,
1051: kTextEncodingMacArmenian = 24,
1052: kTextEncodingMacChineseSimp = 25,
1053: kTextEncodingMacTibetan = 26,
1054: kTextEncodingMacMongolian = 27,
1055: kTextEncodingMacEthiopic = 28,
1056: kTextEncodingMacCentralEurRoman = 29,
1057: kTextEncodingMacVietnamese = 30,
1058: kTextEncodingMacExtArabic = 31, /* The following use script code 0, smRoman*/
1059: kTextEncodingMacSymbol = 33,
1060: kTextEncodingMacDingbats = 34,
1061: kTextEncodingMacTurkish = 35,
1062: kTextEncodingMacCroatian = 36,
1063: kTextEncodingMacIcelandic = 37,
1064: kTextEncodingMacRomanian = 38, /* The following use script code 4, smArabic*/
1065: kTextEncodingMacFarsi = 0x8C, /* Like MacArabic but uses Farsi digits*/
1066: /* The following use script code 7, smCyrillic*/
1067: kTextEncodingMacUkrainian = 0x98, /* The following use script code 32, smUnimplemented*/
1068: kTextEncodingMacVT100 = 0xFC, /* VT100/102 font from Comm Toolbox: Latin-1 repertoire + box drawing etc*/
1069: /* Special Mac OS encodings*/
1070: kTextEncodingMacHFS = 0xFF, /* Meta-value, should never appear in a table.*/
1071: /* Unicode & ISO UCS encodings begin at 0x100*/
1072: kTextEncodingUnicodeDefault = 0x0100, /* Meta-value, should never appear in a table.*/
1073: kTextEncodingUnicodeV1_1 = 0x0101,
1074: kTextEncodingISO10646_1993 = 0x0101, /* Code points identical to Unicode 1.1*/
1075: kTextEncodingUnicodeV2_0 = 0x0103, /* New location for Korean Hangul*/
1076: /* ISO 8-bit and 7-bit encodings begin at 0x200*/
1077: kTextEncodingISOLatin1 = 0x0201, /* ISO 8859-1*/
1078: kTextEncodingISOLatin2 = 0x0202, /* ISO 8859-2*/
1079: kTextEncodingISOLatinCyrillic = 0x0205, /* ISO 8859-5*/
1080: kTextEncodingISOLatinArabic = 0x0206, /* ISO 8859-6, = ASMO 708, =DOS CP 708*/
1081: kTextEncodingISOLatinGreek = 0x0207, /* ISO 8859-7*/
1082: kTextEncodingISOLatinHebrew = 0x0208, /* ISO 8859-8*/
1083: kTextEncodingISOLatin5 = 0x0209, /* ISO 8859-9*/
1084: /* MS-DOS & Windows encodings begin at 0x400*/
1085: kTextEncodingDOSLatinUS = 0x0400, /* code page 437*/
1086: kTextEncodingDOSGreek = 0x0405, /* code page 737 (formerly code page 437G)*/
1087: kTextEncodingDOSBalticRim = 0x0406, /* code page 775*/
1088: kTextEncodingDOSLatin1 = 0x0410, /* code page 850, "Multilingual"*/
1089: kTextEncodingDOSGreek1 = 0x0411, /* code page 851*/
1090: kTextEncodingDOSLatin2 = 0x0412, /* code page 852, Slavic*/
1091: kTextEncodingDOSCyrillic = 0x0413, /* code page 855, IBM Cyrillic*/
1092: kTextEncodingDOSTurkish = 0x0414, /* code page 857, IBM Turkish*/
1093: kTextEncodingDOSPortuguese = 0x0415, /* code page 860*/
1094: kTextEncodingDOSIcelandic = 0x0416, /* code page 861*/
1095: kTextEncodingDOSHebrew = 0x0417, /* code page 862*/
1096: kTextEncodingDOSCanadianFrench = 0x0418, /* code page 863*/
1097: kTextEncodingDOSArabic = 0x0419, /* code page 864*/
1098: kTextEncodingDOSNordic = 0x041A, /* code page 865*/
1099: kTextEncodingDOSRussian = 0x041B, /* code page 866*/
1100: kTextEncodingDOSGreek2 = 0x041C, /* code page 869, IBM Modern Greek*/
1101: kTextEncodingDOSThai = 0x041D, /* code page 874, also for Windows*/
1102: kTextEncodingDOSJapanese = 0x0420, /* code page 932, also for Windows*/
1103: kTextEncodingDOSChineseSimplif = 0x0421, /* code page 936, also for Windows*/
1104: kTextEncodingDOSKorean = 0x0422, /* code page 949, also for Windows; Unified Hangul Code*/
1105: kTextEncodingDOSChineseTrad = 0x0423, /* code page 950, also for Windows*/
1106: kTextEncodingWindowsLatin1 = 0x0500, /* code page 1252*/
1107: kTextEncodingWindowsANSI = 0x0500, /* code page 1252 (alternate name)*/
1108: kTextEncodingWindowsLatin2 = 0x0501, /* code page 1250, Central Europe*/
1109: kTextEncodingWindowsCyrillic = 0x0502, /* code page 1251, Slavic Cyrillic*/
1110: kTextEncodingWindowsGreek = 0x0503, /* code page 1253*/
1111: kTextEncodingWindowsLatin5 = 0x0504, /* code page 1254, Turkish*/
1112: kTextEncodingWindowsHebrew = 0x0505, /* code page 1255*/
1113: kTextEncodingWindowsArabic = 0x0506, /* code page 1256*/
1114: kTextEncodingWindowsBalticRim = 0x0507, /* code page 1257*/
1115: kTextEncodingWindowsKoreanJohab = 0x0510, /* code page 1361, for Windows NT*/
1116: /* Various national standards begin at 0x600*/
1117: kTextEncodingUS_ASCII = 0x0600,
1118: kTextEncodingJIS_X0201_76 = 0x0620,
1119: kTextEncodingJIS_X0208_83 = 0x0621,
1120: kTextEncodingJIS_X0208_90 = 0x0622,
1121: kTextEncodingJIS_X0212_90 = 0x0623,
1122: kTextEncodingJIS_C6226_78 = 0x0624,
1123: kTextEncodingGB_2312_80 = 0x0630,
1124: kTextEncodingGBK_95 = 0x0631, /* annex to GB 13000-93; for Windows 95*/
1125: kTextEncodingKSC_5601_87 = 0x0640, /* same as KSC 5601-92 without Johab annex*/
1126: kTextEncodingKSC_5601_92_Johab = 0x0641, /* KSC 5601-92 Johab annex*/
1127: kTextEncodingCNS_11643_92_P1 = 0x0651, /* CNS 11643-1992 plane 1*/
1128: kTextEncodingCNS_11643_92_P2 = 0x0652, /* CNS 11643-1992 plane 2*/
1129: kTextEncodingCNS_11643_92_P3 = 0x0653, /* CNS 11643-1992 plane 3 (was plane 14 in 1986 version)*/
1130: /* ISO 2022 collections begin at 0x800*/
1131: kTextEncodingISO_2022_JP = 0x0820,
1132: kTextEncodingISO_2022_JP_2 = 0x0821,
1133: kTextEncodingISO_2022_CN = 0x0830,
1134: kTextEncodingISO_2022_CN_EXT = 0x0831,
1135: kTextEncodingISO_2022_KR = 0x0840, /* EUC collections begin at 0x900*/
1136: kTextEncodingEUC_JP = 0x0920, /* ISO 646, 1-byte katakana, JIS 208, JIS 212*/
1137: kTextEncodingEUC_CN = 0x0930, /* ISO 646, GB 2312-80*/
1138: kTextEncodingEUC_TW = 0x0931, /* ISO 646, CNS 11643-1992 Planes 1-16*/
1139: kTextEncodingEUC_KR = 0x0940, /* ISO 646, KS C 5601-1987*/
1140: /* Misc standards begin at 0xA00*/
1141: kTextEncodingShiftJIS = 0x0A01, /* plain Shift-JIS*/
1142: kTextEncodingKOI8_R = 0x0A02, /* Russian internet standard*/
1143: kTextEncodingBig5 = 0x0A03, /* Big-5 (has variants)*/
1144: kTextEncodingMacRomanLatin1 = 0x0A04, /* Mac OS Roman permuted to align with ISO Latin-1*/
1145: kTextEncodingHZ_GB_2312 = 0x0A05, /* HZ (RFC 1842, for Chinese mail & news)*/
1146: /* Other platform encodings*/
1147: kTextEncodingNextStepLatin = 0x0B01, /* NextStep encoding*/
1148: /* EBCDIC & IBM host encodings begin at 0xC00*/
1149: kTextEncodingEBCDIC_US = 0x0C01, /* basic EBCDIC-US*/
1150: kTextEncodingEBCDIC_CP037 = 0x0C02, /* code page 037, extended EBCDIC (Latin-1 set) for US,Canada...*/
1151: /* Special value*/
1152: kTextEncodingMultiRun = 0x0FFF, /* Multi-encoding text with external run info*/
1153: /* The following are older names for backward compatibility*/
1154: kTextEncodingMacTradChinese = 2,
1155: kTextEncodingMacRSymbol = 8,
1156: kTextEncodingMacSimpChinese = 25,
1157: kTextEncodingMacGeez = 28,
1158: kTextEncodingMacEastEurRoman = 29,
1159: kTextEncodingMacUninterp = 32
1160: };
1161:
1162: /* TextEncodingVariant type & values */
1163: typedef UInt32 TextEncodingVariant;
1164:
1165: enum {
1166: /* Default TextEncodingVariant, for any TextEncodingBase*/
1167: kTextEncodingDefaultVariant = 0, /* Variants of kTextEncodingMacIcelandic */
1168: kMacIcelandicStandardVariant = 0, /* 0xBB & 0xBC are fem./masc. ordinal indicators*/
1169: kMacIcelandicTrueTypeVariant = 1, /* 0xBB & 0xBC are fi/fl ligatures*/
1170: /* Variants of kTextEncodingMacJapanese*/
1171: kMacJapaneseStandardVariant = 0,
1172: kMacJapaneseStdNoVerticalsVariant = 1,
1173: kMacJapaneseBasicVariant = 2,
1174: kMacJapanesePostScriptScrnVariant = 3,
1175: kMacJapanesePostScriptPrintVariant = 4,
1176: kMacJapaneseVertAtKuPlusTenVariant = 5, /* Variant options for most Japanese encodings (MacJapanese, ShiftJIS, EUC-JP, ISO 2022-JP) */
1177: /* These can be OR-ed into the variant value in any combination*/
1178: kJapaneseNoOneByteKanaOption = 0x20,
1179: kJapaneseUseAsciiBackslashOption = 0x40, /* Variants of kTextEncodingMacArabic*/
1180: kMacArabicStandardVariant = 0, /* 0xC0 is 8-spoke asterisk, 0x2A & 0xAA are asterisk (e.g. Cairo)*/
1181: kMacArabicTrueTypeVariant = 1, /* 0xC0 is asterisk, 0x2A & 0xAA are multiply signs (e.g. Baghdad)*/
1182: kMacArabicThuluthVariant = 2, /* 0xC0 is Arabic five-point star, 0x2A & 0xAA are multiply signs*/
1183: kMacArabicAlBayanVariant = 3, /* 8-spoke asterisk, multiply sign, Koranic ligatures & parens*/
1184: /* Variants of kTextEncodingMacFarsi*/
1185: kMacFarsiStandardVariant = 0, /* 0xC0 is 8-spoke asterisk, 0x2A & 0xAA are asterisk (e.g. Tehran)*/
1186: kMacFarsiTrueTypeVariant = 1, /* asterisk, multiply signs, Koranic ligatures, geometric shapes*/
1187: /* Variants of kTextEncodingMacHebrew*/
1188: kMacHebrewStandardVariant = 0,
1189: kMacHebrewFigureSpaceVariant = 1, /* Variants of Unicode & ISO 10646 encodings*/
1190: kUnicodeNoSubset = 0,
1191: kUnicodeNoCompatibilityVariant = 1,
1192: kUnicodeMaxDecomposedVariant = 2,
1193: kUnicodeNoComposedVariant = 3,
1194: kUnicodeNoCorporateVariant = 4, /* Variants of Big-5 encoding*/
1195: kBig5_BasicVariant = 0,
1196: kBig5_StandardVariant = 1, /* 0xC6A1-0xC7FC: kana, Cyrillic, enclosed numerics*/
1197: kBig5_ETenVariant = 2, /* adds kana, Cyrillic, radicals, etc with hi bytes C6-C8,F9*/
1198: /* The following are older names for backward compatibility*/
1199: kJapaneseStandardVariant = 0,
1200: kJapaneseStdNoVerticalsVariant = 1,
1201: kJapaneseBasicVariant = 2,
1202: kJapanesePostScriptScrnVariant = 3,
1203: kJapanesePostScriptPrintVariant = 4,
1204: kJapaneseVertAtKuPlusTenVariant = 5, /* kJapaneseStdNoOneByteKanaVariant = 6, // replaced by kJapaneseNoOneByteKanaOption*/
1205: /* kJapaneseBasicNoOneByteKanaVariant = 7, // replaced by kJapaneseNoOneByteKanaOption */
1206: kHebrewStandardVariant = 0,
1207: kHebrewFigureSpaceVariant = 1
1208: };
1209:
1210: /* TextEncodingFormat type & values */
1211: typedef UInt32 TextEncodingFormat;
1212:
1213: enum {
1214: /* Default TextEncodingFormat for any TextEncodingBase*/
1215: kTextEncodingDefaultFormat = 0, /* Formats for Unicode & ISO 10646*/
1216: kUnicode16BitFormat = 0,
1217: kUnicodeUTF7Format = 1,
1218: kUnicodeUTF8Format = 2,
1219: kUnicode32BitFormat = 3
1220: };
1221:
1222: /* TextEncoding type */
1223: typedef UInt32 TextEncoding;
1224: /* name part selector for GetTextEncodingName*/
1225: typedef UInt32 TextEncodingNameSelector;
1226:
1227: enum {
1228: kTextEncodingFullName = 0,
1229: kTextEncodingBaseName = 1,
1230: kTextEncodingVariantName = 2,
1231: kTextEncodingFormatName = 3
1232: };
1233:
1234: /* Types used in conversion */
1235: struct TextEncodingRun {
1236: ByteOffset offset;
1237: TextEncoding textEncoding;
1238: };
1239: typedef struct TextEncodingRun TextEncodingRun;
1240:
1241: typedef TextEncodingRun * TextEncodingRunPtr;
1242: typedef const TextEncodingRun * ConstTextEncodingRunPtr;
1243: struct ScriptCodeRun {
1244: ByteOffset offset;
1245: ScriptCode script;
1246: };
1247: typedef struct ScriptCodeRun ScriptCodeRun;
1248:
1249: typedef ScriptCodeRun * ScriptCodeRunPtr;
1250: typedef const ScriptCodeRun * ConstScriptCodeRunPtr;
1251: typedef UInt8 * TextPtr;
1252: typedef const UInt8 * ConstTextPtr;
1253: /* Basic types for Unicode characters and strings: */
1254: typedef UniChar * UniCharArrayPtr;
1255: typedef const UniChar * ConstUniCharArrayPtr;
1256: /* enums for TextEncoding Conversion routines*/
1257:
1258: enum {
1259: kTextScriptDontCare = -128,
1260: kTextLanguageDontCare = -128,
1261: kTextRegionDontCare = -128
1262: };
1263:
1264:
1265:
1266: /*
1267: File: UnicodeConverter.h
1268:
1269:
1270: */
1271:
1272: /* Unicode conversion contexts: */
1273: typedef struct OpaqueTextToUnicodeInfo* TextToUnicodeInfo;
1274: typedef struct OpaqueUnicodeToTextInfo* UnicodeToTextInfo;
1275: typedef struct OpaqueUnicodeToTextRunInfo* UnicodeToTextRunInfo;
1276: typedef const TextToUnicodeInfo ConstTextToUnicodeInfo;
1277: typedef const UnicodeToTextInfo ConstUnicodeToTextInfo;
1278: /* UnicodeMapVersion type & values */
1279: typedef SInt32 UnicodeMapVersion;
1280:
1281: enum {
1282: kUnicodeUseLatestMapping = -1,
1283: kUnicodeUseHFSPlusMapping = 4
1284: };
1285:
1286: /* Types used in conversion */
1287: struct UnicodeMapping {
1288: TextEncoding unicodeEncoding;
1289: TextEncoding otherEncoding;
1290: UnicodeMapVersion mappingVersion;
1291: };
1292: typedef struct UnicodeMapping UnicodeMapping;
1293:
1294: typedef UnicodeMapping * UnicodeMappingPtr;
1295: typedef const UnicodeMapping * ConstUnicodeMappingPtr;
1296: /* Control flags for ConvertFromUnicodeToText and ConvertFromTextToUnicode */
1297:
1298: enum {
1299: kUnicodeUseFallbacksBit = 0,
1300: kUnicodeKeepInfoBit = 1,
1301: kUnicodeDirectionalityBits = 2,
1302: kUnicodeVerticalFormBit = 4,
1303: kUnicodeLooseMappingsBit = 5,
1304: kUnicodeStringUnterminatedBit = 6,
1305: kUnicodeTextRunBit = 7,
1306: kUnicodeKeepSameEncodingBit = 8
1307: };
1308:
1309:
1310: enum {
1311: kUnicodeUseFallbacksMask = 1L << kUnicodeUseFallbacksBit,
1312: kUnicodeKeepInfoMask = 1L << kUnicodeKeepInfoBit,
1313: kUnicodeDirectionalityMask = 3L << kUnicodeDirectionalityBits,
1314: kUnicodeVerticalFormMask = 1L << kUnicodeVerticalFormBit,
1315: kUnicodeLooseMappingsMask = 1L << kUnicodeLooseMappingsBit,
1316: kUnicodeStringUnterminatedMask = 1L << kUnicodeStringUnterminatedBit,
1317: kUnicodeTextRunMask = 1L << kUnicodeTextRunBit,
1318: kUnicodeKeepSameEncodingMask = 1L << kUnicodeKeepSameEncodingBit
1319: };
1320:
1321: /* Values for kUnicodeDirectionality field */
1322:
1323: enum {
1324: kUnicodeDefaultDirection = 0,
1325: kUnicodeLeftToRight = 1,
1326: kUnicodeRightToLeft = 2
1327: };
1328:
1329: /* Directionality masks for control flags */
1330:
1331: enum {
1332: kUnicodeDefaultDirectionMask = kUnicodeDefaultDirection << kUnicodeDirectionalityBits,
1333: kUnicodeLeftToRightMask = kUnicodeLeftToRight << kUnicodeDirectionalityBits,
1334: kUnicodeRightToLeftMask = kUnicodeRightToLeft << kUnicodeDirectionalityBits
1335: };
1336:
1337: /* Control flags for TruncateForUnicodeToText: */
1338: /*
1339: Now TruncateForUnicodeToText uses control flags from the same set as used by
1340: ConvertFromTextToUnicode, ConvertFromUnicodeToText, etc., but only
1341: kUnicodeStringUnterminatedMask is meaningful for TruncateForUnicodeToText.
1342:
1343: Previously two special control flags were defined for TruncateForUnicodeToText:
1344: kUnicodeTextElementSafeBit = 0
1345: kUnicodeRestartSafeBit = 1
1346: However, neither of these was implemented.
1347: Instead of implementing kUnicodeTextElementSafeBit, we now use
1348: kUnicodeStringUnterminatedMask since it accomplishes the same thing and avoids
1349: having special flags just for TruncateForUnicodeToText
1350: Also, kUnicodeRestartSafeBit is unnecessary, since restart-safeness is handled by
1351: setting kUnicodeKeepInfoBit with ConvertFromUnicodeToText.
1352: If TruncateForUnicodeToText is called with one or both of the old special control
1353: flags set (bits 0 or 1), it will not generate a paramErr, but the old bits have no
1354: effect on its operation.
1355: */
1356:
1357: /* Filter bits for filter field in QueryUnicodeMappings and CountUnicodeMappings: */
1358:
1359: enum {
1360: kUnicodeMatchUnicodeBaseBit = 0,
1361: kUnicodeMatchUnicodeVariantBit = 1,
1362: kUnicodeMatchUnicodeFormatBit = 2,
1363: kUnicodeMatchOtherBaseBit = 3,
1364: kUnicodeMatchOtherVariantBit = 4,
1365: kUnicodeMatchOtherFormatBit = 5
1366: };
1367:
1368:
1369: enum {
1370: kUnicodeMatchUnicodeBaseMask = 1L << kUnicodeMatchUnicodeBaseBit,
1371: kUnicodeMatchUnicodeVariantMask = 1L << kUnicodeMatchUnicodeVariantBit,
1372: kUnicodeMatchUnicodeFormatMask = 1L << kUnicodeMatchUnicodeFormatBit,
1373: kUnicodeMatchOtherBaseMask = 1L << kUnicodeMatchOtherBaseBit,
1374: kUnicodeMatchOtherVariantMask = 1L << kUnicodeMatchOtherVariantBit,
1375: kUnicodeMatchOtherFormatMask = 1L << kUnicodeMatchOtherFormatBit
1376: };
1377:
1378: /* Control flags for SetFallbackUnicodeToText */
1379:
1380: enum {
1381: kUnicodeFallbackSequencingBits = 0
1382: };
1383:
1384:
1385: enum {
1386: kUnicodeFallbackSequencingMask = 3L << kUnicodeFallbackSequencingBits
1387: };
1388:
1389: /* values for kUnicodeFallbackSequencing field */
1390:
1391: enum {
1392: kUnicodeFallbackDefaultOnly = 0L,
1393: kUnicodeFallbackCustomOnly = 1L,
1394: kUnicodeFallbackDefaultFirst = 2L,
1395: kUnicodeFallbackCustomFirst = 3L
1396: };
1397:
1398:
1399:
1400: /*
1401: File: Timer.h
1402:
1403:
1404: */
1405:
1406:
1407: enum {
1408: /* high bit of qType is set if task is active */
1409: kTMTaskActive = (1L << 15)
1410: };
1411:
1412: typedef struct TMTask TMTask;
1413: typedef TMTask * TMTaskPtr;
1414: typedef CALLBACK_API( void , TimerProcPtr )(TMTaskPtr tmTaskPtr);
1415: /*
1416: WARNING: TimerProcPtr uses register based parameters under classic 68k
1417: and cannot be written in a high-level language without
1418: the help of mixed mode or assembly glue.
1419: */
1420: typedef REGISTER_UPP_TYPE(TimerProcPtr) TimerUPP;
1421: struct TMTask {
1422: QElemPtr qLink;
1423: short qType;
1424: TimerUPP tmAddr;
1425: long tmCount;
1426: long tmWakeUp;
1427: long tmReserved;
1428: };
1429:
1430:
1431: /*
1432: File: TextCommonPriv.h
1433:
1434:
1435: */
1436:
1437:
1438: /*
1439: -----------------------------------------------------------------------------------------------------------
1440: TextEncoding creation & extraction macros.
1441: Current packed format:
1442: 31 30 29 26 25 16 15 0
1443: |pack| format | variant | base |
1444: |vers| | | |
1445: |2bit| 4 bits | 10 bits | 16 bits |
1446: Unpacked elements
1447: base 15 0
1448: | 0 | 16 bits |
1449: variant 9 0
1450: | 0 | 10 bits |
1451: format 3 0
1452: | 0 | 4 bits |
1453: -----------------------------------------------------------------------------------------------------------
1454: */
1455:
1456: enum {
1457: kTextEncodingVersion = 0
1458: };
1459:
1460:
1461: enum {
1462: kTextEncodingBaseShiftBits = 0, /* <13>*/
1463: kTextEncodingVariantShiftBits = 16, /* <13>*/
1464: kTextEncodingFormatShiftBits = 26, /* <13><16>*/
1465: kTextEncodingVersionShiftBits = 30
1466: };
1467:
1468:
1469:
1470: enum {
1471: kTextEncodingBaseSourceMask = 0x0000FFFF, /* 16 bits <13>*/
1472: kTextEncodingVariantSourceMask = 0x000003FF, /* 10 bits <13><16>*/
1473: kTextEncodingFormatSourceMask = 0x0000000F, /* 4 bits <13><16>*/
1474: kTextEncodingVersionSourceMask = 0x00000003 /* 2 bits*/
1475: };
1476:
1477:
1478: enum {
1479: kTextEncodingBaseMask = kTextEncodingBaseSourceMask << kTextEncodingBaseShiftBits,
1480: kTextEncodingVariantMask = kTextEncodingVariantSourceMask << kTextEncodingVariantShiftBits,
1481: kTextEncodingFormatMask = kTextEncodingFormatSourceMask << kTextEncodingFormatShiftBits,
1482: kTextEncodingVersionMask = kTextEncodingVersionSourceMask << kTextEncodingVersionShiftBits
1483: };
1484:
1485:
1486: enum {
1487: kTextEncodingVersionShifted = (kTextEncodingVersion & kTextEncodingVersionSourceMask) << kTextEncodingVersionShiftBits
1488: };
1489:
1490:
1491: #define CreateTextEncodingPriv(base,variant,format) \
1492: ( ((base & kTextEncodingBaseSourceMask) << kTextEncodingBaseShiftBits) \
1493: | ((variant & kTextEncodingVariantSourceMask) << kTextEncodingVariantShiftBits) \
1494: | ((format & kTextEncodingFormatSourceMask) << kTextEncodingFormatShiftBits) \
1495: | (kTextEncodingVersionShifted) )
1496: #define GetTextEncodingBasePriv(encoding) \
1497: ((encoding & kTextEncodingBaseMask) >> kTextEncodingBaseShiftBits)
1498: #define GetTextEncodingVariantPriv(encoding) \
1499: ((encoding & kTextEncodingVariantMask) >> kTextEncodingVariantShiftBits)
1500: #define GetTextEncodingFormatPriv(encoding) \
1501: ((encoding & kTextEncodingFormatMask) >> kTextEncodingFormatShiftBits)
1502: #define IsMacTextEncoding(encoding) ((encoding & 0x0000FF00L) == 0x00000000L)
1503: #define IsUnicodeTextEncoding(encoding) ((encoding & 0x0000FF00L) == 0x00000100L)
1504: /* TextEncoding used by HFS*/
1505:
1506: enum {
1507: kMacHFSTextEncoding = 0x000000FF
1508: };
1509:
1510:
1511: /*
1512: File: Instrumentation.h
1513:
1514:
1515: */
1516: /*******************************************************************/
1517: /* Types */
1518: /*******************************************************************/
1519: /* Reference to an instrumentation class */
1520: typedef struct InstOpaqueClassRef* InstClassRef;
1521:
1522: /* Aliases to the generic instrumentation class for each type of class */
1523: typedef InstClassRef InstPathClassRef;
1524: typedef InstClassRef InstTraceClassRef;
1525: typedef InstClassRef InstHistogramClassRef;
1526: typedef InstClassRef InstSplitHistogramClassRef;
1527: typedef InstClassRef InstMagnitudeClassRef;
1528: typedef InstClassRef InstGrowthClassRef;
1529: typedef InstClassRef InstTallyClassRef;
1530:
1531: /* Reference to a data descriptor */
1532: typedef struct InstOpaqueDataDescriptorRef* InstDataDescriptorRef;
1533:
1534:
1535: /*******************************************************************/
1536: /* Constant Definitions */
1537: /*******************************************************************/
1538:
1539: /* Reference to the root of the class hierarchy */
1540: #define kInstRootClassRef ( (InstClassRef) -1)
1541:
1542: /* Options used for creating classes */
1543: typedef OptionBits InstClassOptions;
1544:
1545:
1546: enum {
1547: kInstDisableClassMask = 0x00, /* Create the class disabled */
1548: kInstEnableClassMask = 0x01, /* Create the class enabled */
1549:
1550: kInstSummaryTraceClassMask = 0x20 /* Create a summary trace class instead of a regular one */
1551: };
1552:
1553:
1554:
1555: EXTERN_API( Boolean )
1556: EqualString (ConstStr255Param str1,
1557: ConstStr255Param str2,
1558: Boolean caseSensitive,
1559: Boolean diacSensitive);
1560:
1561:
1562:
1563:
1564: /*
1565: File: LowMemPriv.h
1566:
1567:
1568: */
1569:
1570: /* The following replace storage used in low-mem on MacOS: */
1571: extern struct FSVarsRec * gFSMVars;
1572:
1573:
1574: #define LMGetFSMVars() gFSMVars
1575:
1576:
1577:
1578: EXTERN_API( void )
1579: InsTime (QElemPtr tmTaskPtr);
1580: EXTERN_API( void )
1581: PrimeTime (QElemPtr tmTaskPtr,
1582: long count);
1583: EXTERN_API( void )
1584: RmvTime (QElemPtr tmTaskPtr);
1585:
1586:
1587:
1588:
1589: /* PROTOTYPES */
1590:
1591: #if HFS_DIAGNOSTIC
1592: extern void RequireFileLock(FileReference vp, int shareable);
1593: #else
1594: #define RequireFileLock(vp,s)
1595: #endif
1596:
1597:
1598: EXTERN_API( void )
1599: BlockMove (const void * srcPtr,
1600: void * destPtr,
1601: Size byteCount);
1602: EXTERN_API( void )
1603: BlockMoveData (const void * srcPtr,
1604: void * destPtr,
1605: Size byteCount);
1606:
1607: EXTERN_API_C( void )
1608: BlockMoveUncached (const void * srcPtr,
1609: void * destPtr,
1610: Size byteCount);
1611:
1612: EXTERN_API_C( void )
1613: BlockMoveDataUncached (const void * srcPtr,
1614: void * destPtr,
1615: Size byteCount);
1616:
1617: EXTERN_API_C( void )
1618: BlockZero (void * destPtr,
1619: Size byteCount);
1620:
1621: EXTERN_API_C( void )
1622: BlockZeroUncached (void * destPtr,
1623: Size byteCount);
1624:
1625: EXTERN_API( Ptr )
1626: NewPtr (Size byteCount);
1627:
1628: EXTERN_API( Ptr )
1629: NewPtrSys (Size byteCount);
1630:
1631: EXTERN_API( Ptr )
1632: NewPtrClear (Size byteCount);
1633:
1634: EXTERN_API( Ptr )
1635: NewPtrSysClear (Size byteCount);
1636:
1637: EXTERN_API( OSErr )
1638: MemError (void);
1639:
1640: EXTERN_API( void )
1641: DisposePtr (Ptr p);
1642:
1643: EXTERN_API( Size )
1644: GetPtrSize (Ptr p);
1645:
1646: EXTERN_API( void )
1647: SetPtrSize (Ptr p,
1648: Size newSize);
1649:
1650: EXTERN_API( void )
1651: DisposeHandle (Handle h);
1652:
1653: EXTERN_API( void )
1654: SetHandleSize (Handle h,
1655: Size newSize);
1656:
1657: /*
1658: File: DateTimeUtils.h
1659:
1660:
1661: */
1662: EXTERN_API( void )
1663: GetDateTime (unsigned long * secs);
1664:
1665:
1666:
1667: #endif /* __hfs_macos_types__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.