|
|
/*
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 <MacErrors.h>
#endif
#ifndef __MACTYPES__
#include <MacTypes.h>
#endif
#ifndef __MIXEDMODE__
#include <MixedMode.h>
#endif
#ifndef __FILES__
#include <Files.h>
#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__ */
|