home *** CD-ROM | disk | FTP | other *** search
- /*
- File: SIHelper.h
-
- Contains: Interface to an implementation of the ODCPlusSemanticInterface
- helper class.
-
- Owned by: Nick Pilch
-
- Copyright: © 1993 - 1995 by Apple Computer, Inc., all rights reserved.
-
-
- */
-
- #ifndef _SIHELPER_
- #define _SIHELPER_
-
-
- #ifndef _SIHLPABS_
- #include "SIHlpAbs.h"
- #endif
-
- #ifndef __MIXEDMODE__
- #include <MixedMode.h>
- #endif
-
- #ifdef USESROUTINEDESCRIPTORS
- #define SIHELPER_USESROUTINEDESCRIPTORS 1 // use routine descriptors
- #else
- #define SIHELPER_USESROUTINEDESCRIPTORS 0
- #endif
-
-
- //==============================================================================
- // Constants
- //==============================================================================
-
- #define kODStandardDispatch 0
- #define kODAlwaysForward 1
-
- //==============================================================================
- // Functions
- //==============================================================================
- #if 0
- ODDescType GetTokenDescType(ODOSLToken* token);
- void SetTokenDescType(ODOSLToken* token, ODDescType type);
- ODHandle GetTokenDataHandle(ODOSLToken* token);
- void SetTokenDataHandle(ODOSLToken* token, ODHandle handle);
- #endif /* 0 */
-
- //==============================================================================
- // Classes defined in this interface
- //==============================================================================
-
- class SIHelper;
- class SIHashTable;
-
- //==============================================================================
- // Classes used by this interface
- //==============================================================================
-
- class ODPart;
- class ODSemanticInterface;
- class ODSession;
- class ODNameResolver;
-
- //==============================================================================
- // Callback function mixed-mode glue.
- //==============================================================================
-
- #ifndef GetCurrentArchitecture
- // The pre-68k universal headers use GetCurrentISA; the newer headers that
- // support CFM68k use GetCurrentArchitecture. This lets us compile either way:
- #define GetCurrentArchitecture() GetCurrentISA()
- #endif
-
- #if SIHELPER_USESROUTINEDESCRIPTORS
- typedef UniversalProcPtr ODEventHandlerUPP ;
- typedef UniversalProcPtr ODDescCoercionHandlerUPP ;
- typedef UniversalProcPtr ODPtrCoercionHandlerUPP ;
- typedef UniversalProcPtr ODCoercionHandlerUPP;
- typedef UniversalProcPtr ODObjectAccessorUPP;
- typedef UniversalProcPtr ODCompareUPP;
- typedef UniversalProcPtr ODCountUPP ;
- typedef UniversalProcPtr ODDisposeTokenUPP ;
- typedef UniversalProcPtr ODGetMarkTokenUPP ;
- typedef UniversalProcPtr ODMarkUPP ;
- typedef UniversalProcPtr ODAdjustMarksUPP ;
- typedef UniversalProcPtr ODGetErrDescUPP ;
- typedef UniversalProcPtr ODPreDispatchUPP ;
- typedef UniversalProcPtr ODTokenInquiryUPP ;
- typedef UniversalProcPtr ODSpecialHandlerUPP;
- #else /* if not SIHELPER_USESROUTINEDESCRIPTORS */
-
- typedef pascal ODError (*ODEventHandlerProcPtr)(ODPart* thePart,
- ODAppleEvent* theODAppleEvent,
- ODAppleEvent* reply,
- ODSLong handlerRefcon);
-
- typedef pascal ODError (*ODCoercionHandler)();
-
- typedef pascal ODError (*ODDescCoercionHandler)(ODPart* thePart,
- ODDesc* theODDesc,
- ODDescType toType,
- ODSLong handlerRefCon,
- ODDesc* result);
-
- typedef pascal ODError (*ODPtrCoercionHandler)(ODPart* thePart,
- ODDescType typeCode,
- ODPtr dataPtr,
- ODSize dataSize,
- ODDescType toType,
- ODSLong handlerRefCon,
- ODDesc* result);
-
- typedef pascal ODError (*ODAccessorProcPtr)(ODPart* thePart,
- ODDescType desiredClass,
- ODOSLToken* container,
- ODDescType containerClass,
- ODDescType form,
- ODDesc* selectionData,
- ODOSLToken* value,
- ODSLong handlerRefCon);
-
- typedef pascal ODError (*ODCompareProcPtr)(ODPart* thePart,
- ODDescType oper,
- ODOSLToken* obj1,
- ODOSLToken* obj2,
- ODBoolean* result,
- ODSLong refCon);
-
- typedef pascal ODError (*ODCountProcPtr)(ODPart* thePart,
- ODDescType desiredType,
- ODDescType containerClass,
- ODOSLToken* container,
- ODSLong* result,
- ODSLong refCon);
-
- typedef pascal ODError (*ODDisposeTokenProcPtr)(ODPart* thePart,
- ODOSLToken* unneededToken,
- ODSLong refCon);
-
- typedef pascal ODError (*ODGetErrDescProcPtr)(ODPart* thePart,
- ODDesc** errDesc,
- ODSLong refCon);
-
- typedef pascal ODError (*ODGetMarkTokenProcPtr)(ODPart* thePart,
- ODOSLToken* dContainerToken,
- ODDescType containerClass,
- ODOSLToken* result,
- ODSLong refCon);
-
- typedef pascal ODError (*ODMarkProcPtr)(ODPart* thePart,
- ODOSLToken* dToken,
- ODOSLToken* markToken,
- ODSLong index,
- ODSLong refCon);
-
- typedef pascal ODError (*ODAdjustMarksProcPtr)(ODPart* thePart,
- ODSLong newStart,
- ODSLong newStop,
- ODOSLToken* markToken,
- ODSLong refCon);
-
- typedef pascal ODError (*ODPreDispatchProcPtr)(ODPart* thePart,
- ODAppleEvent* theODAppleEvent,
- ODAppleEvent* reply,
- ODSLong handlerRefcon);
-
- typedef pascal ODError (*ODSpecialHandlerPtr)();
-
- typedef pascal ODPart* (*ODTokenInquiryProcPtr)(ODOSLToken* token,
- ODSLong refCon);
-
- typedef ODEventHandlerProcPtr ODEventHandlerUPP ;
- typedef ODDescCoercionHandler ODDescCoercionHandlerUPP ;
- typedef ODPtrCoercionHandler ODPtrCoercionHandlerUPP ;
- typedef ODCoercionHandler ODCoercionHandlerUPP;
- typedef ODAccessorProcPtr ODObjectAccessorUPP ;
- typedef ODCompareProcPtr ODCompareUPP;
- typedef ODCountProcPtr ODCountUPP ;
- typedef ODGetMarkTokenProcPtr ODGetMarkTokenUPP ;
- typedef ODMarkProcPtr ODMarkUPP ;
- typedef ODAdjustMarksProcPtr ODAdjustMarksUPP ;
- typedef ODDisposeTokenProcPtr ODDisposeTokenUPP ;
- typedef ODGetErrDescProcPtr ODGetErrDescUPP ;
- typedef ODPreDispatchProcPtr ODPreDispatchUPP ;
- typedef ODTokenInquiryProcPtr ODTokenInquiryUPP ;
- typedef ODSpecialHandlerPtr ODSpecialHandlerUPP ;
-
- #endif /* SIHELPER_USESROUTINEDESCRIPTORS */
-
- #if SIHELPER_USESROUTINEDESCRIPTORS
- enum {
- uppODEventHandlerProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODAppleEvent*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODAppleEvent*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODDescCoercionHandlerProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODDesc*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODSLong)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODDesc*)))
- };
-
- enum {
- uppODPtrCoercionHandlerProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(long)))
- | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(ODDesc*)))
- };
-
- enum {
- uppODObjectAccessorProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODDesc*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(ODDesc*)))
- | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODCompareProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODBoolean*)))
- | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODCountProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODSLong*)))
- | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODDisposeTokenProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODGetMarkTokenProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODDescType)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODGetErrDescProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODDesc**)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODMarkProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODSLong)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODAdjustMarksProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODSLong)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODSLong)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODPreDispatchProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODError)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODAppleEvent*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ODAppleEvent*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ODSLong)))
- };
-
- enum {
- uppODTokenInquiryProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(ODPart*)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ODOSLToken*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ODSLong)))
- };
-
- #define CallODEventHandlerProc(userRoutine, thePart, theODAppleEvent, reply, handlerRefcon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODEventHandlerProcInfo, (thePart), (theODAppleEvent), (reply), (handlerRefcon))
- #define NewODEventHandlerProc( theHandlerProc ) \
- (ODEventHandlerUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODEventHandlerProcInfo, GetCurrentArchitecture() )
-
- #define CallODDescCoercionHandlerProc(userRoutine, thePart, theODDesc, toType, handlerRefCon, result) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODDescCoercionHandlerProcInfo, (thePart), (theODDesc), (toType), (handlerRefCon), (result))
- #define NewODDescCoercionHandlerProc( theHandlerProc ) \
- (ODDescCoercionHandlerUPP) NewRoutineDescriptor( \
- (ProcPtr)(theHandlerProc), \
- uppODDescCoercionHandlerProcInfo, GetCurrentArchitecture() )
-
- #define CallODPtrCoercionHandlerProc(userRoutine, thePart, typeCode, dataPtr, dataSize, toType, handlerRefCon, result) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODPtrCoercionHandlerProcInfo, (thePart), (typeCode), (dataPtr), (dataSize), (toType), (handlerRefCon), (result))
- #define NewODPtrCoercionHandlerProc( theHandlerProc ) \
- (ODPtrCoercionHandlerUPP) NewRoutineDescriptor( \
- (ProcPtr)(theHandlerProc), \
- uppODPtrCoercionHandlerProcInfo, GetCurrentArchitecture() )
-
-
- #define CallODObjectAccessorProc(userRoutine, thePart, desiredClass, container, containerClass, form, selectionData, value, handlerRefCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODObjectAccessorProcInfo, (thePart), (desiredClass), (container), (containerClass), (form), (selectionData), (value), (handlerRefCon))
- #define NewODObjectAccessorProc( theAccessorProc ) \
- (ODObjectAccessorUPP) NewRoutineDescriptor( (ProcPtr)(theAccessorProc),\
- uppODObjectAccessorProcInfo, GetCurrentArchitecture() )
-
- #define CallODCompareProc(userRoutine, thePart, oper, obj1, obj2, result, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODCompareProcInfo, (thePart), (oper), (obj1), (obj2), (result), (refCon))
- #define NewODCompareProc( theHandlerProc ) \
- (ODCompareUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODCompareProcInfo, GetCurrentArchitecture() )
-
- #define CallODCountProc(userRoutine, thePart, desiredType, containerClass, container, result, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODCountProcInfo, (thePart), (desiredType), (containerClass), (container), (result), (refCon))
- #define NewODCountProc( theHandlerProc ) \
- (ODCountUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODCountProcInfo, GetCurrentArchitecture() )
-
- #define CallODDisposeTokenProc(userRoutine, thePart, unneededToken, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODDisposeTokenProcInfo, (thePart), (unneededToken), (refCon))
- #define NewODDisposeTokenProc( theHandlerProc ) \
- (ODDisposeTokenUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODDisposeTokenProcInfo, GetCurrentArchitecture() )
-
- #define CallODGetMarkTokenProc(userRoutine, thePart, dContainerToken, containerClass, result, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODGetMarkTokenProcInfo, (thePart), (dContainerToken), (containerClass), (result), (refCon))
- #define NewODGetMarkTokenProc( theHandlerProc ) \
- (ODGetMarkTokenUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODGetMarkTokenProcInfo, GetCurrentArchitecture() )
-
- #define CallODMarkProc(userRoutine, thePart, dToken, markToken, index, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODMarkProcInfo, (thePart), (dToken), (markToken), (index), (refCon))
- #define NewODMarkProc( theHandlerProc ) \
- (ODMarkUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODMarkProcInfo, GetCurrentArchitecture() )
-
- #define CallODAdjustMarksProc(userRoutine, thePart, newStart, newStop, markToken, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODAdjustMarksProcInfo, (thePart), (newStart), (newStop), (markToken), (refCon))
- #define NewODAdjustMarksProc( theHandlerProc ) \
- (ODAdjustMarksUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODAdjustMarksProcInfo, GetCurrentArchitecture() )
-
- #define CallODGetErrDescProc(userRoutine, thePart, errDesc, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODGetErrDescProcInfo, (thePart), (errDesc), (refCon))
- #define NewODGetErrDescProc( theHandlerProc ) \
- (ODGetErrDescUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODGetErrDescProcInfo, GetCurrentArchitecture() )
-
- #define CallODPreDispatchProc(userRoutine, thePart, theODAppleEvent, reply, handlerRefcon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppODPreDispatchProcInfo, (thePart), (theODAppleEvent), (reply), (handlerRefcon))
- #define NewODPreDispatchProc( theHandlerProc ) \
- (ODPreDispatchUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODPreDispatchProcInfo, GetCurrentArchitecture() )
-
- #define CallODTokenInquiryProc(userRoutine, token, refCon) \
- (ODPart*)CallUniversalProc((UniversalProcPtr)(userRoutine), uppODTokenInquiryProcInfo, (token), (refCon))
- #define NewODTokenInquiryProc( theHandlerProc ) \
- (ODTokenInquiryUPP) NewRoutineDescriptor( (ProcPtr)(theHandlerProc), \
- uppODTokenInquiryProcInfo, GetCurrentArchitecture() )
-
- #else /* if not SIHELPER_USESROUTINEDESCRIPTORS */
-
- #define CallODEventHandlerProc(userRoutine, thePart, theODAppleEvent, reply, handlerRefcon) \
- (*(userRoutine))((thePart), (theODAppleEvent), (reply), (handlerRefcon))
- #define NewODEventHandlerProc(theHandlerProc) \
- (ODEventHandlerUPP)(theHandlerProc)
-
- #define CallODObjectAccessorProc(userRoutine, thePart, desiredClass, container, containerClass, form, selectionData, value, handlerRefCon) \
- (*(userRoutine))((thePart), (desiredClass), (container), (containerClass), (form), (selectionData), (value), (handlerRefCon))
- #define NewODObjectAccessorProc(theAccessorProc) \
- (ODObjectAccessorUPP)(theAccessorProc)
-
- #define CallODCompareProc(userRoutine, thePart, oper, obj1, obj2, result, refCon) \
- (*(userRoutine))((thePart), (oper), (obj1), (obj2), (result), (refCon))
- #define NewODCompareProc(theAccessorProc) \
- (ODCompareUPP)(theAccessorProc)
-
- #define CallODCountProc(userRoutine, thePart, desiredType, containerClass, container, result, refCon) \
- (*(userRoutine))((thePart), (desiredType), (containerClass), (container), (result), (refCon))
- #define NewODCountProc(theAccessorProc) \
- (ODCountUPP)(theAccessorProc)
-
- #define CallODGetMarkTokenProc(userRoutine, thePart, dContainerToken, containerClass, result, refCon) \
- (*(userRoutine))((thePart), (dContainerToken), (containerClass), (result), (refCon))
- #define NewODGetMarkTokenProc(theAccessorProc) \
- (ODGetMarkTokenUPP)(theAccessorProc)
-
- #define CallODMarkProc(userRoutine, thePart, dToken, markToken, index, refCon) \
- (*(userRoutine))((thePart), (dToken), (markToken), (index), (refCon))
- #define NewODMarkProc(theAccessorProc) \
- (ODMarkUPP)(theAccessorProc)
-
- #define CallODAdjustMarksProc(userRoutine, thePart, newStart, newStop, markToken, refCon) \
- (*(userRoutine))((thePart), (newStart), (newStop), (markToken), (refCon))
- #define NewODAdjustMarksProc(theAccessorProc) \
- (ODAdjustMarksUPP)(theAccessorProc)
-
- #define CallODDisposeTokenProc(userRoutine, thePart, unneededToken, refCon) \
- (*(userRoutine))((thePart), (unneededToken), (refCon))
- #define NewODDisposeTokenProc(theAccessorProc) \
- (ODDisposeTokenUPP)(theAccessorProc)
-
- #define CallODGetErrDescProc(userRoutine, thePart, errDesc, refCon) \
- (*(userRoutine))((thePart), (errDesc), (refCon))
- #define NewODGetErrDescProc(theAccessorProc) \
- (ODGetErrDescUPP)(theAccessorProc)
-
- #define CallODPreDispatchProc(userRoutine, thePart, theODAppleEvent, reply, handlerRefcon) \
- (*(userRoutine))((thePart), (theODAppleEvent), (reply), (handlerRefcon))
- #define NewODPreDispatchProc(theHandlerProc) \
- (ODEventHandlerUPP)(theHandlerProc)
-
- #define CallODTokenInquiryProc(userRoutine, token, refCon) \
- (*(userRoutine))((token), (refCon))
- #define NewODTokenInquiryProc(theAccessorProc) \
- (ODTokenInquiryUPP)(theAccessorProc)
-
-
- #define CallODDescCoercionHandlerProc(userRoutine, thePart, theODDesc, toType, handlerRefCon, result) \
- (*(userRoutine))((thePart), (theODDesc), (toType), (handlerRefCon), (result))
- #define NewODDescCoercionHandlerProc( theHandlerProc ) \
- (ODCoercionHandlerUPP)(theHandlerProc)
- #define CallODPtrCoercionHandlerProc(userRoutine, thePart, typeCode, dataPtr, dataSize, toType, handlerRefCon, result) \
- (*(userRoutine))((thePart), (typeCode), (dataPtr), (dataSize), (toType), (handlerRefCon), (result))
- #define NewODPtrCoercionHandlerProc( theHandlerProc ) \
- (ODCoercionHandlerUPP)(theHandlerProc)
-
-
- #endif /* SIHELPER_USESROUTINEDESCRIPTORS */
-
-
- //==============================================================================
- // SIHelper
- //==============================================================================
-
- #define ODNVMethod
-
- class SIHelper : public SIHelperAbs
- {
- public:
-
- SIHelper();
- ODVMethod ~SIHelper();
- ODNVMethod void InitSIHelper(ODSession* session, ODSemanticInterface* helpee);
-
- // SIHelpAbs overrides
-
- ODVMethod ODError CallEventHandler(
- ODPart* thePart,
- ODAppleEvent* theODAppleEvent,
- ODAppleEvent* reply);
- ODVMethod ODError CallPredispatchProc(
- ODPart* thePart,
- ODAppleEvent* theODAppleEvent,
- ODAppleEvent* reply);
- ODVMethod ODError CallCoercionHandler(
- ODPart* thePart,
- ODDesc* theODDesc,
- ODDescType toType,
- ODDesc* result);
- ODVMethod ODError CallObjectAccessor(
- ODPart* thePart,
- ODDescType desiredClass,
- ODOSLToken* container,
- ODDescType containerClass,
- ODDescType form,
- ODDesc* selectionData,
- ODOSLToken* value);
- ODVMethod ODError CallCompareProc(
- ODPart* thePart,
- ODDescType oper,
- ODOSLToken* obj1,
- ODOSLToken* obj2,
- ODBoolean* result);
- ODVMethod ODError CallCountProc(
- ODPart* thePart,
- ODDescType desiredType,
- ODDescType containerClass,
- ODOSLToken* container,
- ODSLong* result);
- ODVMethod ODError CallDisposeTokenProc(
- ODPart* thePart,
- ODOSLToken* unneededToken);
- ODVMethod ODError CallGetErrDescProc(
- ODPart* thePart,
- ODDesc** errDesc);
- ODVMethod ODError CallGetMarkTokenProc(
- ODPart* thePart,
- ODOSLToken* dContainerToken,
- ODDescType containerClass,
- ODOSLToken* result);
- ODVMethod ODError CallMarkProc(
- ODPart* thePart,
- ODOSLToken* dToken,
- ODOSLToken* markToken,
- ODSLong index);
- ODVMethod ODError CallAdjustMarksProc(
- ODPart* thePart,
- ODSLong newStart,
- ODSLong newStop,
- ODOSLToken* markToken);
-
- // Object accessor management
-
- ODVMethod void InstallObjectAccessor(ODDescType desiredClass,
- ODDescType containerType,
- ODObjectAccessorUPP theAccessor,
- ODSLong accessorRefcon);
-
- ODVMethod void GetObjectAccessor(ODDescType desiredClass,
- ODDescType containerType,
- ODObjectAccessorUPP* theAccessor, // return parameter
- ODSLong* accessorRefcon); // return parameter
-
- ODVMethod void RemoveObjectAccessor(ODDescType desiredClass,
- ODDescType containerType,
- ODObjectAccessorUPP theAccessor);
-
- // Special proc management
-
- ODVMethod void InstallCompareProc(ODCompareUPP compareProc,
- ODSLong refCon);
-
- ODVMethod void InstallCountProc(ODCountUPP countProc,
- ODSLong refCon);
-
- ODVMethod void InstallDisposeTokenProc(ODDisposeTokenUPP disposeTokenProc,
- ODSLong refCon);
-
- ODVMethod void InstallGetMarkTokenProc(ODGetMarkTokenUPP getMarkTokenProc,
- ODSLong refCon);
-
- ODVMethod void InstallMarkProc(ODMarkUPP markProc,
- ODSLong refCon);
-
- ODVMethod void InstallAdjustMarksProc(ODAdjustMarksUPP adjustMarksProc,
- ODSLong refCon);
-
- ODVMethod void InstallGetErrDescProc(ODGetErrDescUPP errorDescProc,
- ODSLong refCon);
-
- ODVMethod void InstallTokenInquiryProc(ODTokenInquiryUPP tokenInquiryProc,
- ODSLong refCon);
-
- // Event handler management
-
- ODVMethod void InstallEventHandler( ODEventClass theAEEventClass,
- ODEventID theAEEventID,
- ODEventHandlerUPP handler,
- ODSLong handlerRefcon);
-
- ODVMethod void RemoveEventHandler(ODEventClass theAEEventClass,
- ODEventID theAEEventID,
- ODEventHandlerUPP handler);
-
- ODVMethod void GetEventHandler(ODEventClass theAEEventClass,
- ODEventID theAEEventID,
- ODEventHandlerUPP* handler,
- ODSLong* handlerRefcon);
-
- ODVMethod void InstallCoercionHandler(ODDescType fromType,
- ODDescType toType,
- ODCoercionHandlerUPP handler,
- ODSLong handlerRefcon,
- ODBoolean fromTypeIsDesc);
-
- ODVMethod void RemoveCoercionHandler(ODDescType fromType,
- ODDescType toType,
- ODCoercionHandlerUPP handler);
-
- ODVMethod void GetCoercionHandler(ODDescType fromType,
- ODDescType toType,
- ODCoercionHandlerUPP* handler,
- ODSLong* handlerRefcon,
- ODBoolean* fromTypeIsDesc);
-
- ODVMethod void InstallSpecialHandler(AEKeyword functionClass,
- ODSpecialHandlerUPP handler,
- ODSLong refCon);
-
- ODVMethod void RemoveSpecialHandler(AEKeyword functionClass,
- ODSpecialHandlerUPP handler);
-
- ODVMethod void GetSpecialHandler(AEKeyword functionClass,
- ODSpecialHandlerUPP* handler,
- ODSLong* refCon);
-
- // ODVMethod void SetOSLSupportFlags(short flags);
-
- // ODVMethod short GetOSLSupportFlags();
-
- private: // Private by convention
-
- ODBoolean LookupEventHandler(ODEventClass eventClass,
- ODEventID eventID,
- ODEventHandlerUPP* handler,
- ODSLong* handlerRefcon);
-
- ODBoolean LookupCoercionHandler(ODDescType fromType,
- ODDescType toType,
- ODCoercionHandlerUPP* handler,
- ODSLong* handlerRefcon,
- ODBoolean* fromTypeIsDesc);
-
- ODBoolean LookupObjectAccessor(ODDescType desiredClass,
- ODDescType containerType,
- ODObjectAccessorUPP* theAccessor,
- ODSLong* accessorRefcon);
-
- private:
-
- void ThrowProcNotFound(SIHashTable* table);
- void AddToTable(ODDescType key1, ODDescType key2, UniversalProcPtr handler,
- ODSLong handlerRefCon,
- ODBoolean fromTypeIsDesc,
- SIHashTable* table);
- void RetrieveFromTable(ODDescType key1, ODDescType key2,
- UniversalProcPtr* handler,
- ODSLong* handlerRefCon,
- ODBoolean* fromTypeIsDesc,
- SIHashTable* table);
- void RemoveFromTable(ODDescType key1, ODDescType key2, UniversalProcPtr handler,
- SIHashTable* table);
- ODBoolean HandlerLookup(
- ODDescType key1,
- ODDescType key2,
- SIHashTable* theSIHashTable,
- void* theValue);
-
- ODSemanticInterface* fSemanticInterface;
- ODNameResolver* fNameResolver;
-
- SIHashTable* fEventHandlerTable;
- SIHashTable* fObjectAccessorTable;
- SIHashTable* fCoercionHandlerTable;
-
- // Special Handler procs
- ODCountUPP fCountProcPtr;
- ODSLong fCountProcPtrRefCon;
- ODCompareUPP fCompareProcPtr;
- ODSLong fCompareProcPtrRefCon;
- ODDisposeTokenUPP fDisposeTokenProcPtr;
- ODSLong fDisposeTokenProcPtrRefCon;
- ODGetErrDescUPP fErrDescProcPtr;
- ODSLong fErrDescProcPtrRefCon;
- ODGetMarkTokenUPP fGetMarkTokenProcPtr;
- ODSLong fGetMarkTokenProcPtrRefCon;
- ODMarkUPP fMarkProcPtr;
- ODSLong fMarkProcPtrRefCon;
- ODAdjustMarksUPP fAdjustMarksProcPtr;
- ODSLong fAdjustMarksProcPtrRefCon;
- ODPreDispatchUPP fPreDispatchProcPtr;
- ODSLong fPreDispatchProcPtrRefCon;
-
- ODTokenInquiryUPP fTokenInquiryProc;
- ODSLong fTokenInquiryProcRefCon;
-
- short fOSLSupportFlags;
- };
-
-
- #endif /* _SIHELPER_ */
-