/* File: Components.h Contains: Component Manager Interfaces. Version: QuickTime 7.3 Copyright: (c) 2007 (c) 1990-2003 by Apple Computer, Inc., all rights reserved Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/ */ #ifndef __COMPONENTS__ #define __COMPONENTS__ #ifndef __MACERRORS__ #include #endif #ifndef __MACTYPES__ #include #endif #ifndef __MIXEDMODE__ #include #endif #ifndef __FILES__ #include #endif #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=mac68k #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif enum { kAppleManufacturer = FOUR_CHAR_CODE('appl'), /* Apple supplied components */ kComponentResourceType = FOUR_CHAR_CODE('thng'), /* a components resource type */ kComponentAliasResourceType = FOUR_CHAR_CODE('thga') /* component alias resource type */ }; enum { kAnyComponentType = 0, kAnyComponentSubType = 0, kAnyComponentManufacturer = 0, kAnyComponentFlagsMask = 0 }; enum { cmpIsMissing = 1L << 29, cmpWantsRegisterMessage = 1L << 31 }; enum { 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 */ kComponentGetMPWorkFunctionSelect = -8, /* some params */ kComponentExecuteWiredActionSelect = -9, /* QTAtomContainer actionContainer, QTAtom actionAtom, QTCustomActionTargetPtr target, QTEventRecordPtr event */ kComponentGetPublicResourceSelect = -10 /* OSType resourceType, short resourceId, Handle *resource */ }; /* Component Resource Extension flags */ enum { componentDoAutoVersion = (1 << 0), componentWantsUnregister = (1 << 1), componentAutoVersionIncludeFlags = (1 << 2), componentHasMultiplePlatforms = (1 << 3), componentLoadResident = (1 << 4) }; /* Set Default Component flags */ enum { defaultComponentIdentical = 0, defaultComponentAnyFlags = 1, defaultComponentAnyManufacturer = 2, defaultComponentAnySubType = 4, defaultComponentAnyFlagsAnyManufacturer = (defaultComponentAnyFlags + defaultComponentAnyManufacturer), defaultComponentAnyFlagsAnyManufacturerAnySubType = (defaultComponentAnyFlags + defaultComponentAnyManufacturer + defaultComponentAnySubType) }; /* RegisterComponentResource flags */ enum { registerComponentGlobal = 1, registerComponentNoDuplicates = 2, registerComponentAfterExisting = 4, registerComponentAliasesOnly = 8 }; 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; typedef 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; typedef ExtComponentResource * ExtComponentResourcePtr; typedef ExtComponentResourcePtr * ExtComponentResourceHandle; struct ComponentAliasResource { ComponentResource cr; /* Registration parameters */ ComponentDescription aliasCD; /* component alias description */ }; typedef struct ComponentAliasResource ComponentAliasResource; /* Structure received by Component: */ struct ComponentParameters { UInt8 flags; /* call modifiers: sync/async, deferred, immed, etc */ UInt8 paramSize; /* size in bytes of actual parameters passed to this call */ short what; /* routine selector, negative for Component management calls */ long params[1]; /* 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; struct RegisteredComponentRecord { long data[1]; }; typedef struct RegisteredComponentRecord RegisteredComponentRecord; typedef RegisteredComponentRecord * RegisteredComponentRecordPtr; struct RegisteredComponentInstanceRecord { long data[1]; }; typedef struct RegisteredComponentInstanceRecord RegisteredComponentInstanceRecord; typedef RegisteredComponentInstanceRecord * RegisteredComponentInstanceRecordPtr; typedef long ComponentResult; enum { platform68k = 1, /* platform type (response from gestaltComponentPlatform) */ platformPowerPC = 2, /* (when gestaltComponentPlatform is not implemented, use */ platformInterpreted = 3, /* gestaltSysArchitecture) */ platformWin32 = 4, platformPowerPCNativeEntryPoint = 5 }; enum { mpWorkFlagDoWork = (1 << 0), mpWorkFlagDoCompletion = (1 << 1), mpWorkFlagCopyWorkBlock = (1 << 2), mpWorkFlagDontBlock = (1 << 3), mpWorkFlagGetProcessorCount = (1 << 4), mpWorkFlagGetIsRunning = (1 << 6) }; enum { cmpAliasNoFlags = 0, cmpAliasOnlyThisFile = 1 }; struct ComponentMPWorkFunctionHeaderRecord { UInt32 headerSize; UInt32 recordSize; UInt32 workFlags; UInt16 processorCount; UInt8 unused; UInt8 isRunning; }; typedef struct ComponentMPWorkFunctionHeaderRecord ComponentMPWorkFunctionHeaderRecord; typedef ComponentMPWorkFunctionHeaderRecord * ComponentMPWorkFunctionHeaderRecordPtr; typedef CALLBACK_API( ComponentResult , ComponentMPWorkFunctionProcPtr )(void *globalRefCon, ComponentMPWorkFunctionHeaderRecordPtr header); typedef CALLBACK_API( ComponentResult , ComponentRoutineProcPtr )(ComponentParameters *cp, Handle componentStorage); typedef CALLBACK_API( OSErr , GetMissingComponentResourceProcPtr )(Component c, OSType resType, short resID, void *refCon, Handle *resource); typedef STACK_UPP_TYPE(ComponentMPWorkFunctionProcPtr) ComponentMPWorkFunctionUPP; typedef STACK_UPP_TYPE(ComponentRoutineProcPtr) ComponentRoutineUPP; typedef STACK_UPP_TYPE(GetMissingComponentResourceProcPtr) GetMissingComponentResourceUPP; /* The parameter list for each ComponentFunction is unique. It is therefore up to users to create the appropriate procInfo for their own ComponentFunctions where necessary. */ typedef UniversalProcPtr ComponentFunctionUPP; /* * NewComponentFunctionUPP() * * Discussion: * For use in writing a Carbon compliant Component. It is used to * create a ComponentFunctionUPP needed to call * CallComponentFunction in the Components dispatch routine. * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( ComponentFunctionUPP ) NewComponentFunctionUPP( ProcPtr userRoutine, ProcInfoType procInfo); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API(ComponentFunctionUPP ) NewComponentFunctionUPP(ProcPtr userRoutine, ProcInfoType procInfo) { return (ComponentFunctionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), (ProcInfoType)procInfo, GetCurrentArchitecture()); } #else #define NewComponentFunctionUPP(userRoutine, procInfo) ((ComponentFunctionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), (ProcInfoType)procInfo, GetCurrentArchitecture())) #endif #endif /* * DisposeComponentFunctionUPP() * * Discussion: * For use in writing a Carbon compliant Component. It is used to * dispose of a ComponentFunctionUPP created by * NewComponentFunctionUPP. * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) DisposeComponentFunctionUPP(ComponentFunctionUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API(void) DisposeComponentFunctionUPP(ComponentFunctionUPP userUPP) { DisposeRoutineDescriptor(userUPP); } #else #define DisposeComponentFunctionUPP(userUPP) (DisposeRoutineDescriptor(userUPP)) #endif #endif #if TARGET_RT_MAC_CFM /* CallComponentUPP is a global variable exported from InterfaceLib. It is the ProcPtr passed to CallUniversalProc to manually call a component function. */ /* * CallComponentUPP * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ extern UniversalProcPtr CallComponentUPP; #endif #define ComponentCallNow( callNumber, paramSize ) \ FIVEWORDINLINE( 0x2F3C,paramSize,callNumber,0x7000,0xA82A ) /******************************************************** * * * APPLICATION LEVEL CALLS * * * ********************************************************/ /******************************************************** * Component Database Add, Delete, and Query Routines ********************************************************/ /* * RegisterComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( Component ) RegisterComponent( ComponentDescription * cd, ComponentRoutineUPP componentEntryPoint, short global, Handle componentName, Handle componentInfo, Handle componentIcon) TWOWORDINLINE(0x7001, 0xA82A); /* * RegisterComponentResource() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( Component ) RegisterComponentResource( ComponentResourceHandle cr, short global) TWOWORDINLINE(0x7012, 0xA82A); /* * UnregisterComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) UnregisterComponent(Component aComponent) TWOWORDINLINE(0x7002, 0xA82A); /* * FindNextComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( Component ) FindNextComponent( Component aComponent, ComponentDescription * looking) TWOWORDINLINE(0x7004, 0xA82A); /* * CountComponents() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) CountComponents(ComponentDescription * looking) TWOWORDINLINE(0x7003, 0xA82A); /* * GetComponentInfo() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) GetComponentInfo( Component aComponent, ComponentDescription * cd, Handle componentName, Handle componentInfo, Handle componentIcon) TWOWORDINLINE(0x7005, 0xA82A); /* * GetComponentListModSeed() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) GetComponentListModSeed(void) TWOWORDINLINE(0x7006, 0xA82A); /* * GetComponentTypeModSeed() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) GetComponentTypeModSeed(OSType componentType) TWOWORDINLINE(0x702C, 0xA82A); /******************************************************** * Component Instance Allocation and dispatch routines ********************************************************/ /* * OpenAComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) OpenAComponent( Component aComponent, ComponentInstance * ci) TWOWORDINLINE(0x702D, 0xA82A); /* * OpenComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentInstance ) OpenComponent(Component aComponent) TWOWORDINLINE(0x7007, 0xA82A); /* * CloseComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) CloseComponent(ComponentInstance aComponentInstance) TWOWORDINLINE(0x7008, 0xA82A); /* * GetComponentInstanceError() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) GetComponentInstanceError(ComponentInstance aComponentInstance) TWOWORDINLINE(0x700A, 0xA82A); /******************************************************** * Component aliases ********************************************************/ /* * ResolveComponentAlias() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 3.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( Component ) ResolveComponentAlias(Component aComponent) TWOWORDINLINE(0x7020, 0xA82A); /******************************************************** * Component public resources and public string lists ********************************************************/ /* Note: GetComponentPublicResource returns a Handle, not a resource. The caller must dispose it with DisposeHandle. */ /* * GetComponentPublicResource() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 4.0 and later * CarbonLib: in CarbonLib 1.0.2 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSErr ) GetComponentPublicResource( Component aComponent, OSType resourceType, short resourceID, Handle * theResource) TWOWORDINLINE(0x7038, 0xA82A); /* * GetComponentPublicResourceList() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 4.0 and later * CarbonLib: in CarbonLib 1.0.2 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSErr ) GetComponentPublicResourceList( OSType resourceType, short resourceID, long flags, ComponentDescription * cd, GetMissingComponentResourceUPP missingProc, void * refCon, void * atomContainerPtr) TWOWORDINLINE(0x7039, 0xA82A); /* * GetComponentPublicIndString() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 4.0 and later * CarbonLib: in CarbonLib 1.3 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSErr ) GetComponentPublicIndString( Component aComponent, Str255 theString, short strListID, short index) TWOWORDINLINE(0x703A, 0xA82A); /******************************************************** * * * CALLS MADE BY COMPONENTS * * * ********************************************************/ /******************************************************** * Component Management routines ********************************************************/ /* * SetComponentInstanceError() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( void ) SetComponentInstanceError( ComponentInstance aComponentInstance, OSErr theError) TWOWORDINLINE(0x700B, 0xA82A); /* * GetComponentRefcon() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) GetComponentRefcon(Component aComponent) TWOWORDINLINE(0x7010, 0xA82A); /* * SetComponentRefcon() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( void ) SetComponentRefcon( Component aComponent, long theRefcon) TWOWORDINLINE(0x7011, 0xA82A); /* * OpenComponentResFile() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( short ) OpenComponentResFile(Component aComponent) TWOWORDINLINE(0x7015, 0xA82A); /* * OpenAComponentResFile() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) OpenAComponentResFile( Component aComponent, short * resRef) TWOWORDINLINE(0x702F, 0xA82A); /* * CloseComponentResFile() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) CloseComponentResFile(short refnum) TWOWORDINLINE(0x7018, 0xA82A); /* Note: GetComponentResource returns a Handle, not a resource. The caller must dispose it with DisposeHandle. */ /* * GetComponentResource() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 3.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) GetComponentResource( Component aComponent, OSType resType, short resID, Handle * theResource) TWOWORDINLINE(0x7035, 0xA82A); /* * GetComponentIndString() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 3.0 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) GetComponentIndString( Component aComponent, Str255 theString, short strListID, short index) TWOWORDINLINE(0x7036, 0xA82A); /******************************************************** * Component Instance Management routines ********************************************************/ /* * GetComponentInstanceStorage() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( Handle ) GetComponentInstanceStorage(ComponentInstance aComponentInstance) TWOWORDINLINE(0x700C, 0xA82A); /* * SetComponentInstanceStorage() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( void ) SetComponentInstanceStorage( ComponentInstance aComponentInstance, Handle theStorage) TWOWORDINLINE(0x700D, 0xA82A); #if CALL_NOT_IN_CARBON /* * GetComponentInstanceA5() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) GetComponentInstanceA5(ComponentInstance aComponentInstance) TWOWORDINLINE(0x700E, 0xA82A); /* * SetComponentInstanceA5() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( void ) SetComponentInstanceA5( ComponentInstance aComponentInstance, long theA5) TWOWORDINLINE(0x700F, 0xA82A); #endif /* CALL_NOT_IN_CARBON */ /* * CountComponentInstances() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) CountComponentInstances(Component aComponent) TWOWORDINLINE(0x7013, 0xA82A); /* useful helper routines for convenient method dispatching */ /* * CallComponentFunction() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( long ) CallComponentFunction( ComponentParameters * params, ComponentFunctionUPP func) TWOWORDINLINE(0x70FF, 0xA82A); /* * CallComponentFunctionWithStorage() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) CallComponentFunctionWithStorage( Handle storage, ComponentParameters * params, ComponentFunctionUPP func) TWOWORDINLINE(0x70FF, 0xA82A); #if TARGET_OS_MAC && !TARGET_CPU_68K /* * CallComponentFunctionWithStorageProcInfo() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( long ) CallComponentFunctionWithStorageProcInfo( Handle storage, ComponentParameters * params, ProcPtr func, ProcInfoType funcProcInfo); #else #define CallComponentFunctionWithStorageProcInfo(storage, params, func, funcProcInfo ) CallComponentFunctionWithStorage(storage, params, func) #endif /* TARGET_OS_MAC && !TARGET_CPU_68K */ /* * DelegateComponentCall() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) DelegateComponentCall( ComponentParameters * originalParams, ComponentInstance ci) TWOWORDINLINE(0x7024, 0xA82A); /* * SetDefaultComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) SetDefaultComponent( Component aComponent, short flags) TWOWORDINLINE(0x701E, 0xA82A); /* * OpenDefaultComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentInstance ) OpenDefaultComponent( OSType componentType, OSType componentSubType) TWOWORDINLINE(0x7021, 0xA82A); /* * OpenADefaultComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) OpenADefaultComponent( OSType componentType, OSType componentSubType, ComponentInstance * ci) TWOWORDINLINE(0x702E, 0xA82A); /* * CaptureComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( Component ) CaptureComponent( Component capturedComponent, Component capturingComponent) TWOWORDINLINE(0x701C, 0xA82A); /* * UncaptureComponent() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) UncaptureComponent(Component aComponent) TWOWORDINLINE(0x701D, 0xA82A); /* * RegisterComponentResourceFile() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) RegisterComponentResourceFile( short resRefNum, short global) TWOWORDINLINE(0x7014, 0xA82A); /* * GetComponentIconSuite() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( OSErr ) GetComponentIconSuite( Component aComponent, Handle * iconSuite) TWOWORDINLINE(0x7029, 0xA82A); /******************************************************** * * * Direct calls to the Components * * * ********************************************************/ /* Old style names*/ /* * ComponentFunctionImplemented() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) ComponentFunctionImplemented( ComponentInstance ci, short ftnNumber) FIVEWORDINLINE(0x2F3C, 0x0002, 0xFFFD, 0x7000, 0xA82A); /* * GetComponentVersion() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) GetComponentVersion(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0xFFFC, 0x7000, 0xA82A); /* * ComponentSetTarget() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( long ) ComponentSetTarget( ComponentInstance ci, ComponentInstance target) FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFA, 0x7000, 0xA82A); /* New style names*/ /* * CallComponentOpen() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentOpen( ComponentInstance ci, ComponentInstance self) FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFF, 0x7000, 0xA82A); /* * CallComponentClose() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentClose( ComponentInstance ci, ComponentInstance self) FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFE, 0x7000, 0xA82A); /* * CallComponentCanDo() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentCanDo( ComponentInstance ci, short ftnNumber) FIVEWORDINLINE(0x2F3C, 0x0002, 0xFFFD, 0x7000, 0xA82A); /* * CallComponentVersion() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentVersion(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0xFFFC, 0x7000, 0xA82A); /* * CallComponentRegister() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentRegister(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0xFFFB, 0x7000, 0xA82A); /* * CallComponentTarget() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentTarget( ComponentInstance ci, ComponentInstance target) FIVEWORDINLINE(0x2F3C, 0x0004, 0xFFFA, 0x7000, 0xA82A); /* * CallComponentUnregister() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentUnregister(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0xFFF9, 0x7000, 0xA82A); /* * CallComponentGetMPWorkFunction() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 2.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponentGetMPWorkFunction( ComponentInstance ci, ComponentMPWorkFunctionUPP * workFunction, void ** refCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0xFFF8, 0x7000, 0xA82A); /* * CallComponentGetPublicResource() * * Availability: * Non-Carbon CFM: in InterfaceLib via QuickTime 4.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( ComponentResult ) CallComponentGetPublicResource( ComponentInstance ci, OSType resourceType, short resourceID, Handle * resource) FIVEWORDINLINE(0x2F3C, 0x000A, 0xFFF6, 0x7000, 0xA82A); #if !TARGET_OS_MAC /* CallComponent is used by ComponentGlue routines to manually call a component function. */ #if CALL_NOT_IN_CARBON /* * CallComponent() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available * Windows: in qtmlClient.lib 3.0 and later */ EXTERN_API( ComponentResult ) CallComponent( ComponentInstance ci, ComponentParameters * cp); #endif /* CALL_NOT_IN_CARBON */ #endif /* !TARGET_OS_MAC */ /* CallComponentDispatch is a CarbonLib routine that replaces CallComponent inline glue to call a component function. */ /* * CallComponentDispatch() * * Availability: * Non-Carbon CFM: not available * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( ComponentResult ) CallComponentDispatch(ComponentParameters * cp); /* UPP call backs */ /* * NewComponentMPWorkFunctionUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ComponentMPWorkFunctionUPP ) NewComponentMPWorkFunctionUPP(ComponentMPWorkFunctionProcPtr userRoutine); #if !OPAQUE_UPP_TYPES enum { uppComponentMPWorkFunctionProcInfo = 0x000003F0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */ #ifdef __cplusplus inline DEFINE_API_C(ComponentMPWorkFunctionUPP) NewComponentMPWorkFunctionUPP(ComponentMPWorkFunctionProcPtr userRoutine) { return (ComponentMPWorkFunctionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppComponentMPWorkFunctionProcInfo, GetCurrentArchitecture()); } #else #define NewComponentMPWorkFunctionUPP(userRoutine) (ComponentMPWorkFunctionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppComponentMPWorkFunctionProcInfo, GetCurrentArchitecture()) #endif #endif /* * NewComponentRoutineUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ComponentRoutineUPP ) NewComponentRoutineUPP(ComponentRoutineProcPtr userRoutine); #if !OPAQUE_UPP_TYPES enum { uppComponentRoutineProcInfo = 0x000003F0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */ #ifdef __cplusplus inline DEFINE_API_C(ComponentRoutineUPP) NewComponentRoutineUPP(ComponentRoutineProcPtr userRoutine) { return (ComponentRoutineUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppComponentRoutineProcInfo, GetCurrentArchitecture()); } #else #define NewComponentRoutineUPP(userRoutine) (ComponentRoutineUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppComponentRoutineProcInfo, GetCurrentArchitecture()) #endif #endif /* * NewGetMissingComponentResourceUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( GetMissingComponentResourceUPP ) NewGetMissingComponentResourceUPP(GetMissingComponentResourceProcPtr userRoutine); #if !OPAQUE_UPP_TYPES enum { uppGetMissingComponentResourceProcInfo = 0x0000FBE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes) */ #ifdef __cplusplus inline DEFINE_API_C(GetMissingComponentResourceUPP) NewGetMissingComponentResourceUPP(GetMissingComponentResourceProcPtr userRoutine) { return (GetMissingComponentResourceUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetMissingComponentResourceProcInfo, GetCurrentArchitecture()); } #else #define NewGetMissingComponentResourceUPP(userRoutine) (GetMissingComponentResourceUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetMissingComponentResourceProcInfo, GetCurrentArchitecture()) #endif #endif /* * DisposeComponentMPWorkFunctionUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) DisposeComponentMPWorkFunctionUPP(ComponentMPWorkFunctionUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(void) DisposeComponentMPWorkFunctionUPP(ComponentMPWorkFunctionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } #else #define DisposeComponentMPWorkFunctionUPP(userUPP) DisposeRoutineDescriptor(userUPP) #endif #endif /* * DisposeComponentRoutineUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) DisposeComponentRoutineUPP(ComponentRoutineUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(void) DisposeComponentRoutineUPP(ComponentRoutineUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } #else #define DisposeComponentRoutineUPP(userUPP) DisposeRoutineDescriptor(userUPP) #endif #endif /* * DisposeGetMissingComponentResourceUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) DisposeGetMissingComponentResourceUPP(GetMissingComponentResourceUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(void) DisposeGetMissingComponentResourceUPP(GetMissingComponentResourceUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } #else #define DisposeGetMissingComponentResourceUPP(userUPP) DisposeRoutineDescriptor(userUPP) #endif #endif /* * InvokeComponentMPWorkFunctionUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ComponentResult ) InvokeComponentMPWorkFunctionUPP( void * globalRefCon, ComponentMPWorkFunctionHeaderRecordPtr header, ComponentMPWorkFunctionUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(ComponentResult) InvokeComponentMPWorkFunctionUPP(void * globalRefCon, ComponentMPWorkFunctionHeaderRecordPtr header, ComponentMPWorkFunctionUPP userUPP) { return (ComponentResult)CALL_TWO_PARAMETER_UPP(userUPP, uppComponentMPWorkFunctionProcInfo, globalRefCon, header); } #else #define InvokeComponentMPWorkFunctionUPP(globalRefCon, header, userUPP) (ComponentResult)CALL_TWO_PARAMETER_UPP((userUPP), uppComponentMPWorkFunctionProcInfo, (globalRefCon), (header)) #endif #endif /* * InvokeComponentRoutineUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ComponentResult ) InvokeComponentRoutineUPP( ComponentParameters * cp, Handle componentStorage, ComponentRoutineUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(ComponentResult) InvokeComponentRoutineUPP(ComponentParameters * cp, Handle componentStorage, ComponentRoutineUPP userUPP) { return (ComponentResult)CALL_TWO_PARAMETER_UPP(userUPP, uppComponentRoutineProcInfo, cp, componentStorage); } #else #define InvokeComponentRoutineUPP(cp, componentStorage, userUPP) (ComponentResult)CALL_TWO_PARAMETER_UPP((userUPP), uppComponentRoutineProcInfo, (cp), (componentStorage)) #endif #endif /* * InvokeGetMissingComponentResourceUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSErr ) InvokeGetMissingComponentResourceUPP( Component c, OSType resType, short resID, void * refCon, Handle * resource, GetMissingComponentResourceUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(OSErr) InvokeGetMissingComponentResourceUPP(Component c, OSType resType, short resID, void * refCon, Handle * resource, GetMissingComponentResourceUPP userUPP) { return (OSErr)CALL_FIVE_PARAMETER_UPP(userUPP, uppGetMissingComponentResourceProcInfo, c, resType, resID, refCon, resource); } #else #define InvokeGetMissingComponentResourceUPP(c, resType, resID, refCon, resource, userUPP) (OSErr)CALL_FIVE_PARAMETER_UPP((userUPP), uppGetMissingComponentResourceProcInfo, (c), (resType), (resID), (refCon), (resource)) #endif #endif #if CALL_NOT_IN_CARBON || OLDROUTINENAMES /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ #define NewComponentMPWorkFunctionProc(userRoutine) NewComponentMPWorkFunctionUPP(userRoutine) #define NewComponentRoutineProc(userRoutine) NewComponentRoutineUPP(userRoutine) #define NewGetMissingComponentResourceProc(userRoutine) NewGetMissingComponentResourceUPP(userRoutine) #define CallComponentMPWorkFunctionProc(userRoutine, globalRefCon, header) InvokeComponentMPWorkFunctionUPP(globalRefCon, header, userRoutine) #define CallComponentRoutineProc(userRoutine, cp, componentStorage) InvokeComponentRoutineUPP(cp, componentStorage, userRoutine) #define CallGetMissingComponentResourceProc(userRoutine, c, resType, resID, refCon, resource) InvokeGetMissingComponentResourceUPP(c, resType, resID, refCon, resource, userRoutine) #endif /* CALL_NOT_IN_CARBON */ /* ProcInfos */ /* MixedMode ProcInfo constants for component calls */ enum { uppComponentFunctionImplementedProcInfo = 0x000002F0, uppGetComponentVersionProcInfo = 0x000000F0, uppComponentSetTargetProcInfo = 0x000003F0, uppCallComponentOpenProcInfo = 0x000003F0, uppCallComponentCloseProcInfo = 0x000003F0, uppCallComponentCanDoProcInfo = 0x000002F0, uppCallComponentVersionProcInfo = 0x000000F0, uppCallComponentRegisterProcInfo = 0x000000F0, uppCallComponentTargetProcInfo = 0x000003F0, uppCallComponentUnregisterProcInfo = 0x000000F0, uppCallComponentGetMPWorkFunctionProcInfo = 0x00000FF0, uppCallComponentGetPublicResourceProcInfo = 0x00003BF0 }; #if PRAGMA_STRUCT_ALIGN #pragma options align=reset #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(pop) #elif PRAGMA_STRUCT_PACK #pragma pack() #endif #ifdef PRAGMA_IMPORT_OFF #pragma import off #elif PRAGMA_IMPORT #pragma import reset #endif #ifdef __cplusplus } #endif #endif /* __COMPONENTS__ */