mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-11-07 15:04:38 +00:00
160 lines
4.6 KiB
C
160 lines
4.6 KiB
C
|
/*
|
|||
|
File: Private Thing Manager.h
|
|||
|
|
|||
|
Copyright: <EFBFBD> 1990-1993 by Apple Computer, Inc., all rights reserved.
|
|||
|
|
|||
|
Change History (most recent first):
|
|||
|
|
|||
|
<SM5> 8/5/93 JDR integrate component mgr from reality
|
|||
|
<SM4> 7/21/93 RC House Cleaning from Reality
|
|||
|
<6> 7/16/93 JDR Added SupportNativeComponents and kComponentIsNative.
|
|||
|
<5> 6/13/93 JDR Rolled in the ComponentMgr sources from QuickTime 1.6.
|
|||
|
<4> 11/12/92 JDR Created kComponentInitialTableEntries which was set to 32
|
|||
|
entries in System 7.1, but I cut it back to only 16 to help save
|
|||
|
some RAM for the general user.
|
|||
|
<3> 12/12/91 DTY Get rid of the spaces in the file names
|
|||
|
<2> 12/5/91 YK Rolled in QuickTime GM:
|
|||
|
grow cmpnt table by smaller steps to preserve system heap
|
|||
|
<8> 9/25/91 BAL Added an internal flag to mark cloned app-heap compononents as
|
|||
|
subordinate to their sys heap parents.
|
|||
|
<7> 5/18/91 dvb Thing->Component
|
|||
|
<6> 5/2/91 BAL overlap rtDesc.FlagsMask and rtRefcon again.
|
|||
|
<5> 4/1/91 MK make rtRefcon and rtFlagsMask separate again
|
|||
|
<4> 3/28/91 BAL Do some file management. Added parentThing and Captured flag.
|
|||
|
<3> 2/21/91 MK slime some globals for codec manager
|
|||
|
<2> 2/16/91 BAL Added InitThingManager call.
|
|||
|
<3> 12/30/90 bal changed name to thing manager
|
|||
|
<2> 10/06/90 dvb Make it work
|
|||
|
|
|||
|
To Do:
|
|||
|
*/
|
|||
|
|
|||
|
/* Private Thing Manager.h
|
|||
|
Internal Interface to the Movies Thing Manager
|
|||
|
|
|||
|
by Jim Batson, Bruce Leak, David Van Brink
|
|||
|
Copyright 1990 Apple Computer, Inc. All rights reserved.
|
|||
|
*/
|
|||
|
|
|||
|
#include <files.h>
|
|||
|
#ifdef SupportNativeComponents
|
|||
|
#include "FragLoad.h"
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _PrivateThingManager_
|
|||
|
#define _PrivateThingManager_
|
|||
|
|
|||
|
typedef long Component;
|
|||
|
typedef long ComponentInstance;
|
|||
|
|
|||
|
typedef short rtFileNum;
|
|||
|
|
|||
|
rtFileNum AddComponentResFile( Handle h );
|
|||
|
OSErr RemoveComponentResFile( rtFileNum fn );
|
|||
|
pascal short _FSpOpenResFile ( FSSpec* spec, char permission );
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
rtfCaptured = 1,
|
|||
|
rtfChild = 2,
|
|||
|
rtfAutoVersion = 4,
|
|||
|
rtfHasIconSuite = 8, // this flag could be done away with if necessary
|
|||
|
rtfWantsUnregister = 16,
|
|||
|
rtfHasBeenOpened = 32, // for optimizing unregister messages
|
|||
|
rtfAutoVersionUseFlags = 64, // flags matter during auto version stuff
|
|||
|
rtfCodeFragment = 128 // this is a code fragment for PowerPC
|
|||
|
} rtFlagsType;
|
|||
|
|
|||
|
#define kComponentNeedsRegisterKiss (1L<<31)
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
OSType componentType; /* A unique 4-byte code indentifying the command set */
|
|||
|
OSType componentSubType; /* Particular flavor of this instance */
|
|||
|
OSType componentManufacturer; /* Vendor indentification */
|
|||
|
unsigned long componentFlags; /* 8 each for Component,Type,SubType,Manuf/revision */
|
|||
|
unsigned long componentFlagsMask; /* Mask for specifying which flags to consider in search, zero during registration */
|
|||
|
} ComponentDescription;
|
|||
|
|
|||
|
typedef struct RegisteredComponent
|
|||
|
{
|
|||
|
void *rtRoutine;
|
|||
|
ComponentDescription rtDesc;
|
|||
|
/*long rtRefcon; */ /* overlaps previous struct */
|
|||
|
struct RegisteredComponent *rtParent;
|
|||
|
Handle rtNameHand;
|
|||
|
Handle rtInfoHand;
|
|||
|
Handle rtIconHand;
|
|||
|
unsigned char rtFlags;
|
|||
|
unsigned char rtEntryUseCount;
|
|||
|
short rtReferenceCount;
|
|||
|
short rtFileNumber;
|
|||
|
short rtResourceID;
|
|||
|
long rtResourceType;
|
|||
|
long rtLocalA5;
|
|||
|
struct RegisteredComponent *rtNext;
|
|||
|
Handle rtRoutineHandle; /* don't trust RecoverHandle */
|
|||
|
#ifdef SupportNativeComponents
|
|||
|
ConnectionID rtConnectionID;
|
|||
|
#endif
|
|||
|
} RegisteredComponent, *RegisteredComponentPtr;
|
|||
|
|
|||
|
|
|||
|
typedef struct RegisteredComponentInstance
|
|||
|
{
|
|||
|
RegisteredComponentPtr rtiEntry;
|
|||
|
unsigned char rtiFlags;
|
|||
|
unsigned char rtiEntryUseCount;
|
|||
|
short rtiError;
|
|||
|
Handle rtiStorage;
|
|||
|
/*long rtiQueuedCalls;*/
|
|||
|
long rtiSwitchedA5;
|
|||
|
} RegisteredComponentInstance, *RegisteredComponentInstancePtr;
|
|||
|
|
|||
|
|
|||
|
#ifndef __COMPONENTS__
|
|||
|
#include "Components.h"
|
|||
|
#endif __COMPONENTS__
|
|||
|
|
|||
|
typedef struct rtFileOld
|
|||
|
{
|
|||
|
short referenceCount;
|
|||
|
FSSpec spec;
|
|||
|
} rtFileOld;
|
|||
|
|
|||
|
typedef struct rtFile
|
|||
|
{
|
|||
|
short referenceCount;
|
|||
|
short vRefNum;
|
|||
|
long fileID;
|
|||
|
} rtFile;
|
|||
|
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
RegisteredComponentInstance *rtInstanceTable;
|
|||
|
long rtModSeed;
|
|||
|
long rtReservedForCodecManager;
|
|||
|
short rtInstanceTableUsedCount;
|
|||
|
short rtInstanceTableTotalCount;
|
|||
|
short rtFileUsedCount;
|
|||
|
short rtFileTotalCount;
|
|||
|
short rtTableEntryCount;
|
|||
|
Boolean hasMoveHLo;
|
|||
|
Boolean rtReserved;
|
|||
|
RegisteredComponent *rtTable;
|
|||
|
RegisteredComponent *rtUsedChain;
|
|||
|
RegisteredComponent *rtFreeChain;
|
|||
|
rtFile *rtFileTable;
|
|||
|
} ComponentManagerGlobalsRecord;
|
|||
|
|
|||
|
#define ComponentManagerLowMem 0x028A
|
|||
|
#define ComponentManagerGlobals (*(ComponentManagerGlobalsRecord**)ComponentManagerLowMem)
|
|||
|
|
|||
|
#define kComponentAllocationSize 8
|
|||
|
#define kComponentInstanceAllocationSize 32
|
|||
|
#define kComponentFileAllocationSize 1
|
|||
|
|
|||
|
void doComponentSearch (void);
|
|||
|
|
|||
|
#endif _PrivateThingManager_
|