topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-AEObjects.h / h
/*
File: AEObjects.h
Contains: Object Support Library Interfaces.
Version: Technology: System 8.5
Release: QuickTime 6.0.2
Copyright: (c) 1991-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 __AEOBJECTS__
define __AEOBJECTS__
ifndef __OSUTILS__
include <OSUtils.h>
endif
ifndef __APPLEEVENTS__
include <AppleEvents.h>
endif
ifndef __MACERRORS__
include <MacErrors.h>
endif
ifndef __EVENTS__
include <Events.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 {
** LOGICAL OPERATOR CONSTANTS ***
kAEAND = FOUR_CHAR_CODE('AND '), /* 0x414e4420 */
kAEOR = FOUR_CHAR_CODE('OR '), /* 0x4f522020 */
kAENOT = FOUR_CHAR_CODE('NOT '), /* 0x4e4f5420 */
** ABSOLUTE ORDINAL CONSTANTS ***
kAEFirst = FOUR_CHAR_CODE('firs'), /* 0x66697273 */
kAELast = FOUR_CHAR_CODE('last'), /* 0x6c617374 */
kAEMiddle = FOUR_CHAR_CODE('midd'), /* 0x6d696464 */
kAEAny = FOUR_CHAR_CODE('any '), /* 0x616e7920 */
kAEAll = FOUR_CHAR_CODE('all '), /* 0x616c6c20 */
** RELATIVE ORDINAL CONSTANTS ***
kAENext = FOUR_CHAR_CODE('next'), /* 0x6e657874 */
kAEPrevious = FOUR_CHAR_CODE('prev'), /* 0x70726576 */
** KEYWORD CONSTANT ***
keyAECompOperator = FOUR_CHAR_CODE('relo'), /* 0x72656c6f */
keyAELogicalTerms = FOUR_CHAR_CODE('term'), /* 0x7465726d */
keyAELogicalOperator = FOUR_CHAR_CODE('logc'), /* 0x6c6f6763 */
keyAEObject1 = FOUR_CHAR_CODE('obj1'), /* 0x6f626a31 */
keyAEObject2 = FOUR_CHAR_CODE('obj2'), /* 0x6f626a32 */
/* ... for Keywords for getting fields out of object specifier records. */
keyAEDesiredClass = FOUR_CHAR_CODE('want'), /* 0x77616e74 */
keyAEContainer = FOUR_CHAR_CODE('from'), /* 0x66726f6d */
keyAEKeyForm = FOUR_CHAR_CODE('form'), /* 0x666f726d */
keyAEKeyData = FOUR_CHAR_CODE('seld') /* 0x73656c64 */
};
enum {
/* ... for Keywords for getting fields out of Range specifier records. */
keyAERangeStart = FOUR_CHAR_CODE('star'), /* 0x73746172 */
keyAERangeStop = FOUR_CHAR_CODE('stop'), /* 0x73746f70 */
/* ... special handler selectors for OSL Callbacks. */
keyDisposeTokenProc = FOUR_CHAR_CODE('xtok'), /* 0x78746f6b */
keyAECompareProc = FOUR_CHAR_CODE('cmpr'), /* 0x636d7072 */
keyAECountProc = FOUR_CHAR_CODE('cont'), /* 0x636f6e74 */
keyAEMarkTokenProc = FOUR_CHAR_CODE('mkid'), /* 0x6d6b6964 */
keyAEMarkProc = FOUR_CHAR_CODE('mark'), /* 0x6d61726b */
keyAEAdjustMarksProc = FOUR_CHAR_CODE('adjm'), /* 0x61646a6d */
keyAEGetErrDescProc = FOUR_CHAR_CODE('indc') /* 0x696e6463 */
};
** VALUE and TYPE CONSTANTS ***
enum {
/* ... possible values for the keyAEKeyForm field of an object specifier. */
formAbsolutePosition = FOUR_CHAR_CODE('indx'), /* 0x696e6478 */
formRelativePosition = FOUR_CHAR_CODE('rele'), /* 0x72656c65 */
formTest = FOUR_CHAR_CODE('test'), /* 0x74657374 */
formRange = FOUR_CHAR_CODE('rang'), /* 0x72616e67 */
formPropertyID = FOUR_CHAR_CODE('prop'), /* 0x70726f70 */
formName = FOUR_CHAR_CODE('name'), /* 0x6e616d65 */
/* ... relevant types (some of these are often pared with forms above). */
typeObjectSpecifier = FOUR_CHAR_CODE('obj '), /* 0x6f626a20 */
typeObjectBeingExamined = FOUR_CHAR_CODE('exmn'), /* 0x65786d6e */
typeCurrentContainer = FOUR_CHAR_CODE('ccnt'), /* 0x63636e74 */
typeToken = FOUR_CHAR_CODE('toke'), /* 0x746f6b65 */
typeRelativeDescriptor = FOUR_CHAR_CODE('rel '), /* 0x72656c20 */
typeAbsoluteOrdinal = FOUR_CHAR_CODE('abso'), /* 0x6162736f */
typeIndexDescriptor = FOUR_CHAR_CODE('inde'), /* 0x696e6465 */
typeRangeDescriptor = FOUR_CHAR_CODE('rang'), /* 0x72616e67 */
typeLogicalDescriptor = FOUR_CHAR_CODE('logi'), /* 0x6c6f6769 */
typeCompDescriptor = FOUR_CHAR_CODE('cmpd'), /* 0x636d7064 */
typeOSLTokenList = FOUR_CHAR_CODE('ostl') /* 0x6F73746C */
};
/* Possible values for flags parameter to AEResolve. They're additive */
enum {
kAEIDoMinimum = 0x0000,
kAEIDoWhose = 0x0001,
kAEIDoMarking = 0x0004,
kAEPassSubDescs = 0x0008,
kAEResolveNestedLists = 0x0010,
kAEHandleSimpleRanges = 0x0020,
kAEUseRelativeIterators = 0x0040
};
** SPECIAL CONSTANTS FOR CUSTOM WHOSE-CLAUSE RESOLUTION
enum {
typeWhoseDescriptor = FOUR_CHAR_CODE('whos'), /* 0x77686f73 */
formWhose = FOUR_CHAR_CODE('whos'), /* 0x77686f73 */
typeWhoseRange = FOUR_CHAR_CODE('wrng'), /* 0x77726e67 */
keyAEWhoseRangeStart = FOUR_CHAR_CODE('wstr'), /* 0x77737472 */
keyAEWhoseRangeStop = FOUR_CHAR_CODE('wstp'), /* 0x77737470 */
keyAEIndex = FOUR_CHAR_CODE('kidx'), /* 0x6b696478 */
keyAETest = FOUR_CHAR_CODE('ktst') /* 0x6b747374 */
};
/*
used for rewriting tokens in place of 'ccnt' descriptors
This record is only of interest to those who, when they...
...get ranges as key data in their accessor procs, choose
...to resolve them manually rather than call AEResolve again.
*/
struct ccntTokenRecord {
DescType tokenClass;
AEDesc token;
};
typedef struct ccntTokenRecord ccntTokenRecord;
typedef ccntTokenRecord * ccntTokenRecPtr;
typedef ccntTokenRecPtr * ccntTokenRecHandle;
if OLDROUTINENAMES
typedef AEDesc * DescPtr;
typedef DescPtr * DescHandle;
endif /* OLDROUTINENAMES */
/* typedefs providing type checking for procedure pointers */
typedef CALLBACK_API( OSErr , OSLAccessorProcPtr )(DescType desiredClass, const AEDesc *container, DescType containerClass, DescType form, const AEDesc *selectionData, AEDesc *value, long accessorRefcon);
typedef CALLBACK_API( OSErr , OSLCompareProcPtr )(DescType oper, const AEDesc *obj1, const AEDesc *obj2, Boolean *result);
typedef CALLBACK_API( OSErr , OSLCountProcPtr )(DescType desiredType, DescType containerClass, const AEDesc *container, long *result);
typedef CALLBACK_API( OSErr , OSLDisposeTokenProcPtr )(AEDesc *unneededToken);
typedef CALLBACK_API( OSErr , OSLGetMarkTokenProcPtr )(const AEDesc *dContainerToken, DescType containerClass, AEDesc *result);
typedef CALLBACK_API( OSErr , OSLGetErrDescProcPtr )(AEDesc **appDescPtr);
typedef CALLBACK_API( OSErr , OSLMarkProcPtr )(const AEDesc *dToken, const AEDesc *markToken, long index);
typedef CALLBACK_API( OSErr , OSLAdjustMarksProcPtr )(long newStart, long newStop, const AEDesc *markToken);
typedef STACK_UPP_TYPE(OSLAccessorProcPtr) OSLAccessorUPP;
typedef STACK_UPP_TYPE(OSLCompareProcPtr) OSLCompareUPP;
typedef STACK_UPP_TYPE(OSLCountProcPtr) OSLCountUPP;
typedef STACK_UPP_TYPE(OSLDisposeTokenProcPtr) OSLDisposeTokenUPP;
typedef STACK_UPP_TYPE(OSLGetMarkTokenProcPtr) OSLGetMarkTokenUPP;
typedef STACK_UPP_TYPE(OSLGetErrDescProcPtr) OSLGetErrDescUPP;
typedef STACK_UPP_TYPE(OSLMarkProcPtr) OSLMarkUPP;
typedef STACK_UPP_TYPE(OSLAdjustMarksProcPtr) OSLAdjustMarksUPP;
if OPAQUE_UPP_TYPES
EXTERN_API(OSLAccessorUPP)
NewOSLAccessorUPP (OSLAccessorProcPtr userRoutine);
EXTERN_API(OSLCompareUPP)
NewOSLCompareUPP (OSLCompareProcPtr userRoutine);
EXTERN_API(OSLCountUPP)
NewOSLCountUPP (OSLCountProcPtr userRoutine);
EXTERN_API(OSLDisposeTokenUPP)
NewOSLDisposeTokenUPP (OSLDisposeTokenProcPtr userRoutine);
EXTERN_API(OSLGetMarkTokenUPP)
NewOSLGetMarkTokenUPP (OSLGetMarkTokenProcPtr userRoutine);
EXTERN_API(OSLGetErrDescUPP)
NewOSLGetErrDescUPP (OSLGetErrDescProcPtr userRoutine);
EXTERN_API(OSLMarkUPP)
NewOSLMarkUPP (OSLMarkProcPtr userRoutine);
EXTERN_API(OSLAdjustMarksUPP)
NewOSLAdjustMarksUPP (OSLAdjustMarksProcPtr userRoutine);
EXTERN_API(void)
DisposeOSLAccessorUPP (OSLAccessorUPP userUPP);
EXTERN_API(void)
DisposeOSLCompareUPP (OSLCompareUPP userUPP);
EXTERN_API(void)
DisposeOSLCountUPP (OSLCountUPP userUPP);
EXTERN_API(void)
DisposeOSLDisposeTokenUPP (OSLDisposeTokenUPP userUPP);
EXTERN_API(void)
DisposeOSLGetMarkTokenUPP (OSLGetMarkTokenUPP userUPP);
EXTERN_API(void)
DisposeOSLGetErrDescUPP (OSLGetErrDescUPP userUPP);
EXTERN_API(void)
DisposeOSLMarkUPP (OSLMarkUPP userUPP);
EXTERN_API(void)
DisposeOSLAdjustMarksUPP (OSLAdjustMarksUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLAccessorUPP (DescType desiredClass,
const AEDesc * container,
DescType containerClass,
DescType form,
const AEDesc * selectionData,
AEDesc * value,
long accessorRefcon,
OSLAccessorUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLCompareUPP (DescType oper,
const AEDesc * obj1,
const AEDesc * obj2,
Boolean * result,
OSLCompareUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLCountUPP (DescType desiredType,
DescType containerClass,
const AEDesc * container,
long * result,
OSLCountUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLDisposeTokenUPP (AEDesc * unneededToken,
OSLDisposeTokenUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLGetMarkTokenUPP (const AEDesc * dContainerToken,
DescType containerClass,
AEDesc * result,
OSLGetMarkTokenUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLGetErrDescUPP (AEDesc ** appDescPtr,
OSLGetErrDescUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLMarkUPP (const AEDesc * dToken,
const AEDesc * markToken,
long index,
OSLMarkUPP userUPP);
EXTERN_API(OSErr)
InvokeOSLAdjustMarksUPP (long newStart,
long newStop,
const AEDesc * markToken,
OSLAdjustMarksUPP userUPP);
else
enum { uppOSLAccessorProcInfo = 0x000FFFE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
enum { uppOSLCompareProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
enum { uppOSLCountProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
enum { uppOSLDisposeTokenProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */
enum { uppOSLGetMarkTokenProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
enum { uppOSLGetErrDescProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */
enum { uppOSLMarkProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
enum { uppOSLAdjustMarksProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
#define NewOSLAccessorUPP(userRoutine) (OSLAccessorUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLAccessorProcInfo, GetCurrentArchitecture())
#define NewOSLCompareUPP(userRoutine) (OSLCompareUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLCompareProcInfo, GetCurrentArchitecture())
#define NewOSLCountUPP(userRoutine) (OSLCountUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLCountProcInfo, GetCurrentArchitecture())
#define NewOSLDisposeTokenUPP(userRoutine) (OSLDisposeTokenUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLDisposeTokenProcInfo, GetCurrentArchitecture())
#define NewOSLGetMarkTokenUPP(userRoutine) (OSLGetMarkTokenUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLGetMarkTokenProcInfo, GetCurrentArchitecture())
#define NewOSLGetErrDescUPP(userRoutine) (OSLGetErrDescUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLGetErrDescProcInfo, GetCurrentArchitecture())
#define NewOSLMarkUPP(userRoutine) (OSLMarkUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLMarkProcInfo, GetCurrentArchitecture())
#define NewOSLAdjustMarksUPP(userRoutine) (OSLAdjustMarksUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOSLAdjustMarksProcInfo, GetCurrentArchitecture())
#define DisposeOSLAccessorUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLCompareUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLCountUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLDisposeTokenUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLGetMarkTokenUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLGetErrDescUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLMarkUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeOSLAdjustMarksUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeOSLAccessorUPP(desiredClass, container, containerClass, form, selectionData, value, accessorRefcon, userUPP) (OSErr)CALL_SEVEN_PARAMETER_UPP((userUPP), uppOSLAccessorProcInfo, (desiredClass), (container), (containerClass), (form), (selectionData), (value), (accessorRefcon))
#define InvokeOSLCompareUPP(oper, obj1, obj2, result, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppOSLCompareProcInfo, (oper), (obj1), (obj2), (result))
#define InvokeOSLCountUPP(desiredType, containerClass, container, result, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppOSLCountProcInfo, (desiredType), (containerClass), (container), (result))
#define InvokeOSLDisposeTokenUPP(unneededToken, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppOSLDisposeTokenProcInfo, (unneededToken))
#define InvokeOSLGetMarkTokenUPP(dContainerToken, containerClass, result, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppOSLGetMarkTokenProcInfo, (dContainerToken), (containerClass), (result))
#define InvokeOSLGetErrDescUPP(appDescPtr, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppOSLGetErrDescProcInfo, (appDescPtr))
#define InvokeOSLMarkUPP(dToken, markToken, index, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppOSLMarkProcInfo, (dToken), (markToken), (index))
#define InvokeOSLAdjustMarksUPP(newStart, newStop, markToken, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppOSLAdjustMarksProcInfo, (newStart), (newStop), (markToken))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewOSLAccessorProc(userRoutine) NewOSLAccessorUPP(userRoutine)
define NewOSLCompareProc(userRoutine) NewOSLCompareUPP(userRoutine)
define NewOSLCountProc(userRoutine) NewOSLCountUPP(userRoutine)
define NewOSLDisposeTokenProc(userRoutine) NewOSLDisposeTokenUPP(userRoutine)
define NewOSLGetMarkTokenProc(userRoutine) NewOSLGetMarkTokenUPP(userRoutine)
define NewOSLGetErrDescProc(userRoutine) NewOSLGetErrDescUPP(userRoutine)
define NewOSLMarkProc(userRoutine) NewOSLMarkUPP(userRoutine)
define NewOSLAdjustMarksProc(userRoutine) NewOSLAdjustMarksUPP(userRoutine)
define CallOSLAccessorProc(userRoutine, desiredClass, container, containerClass, form, selectionData, value, accessorRefcon) InvokeOSLAccessorUPP(desiredClass, container, containerClass, form, selectionData, value, accessorRefcon, userRoutine)
define CallOSLCompareProc(userRoutine, oper, obj1, obj2, result) InvokeOSLCompareUPP(oper, obj1, obj2, result, userRoutine)
define CallOSLCountProc(userRoutine, desiredType, containerClass, container, result) InvokeOSLCountUPP(desiredType, containerClass, container, result, userRoutine)
define CallOSLDisposeTokenProc(userRoutine, unneededToken) InvokeOSLDisposeTokenUPP(unneededToken, userRoutine)
define CallOSLGetMarkTokenProc(userRoutine, dContainerToken, containerClass, result) InvokeOSLGetMarkTokenUPP(dContainerToken, containerClass, result, userRoutine)
define CallOSLGetErrDescProc(userRoutine, appDescPtr) InvokeOSLGetErrDescUPP(appDescPtr, userRoutine)
define CallOSLMarkProc(userRoutine, dToken, markToken, index) InvokeOSLMarkUPP(dToken, markToken, index, userRoutine)
define CallOSLAdjustMarksProc(userRoutine, newStart, newStop, markToken) InvokeOSLAdjustMarksUPP(newStart, newStop, markToken, userRoutine)
EXTERN_API( OSErr )
AEObjectInit (void);
/* Not done by inline, but by direct linking into code. It sets up the pack
such that further calls can be via inline */
EXTERN_API( OSErr )
AESetObjectCallbacks (OSLCompareUPP myCompareProc,
OSLCountUPP myCountProc,
OSLDisposeTokenUPP myDisposeTokenProc,
OSLGetMarkTokenUPP myGetMarkTokenProc,
OSLMarkUPP myMarkProc,
OSLAdjustMarksUPP myAdjustMarksProc,
OSLGetErrDescUPP myGetErrDescProcPtr) THREEWORDINLINE(0x303C, 0x0E35, 0xA816);
EXTERN_API( OSErr )
AEResolve (const AEDesc * objectSpecifier,
short callbackFlags,
AEDesc * theToken) THREEWORDINLINE(0x303C, 0x0536, 0xA816);
EXTERN_API( OSErr )
AEInstallObjectAccessor (DescType desiredClass,
DescType containerType,
OSLAccessorUPP theAccessor,
long accessorRefcon,
Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0937, 0xA816);
EXTERN_API( OSErr )
AERemoveObjectAccessor (DescType desiredClass,
DescType containerType,
OSLAccessorUPP theAccessor,
Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0738, 0xA816);
EXTERN_API( OSErr )
AEGetObjectAccessor (DescType desiredClass,
DescType containerType,
OSLAccessorUPP * accessor,
long * accessorRefcon,
Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0939, 0xA816);
EXTERN_API( OSErr )
AEDisposeToken (AEDesc * theToken) THREEWORDINLINE(0x303C, 0x023A, 0xA816);
EXTERN_API( OSErr )
AECallObjectAccessor (DescType desiredClass,
const AEDesc * containerToken,
DescType containerClass,
DescType keyForm,
const AEDesc * keyData,
AEDesc * token) THREEWORDINLINE(0x303C, 0x0C3B, 0xA816);
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 /* __AEOBJECTS__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.