/* File: Components.h Contains: Component Manager API Copyright: © 1991-1993 by Apple Computer, Inc., all rights reserved. Change History (most recent first): 9/22/93 JDR corrected misspelling of componentHasMultiplePlatforms 9/14/93 JDR Updated for native component support, and a few other minor things for version 3 component manager. <5> 6/2/93 DTY Synch up with NuReality version of this file. <4> 2/24/93 JDR Added kAppleManufacturer. <3> 11/13/92 JDR Updated to the QuickTime 1.5 release of the interfaces. General rearrangement of the stuff too. <2> 11/23/91 YK Removed gestaltComponentMgr. It's already in GestaltEqu.h. <1> 11/21/91 JH first checked in */ #ifndef __COMPONENTS__ #define __COMPONENTS__ #ifndef __TYPES__ #include #endif enum { #define kAppleManufacturer 'appl' /*Apple supplied components*/ #define kComponentResourceType 'thng' /*a components resource type*/ kSmallestArray = 1, kAnyComponentType = 0, kAnyComponentSubType = 0, kAnyComponentManufacturer = 0, kAnyComponentFlagsMask = 0, cmpWantsRegisterMessage = 1L<<31, kComponentOpenSelect = -1, /*ComponentInstance for this open*/ kComponentCloseSelect = -2, /*ComponentInstance for this close*/ kComponentCanDoSelect = -3, /*selector # being queried*/ kComponentVersionSelect = -4, /*no params*/ kComponentRegisterSelect = -5, /*no params*/ kComponentTargetSelect = -6, /*ComponentInstance for top of call chain*/ kComponentUnregisterSelect = -7, /*no params*/ /*Component Resource Extension flags*/ componentDoAutoVersion = (1<<0), componentWantsUnregister = (1<<1), componentAutoVersionIncludeFlags = (1<<2), componentHasMultiplePlatforms = (1<<3), /*Set Default Component flags*/ defaultComponentIdentical = 0, defaultComponentAnyFlags = (1<<0), defaultComponentAnyManufacturer = (1<<1), defaultComponentAnySubType = (1<<2), defaultComponentAnyFlagsAnyManufacturer = (defaultComponentAnyFlags+defaultComponentAnyManufacturer), defaultComponentAnyFlagsAnyManufacturerAnySubType = (defaultComponentAnyFlags+defaultComponentAnyManufacturer+defaultComponentAnySubType) }; struct ComponentDescription { 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*/ }; typedef struct ComponentDescription ComponentDescription; struct ResourceSpec { OSType resType; /*4-byte code*/ short resId; }; typedef struct ResourceSpec ResourceSpec; struct ComponentResource { ComponentDescription cd; /*Registration parameters*/ ResourceSpec component; /*resource where Component code is found*/ ResourceSpec componentName; /*name string resource*/ ResourceSpec componentInfo; /*info string resource*/ ResourceSpec componentIcon; /*icon resource*/ }; typedef struct ComponentResource ComponentResource; typedef ComponentResource *ComponentResourcePtr, **ComponentResourceHandle; struct ComponentPlatformInfo { long componentFlags; /*flags of Component*/ ResourceSpec component; /*resource where Component code is found*/ short platformType; /*gestaltSysArchitecture result*/ }; typedef struct ComponentPlatformInfo ComponentPlatformInfo; struct ComponentResourceExtension { long componentVersion; /*version of Component*/ long componentRegisterFlags; /*flags for registration*/ short componentIconFamily; /*resource id of Icon Family*/ }; typedef struct ComponentResourceExtension ComponentResourceExtension; struct ComponentPlatformInfoArray { long count; ComponentPlatformInfo platformArray[1]; }; typedef struct ComponentPlatformInfoArray ComponentPlatformInfoArray; struct ExtComponentResource { ComponentDescription cd; /*Registration parameters*/ ResourceSpec component; /*resource where Component code is found*/ ResourceSpec componentName; /*name string resource*/ ResourceSpec componentInfo; /*info string resource*/ ResourceSpec componentIcon; /*icon resource*/ long componentVersion; /*version of Component*/ long componentRegisterFlags; /*flags for registration*/ short componentIconFamily; /*resource id of Icon Family*/ long count; /*elements in platformArray*/ ComponentPlatformInfo platformArray[1]; }; typedef struct ExtComponentResource ExtComponentResource; struct ComponentParameters { unsigned char flags; /*call modifiers: sync/async, deferred, immed, etc*/ unsigned char paramSize; /*size in bytes of actual parameters passed to this call*/ short what; /*routine selector, negative for Component management calls*/ long params[kSmallestArray]; /*actual parameters for the indicated routine*/ }; typedef struct ComponentParameters ComponentParameters; struct ComponentRecord { long data[1]; }; typedef struct ComponentRecord ComponentRecord; typedef ComponentRecord *Component; struct ComponentInstanceRecord { long data[1]; }; typedef struct ComponentInstanceRecord ComponentInstanceRecord; typedef ComponentInstanceRecord *ComponentInstance; typedef long ComponentResult; #pragma procname ComponentRoutine typedef pascal ComponentResult (*ComponentRoutineProcPtr)(ComponentParameters *cp,Handle componentStorage); typedef ComponentRoutineProcPtr ComponentRoutine; #pragma procname ComponentFunction typedef pascal ComponentResult (*ComponentFunctionProcPtr)(void); typedef ComponentFunctionProcPtr ComponentFunction; #define ComponentCallNow( callNumber, paramSize ) \ {0x2F3C,paramSize,callNumber,0x7000,0xA82A} #ifdef __cplusplus extern "C" { #endif /******************************************************** * Component Database Add, Delete, and Query Routines ********************************************************/ pascal Component RegisterComponent(ComponentDescription *cd,ComponentRoutineProcPtr componentEntryPoint, short global,Handle componentName,Handle componentInfo,Handle componentIcon) = {0x7001,0xA82A}; pascal Component RegisterComponentResource(ComponentResourceHandle tr,short global) = {0x7012,0xA82A}; pascal OSErr UnregisterComponent(Component aComponent) = {0x7002,0xA82A}; pascal Component FindNextComponent(Component aComponent,ComponentDescription *looking) = {0x7004,0xA82A}; pascal long CountComponents(ComponentDescription *looking) = {0x7003,0xA82A}; pascal OSErr GetComponentInfo(Component aComponent,ComponentDescription *cd, Handle componentName,Handle componentInfo,Handle componentIcon) = {0x7005,0xA82A}; pascal long GetComponentListModSeed(void) = {0x7006,0xA82A}; /******************************************************** * Component Instance Allocation and dispatch routines ********************************************************/ pascal ComponentInstance OpenComponent(Component aComponent) = {0x7007,0xA82A}; pascal OSErr CloseComponent(ComponentInstance aComponentInstance) = {0x7008,0xA82A}; pascal OSErr GetComponentInstanceError(ComponentInstance aComponentInstance) = {0x700A,0xA82A}; /*direct calls to the Components*/ pascal long ComponentFunctionImplemented(ComponentInstance ci,short ftnNumber) = {0x2F3C,0x2,0xFFFD,0x7000,0xA82A}; pascal long GetComponentVersion(ComponentInstance ci) = {0x2F3C,0x0,0xFFFC,0x7000,0xA82A}; pascal long ComponentSetTarget(ComponentInstance ci,ComponentInstance target) = {0x2F3C,0x4,0xFFFA,0x7000,0xA82A}; #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif /******************************************************** * Component Management routines ********************************************************/ pascal void SetComponentInstanceError(ComponentInstance aComponentInstance, OSErr theError) = {0x700B,0xA82A}; pascal long GetComponentRefcon(Component aComponent) = {0x7010,0xA82A}; pascal void SetComponentRefcon(Component aComponent,long theRefcon) = {0x7011,0xA82A}; pascal short OpenComponentResFile(Component aComponent) = {0x7015,0xA82A}; pascal OSErr CloseComponentResFile(short refnum) = {0x7018,0xA82A}; /******************************************************** * Component Instance Management routines ********************************************************/ pascal Handle GetComponentInstanceStorage(ComponentInstance aComponentInstance) = {0x700C,0xA82A}; pascal void SetComponentInstanceStorage(ComponentInstance aComponentInstance,Handle theStorage) = {0x700D,0xA82A}; pascal long GetComponentInstanceA5(ComponentInstance aComponentInstance) = {0x700E,0xA82A}; pascal void SetComponentInstanceA5(ComponentInstance aComponentInstance,long theA5) = {0x700F,0xA82A}; pascal long CountComponentInstances(Component aComponent) = {0x7013,0xA82A}; /*useful helper routines for convenient method dispatching*/ pascal long CallComponentFunction(ComponentParameters *params,ComponentFunctionProcPtr func) = {0x70FF,0xA82A}; pascal long CallComponentFunctionWithStorage(Handle storage,ComponentParameters *params, ComponentFunctionProcPtr func) = {0x70FF,0xA82A}; pascal long DelegateComponentCall(ComponentParameters *originalParams,ComponentInstance ci) = {0x7024,0xA82A}; #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif pascal OSErr SetDefaultComponent(Component aComponent,short flags) = {0x701E,0xA82A}; pascal ComponentInstance OpenDefaultComponent( OSType componentType, OSType componentSubType ) = {0x7021,0xA82A}; pascal Component CaptureComponent(Component capturedComponent,Component capturingComponent) = {0x701C,0xA82A}; pascal OSErr UncaptureComponent(Component aComponent) = {0x701D,0xA82A}; pascal long RegisterComponentResourceFile(short resRefNum, short global) = {0x7014,0xA82A}; pascal OSErr GetComponentIconSuite(Component aComponent, Handle *iconSuite) = {0x7029,0xA82A}; #ifdef __cplusplus } #endif #endif