summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/AEDataModel.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/AEDataModel.h')
-rw-r--r--common/quicktime_win32/AEDataModel.h1324
1 files changed, 1324 insertions, 0 deletions
diff --git a/common/quicktime_win32/AEDataModel.h b/common/quicktime_win32/AEDataModel.h
new file mode 100644
index 0000000..4282731
--- /dev/null
+++ b/common/quicktime_win32/AEDataModel.h
@@ -0,0 +1,1324 @@
+/*
+ File: AEDataModel.h
+
+ Contains: AppleEvent Data Model Interfaces.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1996-2001 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 __AEDATAMODEL__
+#define __AEDATAMODEL__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __MIXEDMODE__
+#include <MixedMode.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
+
+/* Apple event descriptor types */
+enum {
+ typeBoolean = FOUR_CHAR_CODE('bool'),
+ typeChar = FOUR_CHAR_CODE('TEXT')
+};
+
+/* Preferred numeric Apple event descriptor types */
+enum {
+ typeSInt16 = FOUR_CHAR_CODE('shor'),
+ typeSInt32 = FOUR_CHAR_CODE('long'),
+ typeUInt32 = FOUR_CHAR_CODE('magn'),
+ typeSInt64 = FOUR_CHAR_CODE('comp'),
+ typeIEEE32BitFloatingPoint = FOUR_CHAR_CODE('sing'),
+ typeIEEE64BitFloatingPoint = FOUR_CHAR_CODE('doub'),
+ type128BitFloatingPoint = FOUR_CHAR_CODE('ldbl'),
+ typeDecimalStruct = FOUR_CHAR_CODE('decm')
+};
+
+/* Non-preferred Apple event descriptor types */
+enum {
+ typeSMInt = typeSInt16,
+ typeShortInteger = typeSInt16,
+ typeInteger = typeSInt32,
+ typeLongInteger = typeSInt32,
+ typeMagnitude = typeUInt32,
+ typeComp = typeSInt64,
+ typeSMFloat = typeIEEE32BitFloatingPoint,
+ typeShortFloat = typeIEEE32BitFloatingPoint,
+ typeFloat = typeIEEE64BitFloatingPoint,
+ typeLongFloat = typeIEEE64BitFloatingPoint,
+ typeExtended = FOUR_CHAR_CODE('exte')
+};
+
+/* More Apple event descriptor types */
+enum {
+ typeAEList = FOUR_CHAR_CODE('list'),
+ typeAERecord = FOUR_CHAR_CODE('reco'),
+ typeAppleEvent = FOUR_CHAR_CODE('aevt'),
+ typeEventRecord = FOUR_CHAR_CODE('evrc'),
+ typeTrue = FOUR_CHAR_CODE('true'),
+ typeFalse = FOUR_CHAR_CODE('fals'),
+ typeAlias = FOUR_CHAR_CODE('alis'),
+ typeEnumerated = FOUR_CHAR_CODE('enum'),
+ typeType = FOUR_CHAR_CODE('type'),
+ typeAppParameters = FOUR_CHAR_CODE('appa'),
+ typeProperty = FOUR_CHAR_CODE('prop'),
+ typeFSS = FOUR_CHAR_CODE('fss '),
+ typeFSRef = FOUR_CHAR_CODE('fsrf'),
+ typeFileURL = FOUR_CHAR_CODE('furl'),
+ typeKeyword = FOUR_CHAR_CODE('keyw'),
+ typeSectionH = FOUR_CHAR_CODE('sect'),
+ typeWildCard = FOUR_CHAR_CODE('****'),
+ typeApplSignature = FOUR_CHAR_CODE('sign'),
+ typeQDRectangle = FOUR_CHAR_CODE('qdrt'),
+ typeFixed = FOUR_CHAR_CODE('fixd'),
+ typeProcessSerialNumber = FOUR_CHAR_CODE('psn '),
+ typeApplicationURL = FOUR_CHAR_CODE('aprl'),
+ typeNull = FOUR_CHAR_CODE('null') /* null or nonexistent data */
+};
+
+#if CALL_NOT_IN_CARBON
+/* Deprecated addressing modes under Carbon */
+enum {
+ typeSessionID = FOUR_CHAR_CODE('ssid'),
+ typeTargetID = FOUR_CHAR_CODE('targ'),
+ typeDispatcherID = FOUR_CHAR_CODE('dspt')
+};
+
+#endif /* CALL_NOT_IN_CARBON */
+
+/* Keywords for Apple event attributes */
+enum {
+ keyTransactionIDAttr = FOUR_CHAR_CODE('tran'),
+ keyReturnIDAttr = FOUR_CHAR_CODE('rtid'),
+ keyEventClassAttr = FOUR_CHAR_CODE('evcl'),
+ keyEventIDAttr = FOUR_CHAR_CODE('evid'),
+ keyAddressAttr = FOUR_CHAR_CODE('addr'),
+ keyOptionalKeywordAttr = FOUR_CHAR_CODE('optk'),
+ keyTimeoutAttr = FOUR_CHAR_CODE('timo'),
+ keyInteractLevelAttr = FOUR_CHAR_CODE('inte'), /* this attribute is read only - will be set in AESend */
+ keyEventSourceAttr = FOUR_CHAR_CODE('esrc'), /* this attribute is read only - returned as typeShortInteger */
+ keyMissedKeywordAttr = FOUR_CHAR_CODE('miss'), /* this attribute is read only */
+ keyOriginalAddressAttr = FOUR_CHAR_CODE('from'), /* new in 1.0.1 */
+ keyAcceptTimeoutAttr = FOUR_CHAR_CODE('actm') /* new for Mac OS X */
+};
+
+
+/* Constants used for specifying the factoring of AEDescLists. */
+enum {
+ kAEDescListFactorNone = 0,
+ kAEDescListFactorType = 4,
+ kAEDescListFactorTypeAndSize = 8
+};
+
+/* Constants used creating an AppleEvent */
+enum {
+ /* Constant for the returnID param of AECreateAppleEvent */
+ kAutoGenerateReturnID = -1, /* AECreateAppleEvent will generate a session-unique ID */
+ /* Constant for transaction ID's */
+ kAnyTransactionID = 0 /* no transaction is in use */
+};
+
+/* Apple event manager data types */
+typedef ResType DescType;
+typedef FourCharCode AEKeyword;
+#if OPAQUE_TOOLBOX_STRUCTS
+typedef struct OpaqueAEDataStorageType* AEDataStorageType;
+#else
+typedef Ptr AEDataStorageType;
+#endif /* OPAQUE_TOOLBOX_STRUCTS */
+
+typedef AEDataStorageType * AEDataStorage;
+struct AEDesc {
+ DescType descriptorType;
+ AEDataStorage dataHandle;
+};
+typedef struct AEDesc AEDesc;
+typedef AEDesc * AEDescPtr;
+struct AEKeyDesc {
+ AEKeyword descKey;
+ AEDesc descContent;
+};
+typedef struct AEKeyDesc AEKeyDesc;
+/* a list of AEDesc's is a special kind of AEDesc */
+
+typedef AEDesc AEDescList;
+/* AERecord is a list of keyworded AEDesc's */
+typedef AEDescList AERecord;
+/* an AEDesc which contains address data */
+typedef AEDesc AEAddressDesc;
+/* an AERecord that contains an AppleEvent, and related data types */
+typedef AERecord AppleEvent;
+typedef AppleEvent * AppleEventPtr;
+typedef SInt16 AEReturnID;
+typedef SInt32 AETransactionID;
+typedef FourCharCode AEEventClass;
+typedef FourCharCode AEEventID;
+typedef SInt8 AEArrayType;
+enum {
+ kAEDataArray = 0,
+ kAEPackedArray = 1,
+ kAEDescArray = 3,
+ kAEKeyDescArray = 4
+};
+
+
+enum {
+ kAEHandleArray = 2
+};
+
+union AEArrayData {
+ short kAEDataArray[1];
+ char kAEPackedArray[1];
+ Handle kAEHandleArray[1];
+ AEDesc kAEDescArray[1];
+ AEKeyDesc kAEKeyDescArray[1];
+};
+typedef union AEArrayData AEArrayData;
+typedef AEArrayData * AEArrayDataPointer;
+/**************************************************************************
+ These constants are used by AEMach and AEInteraction APIs. They are not
+ strictly part of the data format, but are declared here due to layering.
+**************************************************************************/
+typedef SInt16 AESendPriority;
+enum {
+ kAENormalPriority = 0x00000000, /* post message at the end of the event queue */
+ kAEHighPriority = 0x00000001 /* post message at the front of the event queue (same as nAttnMsg) */
+};
+
+
+typedef SInt32 AESendMode;
+enum {
+ kAENoReply = 0x00000001, /* sender doesn't want a reply to event */
+ kAEQueueReply = 0x00000002, /* sender wants a reply but won't wait */
+ kAEWaitReply = 0x00000003, /* sender wants a reply and will wait */
+ kAEDontReconnect = 0x00000080, /* don't reconnect if there is a sessClosedErr from PPCToolbox */
+ kAEWantReceipt = 0x00000200, /* (nReturnReceipt) sender wants a receipt of message */
+ kAENeverInteract = 0x00000010, /* server should not interact with user */
+ kAECanInteract = 0x00000020, /* server may try to interact with user */
+ kAEAlwaysInteract = 0x00000030, /* server should always interact with user where appropriate */
+ kAECanSwitchLayer = 0x00000040, /* interaction may switch layer */
+ kAEDontRecord = 0x00001000, /* don't record this event - available only in vers 1.0.1 and greater */
+ kAEDontExecute = 0x00002000, /* don't send the event for recording - available only in vers 1.0.1 and greater */
+ kAEProcessNonReplyEvents = 0x00008000 /* allow processing of non-reply events while awaiting synchronous AppleEvent reply */
+};
+
+
+/* Constants for timeout durations */
+enum {
+ kAEDefaultTimeout = -1, /* timeout value determined by AEM */
+ kNoTimeOut = -2 /* wait until reply comes back, however long it takes */
+};
+
+
+/**************************************************************************
+ These calls are used to set up and modify the coercion dispatch table.
+**************************************************************************/
+typedef CALLBACK_API( OSErr , AECoerceDescProcPtr )(const AEDesc *fromDesc, DescType toType, long handlerRefcon, AEDesc *toDesc);
+typedef CALLBACK_API( OSErr , AECoercePtrProcPtr )(DescType typeCode, const void *dataPtr, Size dataSize, DescType toType, long handlerRefcon, AEDesc *result);
+typedef STACK_UPP_TYPE(AECoerceDescProcPtr) AECoerceDescUPP;
+typedef STACK_UPP_TYPE(AECoercePtrProcPtr) AECoercePtrUPP;
+/*
+ * NewAECoerceDescUPP()
+ *
+ * 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( AECoerceDescUPP )
+NewAECoerceDescUPP(AECoerceDescProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppAECoerceDescProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(AECoerceDescUPP) NewAECoerceDescUPP(AECoerceDescProcPtr userRoutine) { return (AECoerceDescUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAECoerceDescProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewAECoerceDescUPP(userRoutine) (AECoerceDescUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAECoerceDescProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewAECoercePtrUPP()
+ *
+ * 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( AECoercePtrUPP )
+NewAECoercePtrUPP(AECoercePtrProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppAECoercePtrProcInfo = 0x0003FFE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(AECoercePtrUPP) NewAECoercePtrUPP(AECoercePtrProcPtr userRoutine) { return (AECoercePtrUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAECoercePtrProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewAECoercePtrUPP(userRoutine) (AECoercePtrUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAECoercePtrProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeAECoerceDescUPP()
+ *
+ * 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 )
+DisposeAECoerceDescUPP(AECoerceDescUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeAECoerceDescUPP(AECoerceDescUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeAECoerceDescUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeAECoercePtrUPP()
+ *
+ * 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 )
+DisposeAECoercePtrUPP(AECoercePtrUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeAECoercePtrUPP(AECoercePtrUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeAECoercePtrUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeAECoerceDescUPP()
+ *
+ * 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 )
+InvokeAECoerceDescUPP(
+ const AEDesc * fromDesc,
+ DescType toType,
+ long handlerRefcon,
+ AEDesc * toDesc,
+ AECoerceDescUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeAECoerceDescUPP(const AEDesc * fromDesc, DescType toType, long handlerRefcon, AEDesc * toDesc, AECoerceDescUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppAECoerceDescProcInfo, fromDesc, toType, handlerRefcon, toDesc); }
+ #else
+ #define InvokeAECoerceDescUPP(fromDesc, toType, handlerRefcon, toDesc, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppAECoerceDescProcInfo, (fromDesc), (toType), (handlerRefcon), (toDesc))
+ #endif
+#endif
+
+/*
+ * InvokeAECoercePtrUPP()
+ *
+ * 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 )
+InvokeAECoercePtrUPP(
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize,
+ DescType toType,
+ long handlerRefcon,
+ AEDesc * result,
+ AECoercePtrUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeAECoercePtrUPP(DescType typeCode, const void * dataPtr, Size dataSize, DescType toType, long handlerRefcon, AEDesc * result, AECoercePtrUPP userUPP) { return (OSErr)CALL_SIX_PARAMETER_UPP(userUPP, uppAECoercePtrProcInfo, typeCode, dataPtr, dataSize, toType, handlerRefcon, result); }
+ #else
+ #define InvokeAECoercePtrUPP(typeCode, dataPtr, dataSize, toType, handlerRefcon, result, userUPP) (OSErr)CALL_SIX_PARAMETER_UPP((userUPP), uppAECoercePtrProcInfo, (typeCode), (dataPtr), (dataSize), (toType), (handlerRefcon), (result))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewAECoerceDescProc(userRoutine) NewAECoerceDescUPP(userRoutine)
+ #define NewAECoercePtrProc(userRoutine) NewAECoercePtrUPP(userRoutine)
+ #define CallAECoerceDescProc(userRoutine, fromDesc, toType, handlerRefcon, toDesc) InvokeAECoerceDescUPP(fromDesc, toType, handlerRefcon, toDesc, userRoutine)
+ #define CallAECoercePtrProc(userRoutine, typeCode, dataPtr, dataSize, toType, handlerRefcon, result) InvokeAECoercePtrUPP(typeCode, dataPtr, dataSize, toType, handlerRefcon, result, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+/* a AECoercionHandlerUPP is by default a AECoerceDescUPP. If you are registering a
+ Ptr based coercion handler you will have to add a cast to AECoerceDescUPP from
+ your AECoercePtrUPP type. A future release of the interfaces will fix this by
+ introducing seperate Desc and Ptr coercion handler installation/remove/query routines. */
+typedef AECoerceDescUPP AECoercionHandlerUPP;
+/*
+ * AEInstallCoercionHandler()
+ *
+ * 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( OSErr )
+AEInstallCoercionHandler(
+ DescType fromType,
+ DescType toType,
+ AECoercionHandlerUPP handler,
+ long handlerRefcon,
+ Boolean fromTypeIsDesc,
+ Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0A22, 0xA816);
+
+
+/*
+ * AERemoveCoercionHandler()
+ *
+ * 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( OSErr )
+AERemoveCoercionHandler(
+ DescType fromType,
+ DescType toType,
+ AECoercionHandlerUPP handler,
+ Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0723, 0xA816);
+
+
+
+/*
+ * AEGetCoercionHandler()
+ *
+ * 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( OSErr )
+AEGetCoercionHandler(
+ DescType fromType,
+ DescType toType,
+ AECoercionHandlerUPP * handler,
+ long * handlerRefcon,
+ Boolean * fromTypeIsDesc,
+ Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0B24, 0xA816);
+
+
+/**************************************************************************
+ The following calls provide for a coercion interface.
+**************************************************************************/
+/*
+ * AECoercePtr()
+ *
+ * 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( OSErr )
+AECoercePtr(
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize,
+ DescType toType,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0A02, 0xA816);
+
+
+/*
+ * AECoerceDesc()
+ *
+ * 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( OSErr )
+AECoerceDesc(
+ const AEDesc * theAEDesc,
+ DescType toType,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0603, 0xA816);
+
+
+
+/**************************************************************************
+ The following calls apply to any AEDesc. Every 'result' descriptor is
+ created for you, so you will be responsible for memory management
+ (including disposing) of the descriptors so created.
+**************************************************************************/
+/* because AEDescs are opaque under Carbon, this AEInitializeDesc provides a
+ 'clean' way of initializating them to be empty. */
+/*
+ * AEInitializeDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+AEInitializeDesc(AEDesc * desc);
+
+
+
+#ifdef __cplusplus
+ inline void AEInitializeDescInline(AEDesc* d) { d->descriptorType = typeNull; d->dataHandle = NULL; };
+#else
+ #define AEInitializeDescInline(__d) do { AEDesc* d = __d; d->descriptorType = typeNull; d->dataHandle = NULL; } while (0)
+#endif
+
+
+/*
+ * AECreateDesc()
+ *
+ * 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( OSErr )
+AECreateDesc(
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0825, 0xA816);
+
+
+/*
+ * AEDisposeDesc()
+ *
+ * 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( OSErr )
+AEDisposeDesc(AEDesc * theAEDesc) THREEWORDINLINE(0x303C, 0x0204, 0xA816);
+
+
+/*
+ * AEDuplicateDesc()
+ *
+ * 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( OSErr )
+AEDuplicateDesc(
+ const AEDesc * theAEDesc,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0405, 0xA816);
+
+
+
+/*
+ * Create an AEDesc with memory "borrowed" from the application. The
+ * data passed in *must* be immutable and not freed until the Dispose
+ * callback is made.
+ * The dispose callback may be made at any time, including during the
+ * creation of the descriptor.
+ * If possible, the descriptor will be copied to the address space of
+ * any recipient process using virtual memory APIs and avoid an
+ * actual memory copy.
+ */
+typedef CALLBACK_API( void , AEDisposeExternalProcPtr )(const void *dataPtr, Size dataLength, long refcon);
+typedef STACK_UPP_TYPE(AEDisposeExternalProcPtr) AEDisposeExternalUPP;
+/*
+ * AECreateDescFromExternalPtr()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( OSStatus )
+AECreateDescFromExternalPtr(
+ OSType descriptorType,
+ const void * dataPtr,
+ Size dataLength,
+ AEDisposeExternalUPP disposeCallback,
+ long disposeRefcon,
+ AEDesc * theDesc);
+
+
+
+
+
+/**************************************************************************
+ The following calls apply to AEDescList. Since AEDescList is a subtype of
+ AEDesc, the calls in the previous section can also be used for AEDescList.
+ All list and array indices are 1-based. If the data was greater than
+ maximumSize in the routines below, then actualSize will be greater than
+ maximumSize, but only maximumSize bytes will actually be retrieved.
+**************************************************************************/
+/*
+ * AECreateList()
+ *
+ * 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( OSErr )
+AECreateList(
+ const void * factoringPtr,
+ Size factoredSize,
+ Boolean isRecord,
+ AEDescList * resultList) THREEWORDINLINE(0x303C, 0x0706, 0xA816);
+
+
+/*
+ * AECountItems()
+ *
+ * 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( OSErr )
+AECountItems(
+ const AEDescList * theAEDescList,
+ long * theCount) THREEWORDINLINE(0x303C, 0x0407, 0xA816);
+
+
+/*
+ * AEPutPtr()
+ *
+ * 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( OSErr )
+AEPutPtr(
+ AEDescList * theAEDescList,
+ long index,
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize) THREEWORDINLINE(0x303C, 0x0A08, 0xA816);
+
+
+/*
+ * AEPutDesc()
+ *
+ * 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( OSErr )
+AEPutDesc(
+ AEDescList * theAEDescList,
+ long index,
+ const AEDesc * theAEDesc) THREEWORDINLINE(0x303C, 0x0609, 0xA816);
+
+
+/*
+ * AEGetNthPtr()
+ *
+ * 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( OSErr )
+AEGetNthPtr(
+ const AEDescList * theAEDescList,
+ long index,
+ DescType desiredType,
+ AEKeyword * theAEKeyword,
+ DescType * typeCode,
+ void * dataPtr,
+ Size maximumSize,
+ Size * actualSize) THREEWORDINLINE(0x303C, 0x100A, 0xA816);
+
+
+/*
+ * AEGetNthDesc()
+ *
+ * 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( OSErr )
+AEGetNthDesc(
+ const AEDescList * theAEDescList,
+ long index,
+ DescType desiredType,
+ AEKeyword * theAEKeyword,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0A0B, 0xA816);
+
+
+/*
+ * AESizeOfNthItem()
+ *
+ * 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( OSErr )
+AESizeOfNthItem(
+ const AEDescList * theAEDescList,
+ long index,
+ DescType * typeCode,
+ Size * dataSize) THREEWORDINLINE(0x303C, 0x082A, 0xA816);
+
+
+/*
+ * AEGetArray()
+ *
+ * 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( OSErr )
+AEGetArray(
+ const AEDescList * theAEDescList,
+ AEArrayType arrayType,
+ AEArrayDataPointer arrayPtr,
+ Size maximumSize,
+ DescType * itemType,
+ Size * itemSize,
+ long * itemCount) THREEWORDINLINE(0x303C, 0x0D0C, 0xA816);
+
+
+/*
+ * AEPutArray()
+ *
+ * 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( OSErr )
+AEPutArray(
+ AEDescList * theAEDescList,
+ AEArrayType arrayType,
+ const AEArrayData * arrayPtr,
+ DescType itemType,
+ Size itemSize,
+ long itemCount) THREEWORDINLINE(0x303C, 0x0B0D, 0xA816);
+
+
+/*
+ * AEDeleteItem()
+ *
+ * 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( OSErr )
+AEDeleteItem(
+ AEDescList * theAEDescList,
+ long index) THREEWORDINLINE(0x303C, 0x040E, 0xA816);
+
+
+
+/**************************************************************************
+ The following calls apply to AERecord. Since AERecord is a subtype of
+ AEDescList, the calls in the previous sections can also be used for
+ AERecord an AERecord can be created by using AECreateList with isRecord
+ set to true.
+**************************************************************************/
+/*************************************************************************
+ AERecords can have an abitrary descriptorType. This allows you to
+ check if desc is truly an AERecord
+************************************************************************/
+/*
+ * AECheckIsRecord()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( Boolean )
+AECheckIsRecord(const AEDesc * theDesc);
+
+
+/*
+ Note: The following #defines map "key" calls on AERecords into "param" calls on
+ AppleEvents. Although no errors are currently returned if AERecords are
+ passed to "param" calls and AppleEvents to "key" calls, the behavior of
+ this type of API-mixing is not explicitly documented in Inside Macintosh.
+ It just happens that the "key" calls have the same functionality as their
+ "param" counterparts. Since none of the "key" calls are currently available
+ in the PowerPC IntefaceLib, the #defines exploit the fact that "key" and
+ "param" routines can be used interchangeably, and makes sure that every
+ invocation of a "key" API becomes an invocation of a "param" API.
+*/
+#define AEPutKeyPtr(theAERecord, theAEKeyword, typeCode, dataPtr, dataSize) \
+ AEPutParamPtr((theAERecord), (theAEKeyword), (typeCode), (dataPtr), (dataSize))
+#define AEPutKeyDesc(theAERecord, theAEKeyword, theAEDesc) \
+ AEPutParamDesc((theAERecord), (theAEKeyword), (theAEDesc))
+#define AEGetKeyPtr(theAERecord, theAEKeyword, desiredType, typeCode, dataPtr, maxSize, actualSize) \
+ AEGetParamPtr((theAERecord), (theAEKeyword), (desiredType), (typeCode), (dataPtr), (maxSize), (actualSize))
+#define AEGetKeyDesc(theAERecord, theAEKeyword, desiredType, result) \
+ AEGetParamDesc((theAERecord), (theAEKeyword), (desiredType), (result))
+#define AESizeOfKeyDesc(theAERecord, theAEKeyword, typeCode, dataSize) \
+ AESizeOfParam((theAERecord), (theAEKeyword), (typeCode), (dataSize))
+#define AEDeleteKeyDesc(theAERecord, theAEKeyword) \
+ AEDeleteParam((theAERecord), (theAEKeyword))
+/**************************************************************************
+ The following calls create and manipulate the AppleEvent data type.
+**************************************************************************/
+/*
+ * AECreateAppleEvent()
+ *
+ * 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( OSErr )
+AECreateAppleEvent(
+ AEEventClass theAEEventClass,
+ AEEventID theAEEventID,
+ const AEAddressDesc * target,
+ AEReturnID returnID,
+ AETransactionID transactionID,
+ AppleEvent * result) THREEWORDINLINE(0x303C, 0x0B14, 0xA816);
+
+
+
+/**************************************************************************
+ The following calls are used to pack and unpack parameters from records
+ of type AppleEvent. Since AppleEvent is a subtype of AERecord, the calls
+ in the previous sections can also be used for variables of type
+ AppleEvent. The next six calls are in fact identical to the six calls
+ for AERecord.
+**************************************************************************/
+/*
+ * AEPutParamPtr()
+ *
+ * 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( OSErr )
+AEPutParamPtr(
+ AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize) THREEWORDINLINE(0x303C, 0x0A0F, 0xA816);
+
+
+/*
+ * AEPutParamDesc()
+ *
+ * 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( OSErr )
+AEPutParamDesc(
+ AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ const AEDesc * theAEDesc) THREEWORDINLINE(0x303C, 0x0610, 0xA816);
+
+
+/*
+ * AEGetParamPtr()
+ *
+ * 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( OSErr )
+AEGetParamPtr(
+ const AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType desiredType,
+ DescType * typeCode,
+ void * dataPtr,
+ Size maximumSize,
+ Size * actualSize) THREEWORDINLINE(0x303C, 0x0E11, 0xA816);
+
+
+/*
+ * AEGetParamDesc()
+ *
+ * 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( OSErr )
+AEGetParamDesc(
+ const AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType desiredType,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0812, 0xA816);
+
+
+/*
+ * AESizeOfParam()
+ *
+ * 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( OSErr )
+AESizeOfParam(
+ const AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType * typeCode,
+ Size * dataSize) THREEWORDINLINE(0x303C, 0x0829, 0xA816);
+
+
+/*
+ * AEDeleteParam()
+ *
+ * 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( OSErr )
+AEDeleteParam(
+ AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword) THREEWORDINLINE(0x303C, 0x0413, 0xA816);
+
+
+
+
+/**************************************************************************
+ The following calls also apply to type AppleEvent. Message attributes are
+ far more restricted, and can only be accessed through the following 5
+ calls. The various list and record routines cannot be used to access the
+ attributes of an event.
+**************************************************************************/
+/*
+ * AEGetAttributePtr()
+ *
+ * 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( OSErr )
+AEGetAttributePtr(
+ const AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType desiredType,
+ DescType * typeCode,
+ void * dataPtr,
+ Size maximumSize,
+ Size * actualSize) THREEWORDINLINE(0x303C, 0x0E15, 0xA816);
+
+
+/*
+ * AEGetAttributeDesc()
+ *
+ * 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( OSErr )
+AEGetAttributeDesc(
+ const AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType desiredType,
+ AEDesc * result) THREEWORDINLINE(0x303C, 0x0826, 0xA816);
+
+
+/*
+ * AESizeOfAttribute()
+ *
+ * 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( OSErr )
+AESizeOfAttribute(
+ const AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType * typeCode,
+ Size * dataSize) THREEWORDINLINE(0x303C, 0x0828, 0xA816);
+
+
+/*
+ * AEPutAttributePtr()
+ *
+ * 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( OSErr )
+AEPutAttributePtr(
+ AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize) THREEWORDINLINE(0x303C, 0x0A16, 0xA816);
+
+
+/*
+ * AEPutAttributeDesc()
+ *
+ * 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( OSErr )
+AEPutAttributeDesc(
+ AppleEvent * theAppleEvent,
+ AEKeyword theAEKeyword,
+ const AEDesc * theAEDesc) THREEWORDINLINE(0x303C, 0x0627, 0xA816);
+
+
+
+/**************************************************************************
+ AppleEvent Serialization Support
+
+ AESizeOfFlattenedDesc, AEFlattenDesc, AEUnflattenDesc
+
+ These calls will work for all AppleEvent data types and between different
+ versions of the OS (including between Mac OS 9 and X)
+
+ Basic types, AEDesc, AEList and AERecord are OK, but AppleEvent records
+ themselves may not be reliably flattened for storage.
+**************************************************************************/
+/*
+ AEFlattenDesc
+ Returns the amount of buffer space needed to flatten the
+ AEDesc. Call this before AEFlattenDesc to make sure your
+ buffer has enough room for the operation.
+*/
+
+/*
+ * AESizeOfFlattenedDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( Size )
+AESizeOfFlattenedDesc(const AEDesc * theAEDesc);
+
+
+/*
+ AEFlattenDesc
+ Fills a buffer with a flattened representation of the
+ AEDesc and returns the amount of buffer used in actualSize.
+ If bufferSize was too small it returns errAEBufferTooSmall
+ (-1741) and does not fill in any of the buffer. The resulting
+ buffer is only useful with an AEUnflattenDesc call.
+
+ Note: if you pass a NULL buffer pointer it returns noErr but
+ fills in the actualSize field anyway.
+*/
+
+/*
+ * AEFlattenDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEFlattenDesc(
+ const AEDesc * theAEDesc,
+ Ptr buffer,
+ Size bufferSize,
+ Size * actualSize);
+
+
+/*
+ AEUnflattenDesc
+ Allocates an AEDesc (given a Null Desc) given a flattened
+ data buffer. It assumes it was given a good buffer filled
+ in by AEFlattenDesc. It returns paramErr if it discovers
+ something fishy about the buffer.
+*/
+
+/*
+ * AEUnflattenDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEUnflattenDesc(
+ Ptr buffer,
+ AEDesc * result);
+
+
+/**************************************************************************
+ The following calls are necessary to deal with opaque data in AEDescs, because the
+ traditional way of dealing with a basic AEDesc has been to dereference the dataHandle
+ directly. This is not supported under Carbon.
+**************************************************************************/
+#if ACCESSOR_CALLS_ARE_FUNCTIONS
+/*
+ AEGetDescData no longer supports automatic coercion. If you'd like to
+ coerce the descriptor use AECoerceDesc.
+ */
+/*
+ * AEGetDescData()
+ *
+ * Availability:
+ * Non-Carbon CFM: in CarbonAccessors.o 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+AEGetDescData(
+ const AEDesc * theAEDesc,
+ void * dataPtr,
+ Size maximumSize);
+
+
+/*
+ * AEGetDescDataSize()
+ *
+ * Availability:
+ * Non-Carbon CFM: in CarbonAccessors.o 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( Size )
+AEGetDescDataSize(const AEDesc * theAEDesc);
+
+
+/*
+ * AEReplaceDescData()
+ *
+ * Availability:
+ * Non-Carbon CFM: in CarbonAccessors.o 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+AEReplaceDescData(
+ DescType typeCode,
+ const void * dataPtr,
+ Size dataSize,
+ AEDesc * theAEDesc);
+
+
+#endif /* ACCESSOR_CALLS_ARE_FUNCTIONS */
+
+/*
+ * Retrieve a range of bytes from an AEDesc. This obviates the need
+ * to retrieve the entire data from the event using AEGetDescData.
+ * This is only valid for data type AEDescs. If the requested length
+ * and offset are such that they do not fit entirely with the data of the
+ * desc, errAEBufferTooSmall is returned.
+ */
+/*
+ * AEGetDescDataRange()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( OSStatus )
+AEGetDescDataRange(
+ const AEDesc * dataDesc,
+ void * buffer,
+ Size offset,
+ Size length);
+
+
+/**************************************************************************
+ A AEEventHandler is installed to process an AppleEvent
+**************************************************************************/
+typedef CALLBACK_API( OSErr , AEEventHandlerProcPtr )(const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefcon);
+typedef STACK_UPP_TYPE(AEEventHandlerProcPtr) AEEventHandlerUPP;
+/*
+ * NewAEDisposeExternalUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( AEDisposeExternalUPP )
+NewAEDisposeExternalUPP(AEDisposeExternalProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppAEDisposeExternalProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(AEDisposeExternalUPP) NewAEDisposeExternalUPP(AEDisposeExternalProcPtr userRoutine) { return (AEDisposeExternalUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEDisposeExternalProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewAEDisposeExternalUPP(userRoutine) (AEDisposeExternalUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEDisposeExternalProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewAEEventHandlerUPP()
+ *
+ * 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( AEEventHandlerUPP )
+NewAEEventHandlerUPP(AEEventHandlerProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppAEEventHandlerProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(AEEventHandlerUPP) NewAEEventHandlerUPP(AEEventHandlerProcPtr userRoutine) { return (AEEventHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEEventHandlerProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewAEEventHandlerUPP(userRoutine) (AEEventHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEEventHandlerProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeAEDisposeExternalUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+DisposeAEDisposeExternalUPP(AEDisposeExternalUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeAEDisposeExternalUPP(AEDisposeExternalUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeAEDisposeExternalUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeAEEventHandlerUPP()
+ *
+ * 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 )
+DisposeAEEventHandlerUPP(AEEventHandlerUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeAEEventHandlerUPP(AEEventHandlerUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeAEEventHandlerUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeAEDisposeExternalUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+InvokeAEDisposeExternalUPP(
+ const void * dataPtr,
+ Size dataLength,
+ long refcon,
+ AEDisposeExternalUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeAEDisposeExternalUPP(const void * dataPtr, Size dataLength, long refcon, AEDisposeExternalUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppAEDisposeExternalProcInfo, dataPtr, dataLength, refcon); }
+ #else
+ #define InvokeAEDisposeExternalUPP(dataPtr, dataLength, refcon, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppAEDisposeExternalProcInfo, (dataPtr), (dataLength), (refcon))
+ #endif
+#endif
+
+/*
+ * InvokeAEEventHandlerUPP()
+ *
+ * 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 )
+InvokeAEEventHandlerUPP(
+ const AppleEvent * theAppleEvent,
+ AppleEvent * reply,
+ long handlerRefcon,
+ AEEventHandlerUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeAEEventHandlerUPP(const AppleEvent * theAppleEvent, AppleEvent * reply, long handlerRefcon, AEEventHandlerUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppAEEventHandlerProcInfo, theAppleEvent, reply, handlerRefcon); }
+ #else
+ #define InvokeAEEventHandlerUPP(theAppleEvent, reply, handlerRefcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppAEEventHandlerProcInfo, (theAppleEvent), (reply), (handlerRefcon))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewAEDisposeExternalProc(userRoutine) NewAEDisposeExternalUPP(userRoutine)
+ #define NewAEEventHandlerProc(userRoutine) NewAEEventHandlerUPP(userRoutine)
+ #define CallAEDisposeExternalProc(userRoutine, dataPtr, dataLength, refcon) InvokeAEDisposeExternalUPP(dataPtr, dataLength, refcon, userRoutine)
+ #define CallAEEventHandlerProc(userRoutine, theAppleEvent, reply, handlerRefcon) InvokeAEEventHandlerUPP(theAppleEvent, reply, handlerRefcon, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+
+
+#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 /* __AEDATAMODEL__ */
+