|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: File: CodeFragments.h ! 27: ! 28: Contains: Public Code Fragment Manager Interfaces. ! 29: ! 30: Version: Mac OS 8.1 ! 31: ! 32: DRI: Alan Lillich ! 33: ! 34: Copyright: � 1992-1998 by Apple Computer, Inc., all rights reserved. ! 35: ! 36: Warning: *** APPLE INTERNAL USE ONLY *** ! 37: This file may contain unreleased API's ! 38: ! 39: BuildInfo: Built by: Naga Pappireddi ! 40: With Interfacer: 3.0d9 (PowerPC native) ! 41: From: CodeFragments.i ! 42: Revision: 68 ! 43: Dated: 7/17/98 ! 44: Last change by: ngk ! 45: Last comment: Change cfrg version fields to DeRez using hex ! 46: ! 47: Bugs: Report bugs to Radar component "System Interfaces", "Latest" ! 48: List the version information (from above) in the Problem Description. ! 49: ! 50: */ ! 51: /* ! 52: � ! 53: =========================================================================================== ! 54: The Code Fragment Manager API ! 55: ============================= ! 56: */ ! 57: ! 58: ! 59: #ifndef __CODEFRAGMENTS__ ! 60: #define __CODEFRAGMENTS__ ! 61: ! 62: #ifndef __MACTYPES__ ! 63: #include "mactypes.h" ! 64: #endif ! 65: #ifndef __FILES__ ! 66: #include "files.h" ! 67: #endif ! 68: ! 69: ! 70: ! 71: #if PRAGMA_ONCE ! 72: #pragma once ! 73: #endif ! 74: ! 75: #ifdef __cplusplus ! 76: extern "C" { ! 77: #endif ! 78: ! 79: #if PRAGMA_IMPORT ! 80: #pragma import on ! 81: #endif ! 82: ! 83: #if PRAGMA_STRUCT_ALIGN ! 84: #pragma options align=mac68k ! 85: #elif PRAGMA_STRUCT_PACKPUSH ! 86: #pragma pack(push, 2) ! 87: #elif PRAGMA_STRUCT_PACK ! 88: #pragma pack(2) ! 89: #endif ! 90: ! 91: /* ! 92: � ! 93: =========================================================================================== ! 94: General Types and Constants ! 95: =========================== ! 96: */ ! 97: ! 98: ! 99: ! 100: enum { ! 101: kCFragResourceType = FOUR_CHAR_CODE('cfrg'), ! 102: kCFragResourceID = 0, ! 103: kCFragLibraryFileType = FOUR_CHAR_CODE('shlb'), ! 104: kCFragAllFileTypes = (long)0xFFFFFFFF ! 105: }; ! 106: ! 107: ! 108: typedef OSType CFragArchitecture; ! 109: ! 110: enum { ! 111: kPowerPCCFragArch = FOUR_CHAR_CODE('pwpc'), ! 112: kMotorola68KCFragArch = FOUR_CHAR_CODE('m68k'), ! 113: kAnyCFragArch = 0x3F3F3F3F ! 114: }; ! 115: ! 116: #if TARGET_CPU_PPC ! 117: ! 118: enum { ! 119: kCompiledCFragArch = kPowerPCCFragArch ! 120: }; ! 121: ! 122: #endif /* TARGET_CPU_PPC */ ! 123: ! 124: #if TARGET_CPU_68K ! 125: ! 126: enum { ! 127: kCompiledCFragArch = kMotorola68KCFragArch ! 128: }; ! 129: ! 130: #endif /* TARGET_CPU_68K */ ! 131: ! 132: typedef UInt32 CFragVersionNumber; ! 133: ! 134: enum { ! 135: kNullCFragVersion = 0, ! 136: kWildcardCFragVersion = (long)0xFFFFFFFF ! 137: }; ! 138: ! 139: ! 140: typedef UInt8 CFragUsage; ! 141: ! 142: enum { ! 143: kImportLibraryCFrag = 0, /* Standard CFM import library.*/ ! 144: kApplicationCFrag = 1, /* MacOS application.*/ ! 145: kDropInAdditionCFrag = 2, /* Application or library private extension/plug-in*/ ! 146: kStubLibraryCFrag = 3, /* Import library used for linking only*/ ! 147: kWeakStubLibraryCFrag = 4 /* Import library used for linking only and will be automatically weak linked*/ ! 148: }; ! 149: ! 150: ! 151: ! 152: enum { ! 153: kIsCompleteCFrag = 0, /* A "base" fragment, not an update.*/ ! 154: kFirstCFragUpdate = 1 /* The first update, others are numbered 2, 3, ...*/ ! 155: }; ! 156: ! 157: ! 158: ! 159: enum { ! 160: kCFragGoesToEOF = 0 ! 161: }; ! 162: ! 163: ! 164: ! 165: ! 166: typedef UInt8 CFragLocatorKind; ! 167: ! 168: enum { ! 169: kMemoryCFragLocator = 0, /* Container is already addressable.*/ ! 170: kDataForkCFragLocator = 1, /* Container is in a file's data fork.*/ ! 171: kResourceCFragLocator = 2, /* Container is in a file's resource fork.*/ ! 172: kByteStreamCFragLocator = 3, /* ! Reserved for possible future use!*/ ! 173: kNamedFragmentCFragLocator = 4 /* ! Reserved for possible future use!*/ ! 174: }; ! 175: ! 176: ! 177: /* ! 178: -------------------------------------------------------------------------------------- ! 179: A 'cfrg' resource consists of a header followed by a sequence of variable length ! 180: members. The constant kDefaultCFragNameLen only provides for a legal ANSI declaration ! 181: and for a reasonable display in a debugger. The actual name field is cut to fit. ! 182: There may be "extensions" after the name, the memberSize field includes them. The ! 183: general form of an extension is a 16 bit type code followed by a 16 bit size in bytes. ! 184: Only one standard extension type is defined at present, it is used by SOM's searching ! 185: mechanism. ! 186: */ ! 187: ! 188: ! 189: ! 190: union CFragUsage1Union { /* ! Meaning differs depending on value of "usage".*/ ! 191: UInt32 appStackSize; /* If the fragment is an application. (Not used by CFM!)*/ ! 192: }; ! 193: typedef union CFragUsage1Union CFragUsage1Union; ! 194: ! 195: union CFragUsage2Union { /* ! Meaning differs depending on value of "usage".*/ ! 196: SInt16 appSubdirID; /* If the fragment is an application.*/ ! 197: UInt16 libFlags; /* If the fragment is an import library.*/ ! 198: }; ! 199: typedef union CFragUsage2Union CFragUsage2Union; ! 200: ! 201: enum { ! 202: /* Bit masks for the CFragUsage2Union libFlags variant.*/ ! 203: kCFragLibUsageMapPrivatelyMask = 0x0001 /* Put container in app heap if necessary.*/ ! 204: }; ! 205: ! 206: ! 207: union CFragWhere1Union { /* ! Meaning differs depending on value of "where".*/ ! 208: UInt32 spaceID; /* If the fragment is in memory. (Actually an AddressSpaceID.)*/ ! 209: OSType forkKind; /* If the fragment is in an arbitrary byte stream fork.*/ ! 210: }; ! 211: typedef union CFragWhere1Union CFragWhere1Union; ! 212: ! 213: union CFragWhere2Union { /* ! Meaning differs depending on value of "where".*/ ! 214: UInt16 forkInstance; /* If the fragment is in an arbitrary byte stream fork.*/ ! 215: }; ! 216: typedef union CFragWhere2Union CFragWhere2Union; ! 217: ! 218: enum { ! 219: kDefaultCFragNameLen = 16 ! 220: }; ! 221: ! 222: ! 223: ! 224: struct CFragResourceMember { ! 225: CFragArchitecture architecture; ! 226: UInt16 reservedA; /* ! Must be zero!*/ ! 227: UInt8 reservedB; /* ! Must be zero!*/ ! 228: UInt8 updateLevel; ! 229: CFragVersionNumber currentVersion; ! 230: CFragVersionNumber oldDefVersion; ! 231: CFragUsage1Union uUsage1; ! 232: CFragUsage2Union uUsage2; ! 233: CFragUsage usage; ! 234: CFragLocatorKind where; ! 235: UInt32 offset; ! 236: UInt32 length; ! 237: CFragWhere1Union uWhere1; ! 238: CFragWhere2Union uWhere2; ! 239: UInt16 extensionCount; /* The number of extensions beyond the name.*/ ! 240: UInt16 memberSize; /* Size in bytes, includes all extensions.*/ ! 241: unsigned char name[16]; /* ! Actually a sized PString.*/ ! 242: }; ! 243: typedef struct CFragResourceMember CFragResourceMember; ! 244: typedef CFragResourceMember * CFragResourceMemberPtr; ! 245: ! 246: struct CFragResourceExtensionHeader { ! 247: UInt16 extensionKind; ! 248: UInt16 extensionSize; ! 249: }; ! 250: typedef struct CFragResourceExtensionHeader CFragResourceExtensionHeader; ! 251: typedef CFragResourceExtensionHeader * CFragResourceExtensionHeaderPtr; ! 252: ! 253: struct CFragResourceSearchExtension { ! 254: CFragResourceExtensionHeader header; ! 255: OSType libKind; ! 256: unsigned char qualifiers[1]; /* ! Actually four PStrings.*/ ! 257: }; ! 258: typedef struct CFragResourceSearchExtension CFragResourceSearchExtension; ! 259: typedef CFragResourceSearchExtension * CFragResourceSearchExtensionPtr; ! 260: ! 261: enum { ! 262: kCFragResourceSearchExtensionKind = 0x30EE ! 263: }; ! 264: ! 265: ! 266: ! 267: struct CFragResource { ! 268: UInt32 reservedA; /* ! Must be zero!*/ ! 269: UInt32 reservedB; /* ! Must be zero!*/ ! 270: UInt16 reservedC; /* ! Must be zero!*/ ! 271: UInt16 version; ! 272: UInt32 reservedD; /* ! Must be zero!*/ ! 273: UInt32 reservedE; /* ! Must be zero!*/ ! 274: UInt32 reservedF; /* ! Must be zero!*/ ! 275: UInt32 reservedG; /* ! Must be zero!*/ ! 276: UInt16 reservedH; /* ! Must be zero!*/ ! 277: UInt16 memberCount; ! 278: CFragResourceMember firstMember; ! 279: }; ! 280: typedef struct CFragResource CFragResource; ! 281: typedef CFragResource * CFragResourcePtr; ! 282: typedef CFragResourcePtr * CFragResourceHandle; ! 283: ! 284: enum { ! 285: kCurrCFragResourceVersion = 1 ! 286: }; ! 287: ! 288: ! 289: #define AlignToFour(aValue) (((aValue) + 3) & ~3) ! 290: #define kBaseCFragResourceMemberSize (offsetof ( CFragResourceMember, name ) ) ! 291: #define kBaseCFragResourceSize (offsetof ( CFragResource, firstMember.name ) ) ! 292: #define NextCFragResourceMemberPtr(aMemberPtr) \ ! 293: ((CFragResourceMemberPtr) ((BytePtr)aMemberPtr + aMemberPtr->memberSize)) ! 294: #define FirstCFragResourceExtensionPtr(aMemberPtr) \ ! 295: ((CFragResourceExtensionHeaderPtr) ((BytePtr)aMemberPtr + \ ! 296: AlignToFour ( kBaseCFragResourceMemberSize + \ ! 297: aMemberPtr->name[0] + 1 ) )) ! 298: #define NextCFragResourceExtensionPtr(anExtensionPtr) \ ! 299: ((CFragResourceExtensionHeaderPtr) ((BytePtr)anExtensionPtr + \ ! 300: ((CFragResourceExtensionHeaderPtr)anExtensionPtr)->extensionSize )) ! 301: #define FirstCFragResourceSearchQualifier(searchExtensionPtr) \ ! 302: ((StringPtr) ((BytePtr)searchExtensionPtr + \ ! 303: offsetof ( CFragResourceSearchExtension, qualifiers ) )) ! 304: #define NextCFragResourceSearchQualifier(searchQualifierPtr) \ ! 305: ((StringPtr) ((BytePtr)searchQualifierPtr + searchQualifierPtr[0] + 1)) ! 306: ! 307: typedef struct OpaqueCFragConnectionID* CFragConnectionID; ! 308: typedef struct OpaqueCFragClosureID* CFragClosureID; ! 309: typedef struct OpaqueCFragContainerID* CFragContainerID; ! 310: typedef struct OpaqueCFragContextID* CFragContextID; ! 311: ! 312: typedef UInt32 CFragLoadOptions; ! 313: ! 314: enum { ! 315: kReferenceCFrag = 0x0001, /* Try to use existing copy, increment reference counts.*/ ! 316: kFindCFrag = 0x0002, /* Try find an existing copy, do not increment reference counts.*/ ! 317: kPrivateCFragCopy = 0x0005 /* Prepare a new private copy. (kReferenceCFrag | 0x0004)*/ ! 318: }; ! 319: ! 320: ! 321: ! 322: enum { ! 323: kUnresolvedCFragSymbolAddress = 0 ! 324: }; ! 325: ! 326: ! 327: typedef UInt8 CFragSymbolClass; ! 328: ! 329: enum { ! 330: kCodeCFragSymbol = 0, ! 331: kDataCFragSymbol = 1, ! 332: kTVectorCFragSymbol = 2, ! 333: kTOCCFragSymbol = 3, ! 334: kGlueCFragSymbol = 4 ! 335: }; ! 336: ! 337: ! 338: /* ! 339: � ! 340: =========================================================================================== ! 341: Macros and Functions ! 342: ==================== ! 343: */ ! 344: ! 345: ! 346: #define CFragHasFileLocation(where) \ ! 347: ( ((where) == kDataForkCFragLocator) || ((where) == kResourceCFragLocator) ) ! 348: ! 349: EXTERN_API( OSErr ) ! 350: GetSharedLibrary (ConstStr63Param libName, ! 351: CFragArchitecture archType, ! 352: CFragLoadOptions loadFlags, ! 353: CFragConnectionID * connID, ! 354: Ptr * mainAddr, ! 355: Str255 errMessage) THREEWORDINLINE(0x3F3C, 0x0001, 0xAA5A); ! 356: ! 357: EXTERN_API( OSErr ) ! 358: GetDiskFragment (const FSSpec * fileSpec, ! 359: UInt32 offset, ! 360: UInt32 length, ! 361: ConstStr63Param fragName, ! 362: CFragLoadOptions loadFlags, ! 363: CFragConnectionID * connID, ! 364: Ptr * mainAddr, ! 365: Str255 errMessage) THREEWORDINLINE(0x3F3C, 0x0002, 0xAA5A); ! 366: ! 367: EXTERN_API( OSErr ) ! 368: GetMemFragment (void * memAddr, ! 369: UInt32 length, ! 370: ConstStr63Param fragName, ! 371: CFragLoadOptions loadFlags, ! 372: CFragConnectionID * connID, ! 373: Ptr * mainAddr, ! 374: Str255 errMessage) THREEWORDINLINE(0x3F3C, 0x0003, 0xAA5A); ! 375: ! 376: EXTERN_API( OSErr ) ! 377: CloseConnection (CFragConnectionID * connID) THREEWORDINLINE(0x3F3C, 0x0004, 0xAA5A); ! 378: ! 379: EXTERN_API( OSErr ) ! 380: FindSymbol (CFragConnectionID connID, ! 381: ConstStr255Param symName, ! 382: Ptr * symAddr, ! 383: CFragSymbolClass * symClass) THREEWORDINLINE(0x3F3C, 0x0005, 0xAA5A); ! 384: ! 385: EXTERN_API( OSErr ) ! 386: CountSymbols (CFragConnectionID connID, ! 387: long * symCount) THREEWORDINLINE(0x3F3C, 0x0006, 0xAA5A); ! 388: ! 389: EXTERN_API( OSErr ) ! 390: GetIndSymbol (CFragConnectionID connID, ! 391: long symIndex, ! 392: Str255 symName, ! 393: Ptr * symAddr, ! 394: CFragSymbolClass * symClass) THREEWORDINLINE(0x3F3C, 0x0007, 0xAA5A); ! 395: ! 396: ! 397: /* ! 398: � ! 399: =========================================================================================== ! 400: Initialization & Termination Routines ! 401: ===================================== ! 402: */ ! 403: ! 404: ! 405: /* ! 406: ----------------------------------------------------------------------------------------- ! 407: A fragment's initialization and termination routines are called when a new incarnation of ! 408: the fragment is created or destroyed, respectively. Exactly when this occurs depends on ! 409: what kinds of section sharing the fragment has and how the fragment is prepared. Import ! 410: libraries have at most one incarnation per process. Fragments prepared with option ! 411: kPrivateCFragCopy may have many incarnations per process. ! 412: The initialization function is passed a pointer to an initialization information structure ! 413: and returns an OSErr. If an initialization function returns a non-zero value the entire ! 414: closure of which it is a part fails. The C prototype for an initialization function is: ! 415: OSErr CFragInitFunction ( const CFragInitBlock * initBlock ); ! 416: The termination procedure takes no parameters and returns nothing. The C prototype for a ! 417: termination procedure is: ! 418: void CFragTermProcedure ( void ); ! 419: Note that since the initialization and termination routines are themselves "CFM"-style ! 420: routines whether or not they have the "pascal" keyword is irrelevant. ! 421: */ ! 422: ! 423: ! 424: /* ! 425: ----------------------------------------------------------------------------------------- ! 426: ! Note: ! 427: ! The "System7" portion of these type names was introduced during the evolution towards ! 428: ! the now defunct Copland version of Mac OS. Copland was to be called System 8 and there ! 429: ! were slightly different types for System 7 and System 8. The "generic" type names were ! 430: ! conditionally defined for the desired target system. ! 431: ! Always use the generic types, e.g. CFragInitBlock! The "System7" names have been kept ! 432: ! only to avoid perturbing code that (improperly) used the target specific type. ! 433: */ ! 434: ! 435: ! 436: ! 437: struct CFragSystem7MemoryLocator { ! 438: LogicalAddress address; ! 439: UInt32 length; ! 440: Boolean inPlace; ! 441: UInt8 reservedA; /* ! Must be zero!*/ ! 442: UInt16 reservedB; /* ! Must be zero!*/ ! 443: }; ! 444: typedef struct CFragSystem7MemoryLocator CFragSystem7MemoryLocator; ! 445: ! 446: struct CFragSystem7DiskFlatLocator { ! 447: FSSpecPtr fileSpec; ! 448: UInt32 offset; ! 449: UInt32 length; ! 450: }; ! 451: typedef struct CFragSystem7DiskFlatLocator CFragSystem7DiskFlatLocator; ! 452: /* ! This must have a file specification at the same offset as a disk flat locator!*/ ! 453: ! 454: struct CFragSystem7SegmentedLocator { ! 455: FSSpecPtr fileSpec; ! 456: OSType rsrcType; ! 457: SInt16 rsrcID; ! 458: UInt16 reservedA; /* ! Must be zero!*/ ! 459: }; ! 460: typedef struct CFragSystem7SegmentedLocator CFragSystem7SegmentedLocator; ! 461: ! 462: struct CFragSystem7Locator { ! 463: SInt32 where; ! 464: union { ! 465: CFragSystem7DiskFlatLocator onDisk; ! 466: CFragSystem7MemoryLocator inMem; ! 467: CFragSystem7SegmentedLocator inSegs; ! 468: } u; ! 469: }; ! 470: typedef struct CFragSystem7Locator CFragSystem7Locator; ! 471: typedef CFragSystem7Locator * CFragSystem7LocatorPtr; ! 472: ! 473: struct CFragSystem7InitBlock { ! 474: CFragContextID contextID; ! 475: CFragClosureID closureID; ! 476: CFragConnectionID connectionID; ! 477: CFragSystem7Locator fragLocator; ! 478: StringPtr libName; ! 479: UInt32 reservedA; /* ! Must be zero!*/ ! 480: }; ! 481: typedef struct CFragSystem7InitBlock CFragSystem7InitBlock; ! 482: typedef CFragSystem7InitBlock * CFragSystem7InitBlockPtr; ! 483: ! 484: typedef CFragSystem7InitBlock CFragInitBlock; ! 485: typedef CFragSystem7InitBlockPtr CFragInitBlockPtr; ! 486: /* These init/term routine types are only of value to CFM itself.*/ ! 487: typedef CALLBACK_API_C( OSErr , CFragInitFunction )(const CFragInitBlock *initBlock); ! 488: typedef CALLBACK_API_C( void , CFragTermProcedure )(void ); ! 489: /* ! 490: � ! 491: =========================================================================================== ! 492: Old Name Spellings ! 493: ================== ! 494: */ ! 495: ! 496: ! 497: /* ! 498: ------------------------------------------------------------------------------------------- ! 499: We've tried to reduce the risk of name collisions in the future by introducing the phrase ! 500: "CFrag" into constant and type names. The old names are defined below in terms of the new. ! 501: */ ! 502: ! 503: ! 504: ! 505: enum { ! 506: kLoadCFrag = kReferenceCFrag ! 507: }; ! 508: ! 509: ! 510: #if OLDROUTINENAMES ! 511: #define IsFileLocation CFragHasFileLocation ! 512: typedef CFragConnectionID ConnectionID; ! 513: typedef CFragLoadOptions LoadFlags; ! 514: typedef CFragSymbolClass SymClass; ! 515: typedef CFragInitBlock InitBlock; ! 516: typedef CFragInitBlockPtr InitBlockPtr; ! 517: typedef CFragSystem7MemoryLocator MemFragment; ! 518: typedef CFragSystem7DiskFlatLocator DiskFragment; ! 519: typedef CFragSystem7SegmentedLocator SegmentedFragment; ! 520: typedef CFragSystem7Locator FragmentLocator; ! 521: typedef CFragSystem7LocatorPtr FragmentLocatorPtr; ! 522: typedef CFragSystem7MemoryLocator CFragHFSMemoryLocator; ! 523: typedef CFragSystem7DiskFlatLocator CFragHFSDiskFlatLocator; ! 524: typedef CFragSystem7SegmentedLocator CFragHFSSegmentedLocator; ! 525: typedef CFragSystem7Locator CFragHFSLocator; ! 526: typedef CFragSystem7LocatorPtr CFragHFSLocatorPtr; ! 527: ! 528: enum { ! 529: kPowerPCArch = kPowerPCCFragArch, ! 530: kMotorola68KArch = kMotorola68KCFragArch, ! 531: kAnyArchType = kAnyCFragArch, ! 532: kNoLibName = 0, ! 533: kNoConnectionID = 0, ! 534: kLoadLib = kLoadCFrag, ! 535: kFindLib = kFindCFrag, ! 536: kNewCFragCopy = kPrivateCFragCopy, ! 537: kLoadNewCopy = kPrivateCFragCopy, ! 538: kUseInPlace = 0x80, ! 539: kCodeSym = kCodeCFragSymbol, ! 540: kDataSym = kDataCFragSymbol, ! 541: kTVectSym = kTVectorCFragSymbol, ! 542: kTOCSym = kTOCCFragSymbol, ! 543: kGlueSym = kGlueCFragSymbol, ! 544: kInMem = kMemoryCFragLocator, ! 545: kOnDiskFlat = kDataForkCFragLocator, ! 546: kOnDiskSegmented = kResourceCFragLocator, ! 547: kIsLib = kImportLibraryCFrag, ! 548: kIsApp = kApplicationCFrag, ! 549: kIsDropIn = kDropInAdditionCFrag, ! 550: kFullLib = kIsCompleteCFrag, ! 551: kUpdateLib = kFirstCFragUpdate, ! 552: kWholeFork = kCFragGoesToEOF, ! 553: kCFMRsrcType = kCFragResourceType, ! 554: kCFMRsrcID = kCFragResourceID, ! 555: kSHLBFileType = kCFragLibraryFileType, ! 556: kUnresolvedSymbolAddress = kUnresolvedCFragSymbolAddress ! 557: }; ! 558: ! 559: ! 560: enum { ! 561: kPowerPC = kPowerPCCFragArch, ! 562: kMotorola68K = kMotorola68KCFragArch ! 563: }; ! 564: ! 565: #endif /* OLDROUTINENAMES */ ! 566: ! 567: ! 568: ! 569: ! 570: ! 571: ! 572: #if PRAGMA_STRUCT_ALIGN ! 573: #pragma options align=reset ! 574: #elif PRAGMA_STRUCT_PACKPUSH ! 575: #pragma pack(pop) ! 576: #elif PRAGMA_STRUCT_PACK ! 577: #pragma pack() ! 578: #endif ! 579: ! 580: #ifdef PRAGMA_IMPORT_OFF ! 581: #pragma import off ! 582: #elif PRAGMA_IMPORT ! 583: #pragma import reset ! 584: #endif ! 585: ! 586: #ifdef __cplusplus ! 587: } ! 588: #endif ! 589: ! 590: #endif /* __CODEFRAGMENTS__ */ ! 591:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.