You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1324 lines
46 KiB
1324 lines
46 KiB
/* |
|
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__ */ |
|
|
|
|