
/*
 * This file was generated by the SOM Compiler.
 * FileName: \odwin\h\DRAGDRP.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.3
 *     SOM Emitter emith.dll: 2.41
 */

/*
 * 
 *  Classes defined in this interface
 * 
 */


#ifndef SOM_ODDragAndDrop_h
#define SOM_ODDragAndDrop_h


/*
 * Passthru lines: File: "C.h", "before"
 */

#define kODdragMove           			0x00000008
#define kODdragCopy           			0x00000010
#define kODdragLink           			0x00000020


#include <som.h>

/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))



/*
 * Define class data structures as resolution macros
 */
#define ODDragAndDropClassData (*resolve_ODDragAndDropClassData())
#define ODDragAndDropCClassData (*resolve_ODDragAndDropCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODDragAndDrop
#define ODDragAndDrop SOMObject
#endif
#include <DragDrpB.h>

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef ODObject
    #define ODObject SOMObject
#endif /* ODObject */
#ifndef ODExtension
    #define ODExtension SOMObject
#endif /* ODExtension */
#ifndef ODBaseDragAndDrop
    #define ODBaseDragAndDrop SOMObject
#endif /* ODBaseDragAndDrop */
#ifndef ODSession
    #define ODSession SOMObject
#endif /* ODSession */
#ifndef ODPart
    #define ODPart SOMObject
#endif /* ODPart */
#ifndef ODStorageUnit
    #define ODStorageUnit SOMObject
#endif /* ODStorageUnit */
#ifndef ODFrame
    #define ODFrame SOMObject
#endif /* ODFrame */
#ifndef ODDragAndDrop
    #define ODDragAndDrop SOMObject
#endif /* ODDragAndDrop */
#ifndef ODFacet
    #define ODFacet SOMObject
#endif /* ODFacet */
#ifndef ODStorageSystem
    #define ODStorageSystem SOMObject
#endif /* ODStorageSystem */
#ifndef ODWindow
    #define ODWindow SOMObject
#endif /* ODWindow */
#ifndef ODWindowState
    #define ODWindowState SOMObject
#endif /* ODWindowState */
#ifndef ODDragItemIterator
    #define ODDragItemIterator SOMObject
#endif /* ODDragItemIterator */
#ifndef ODStorageUnitView
    #define ODStorageUnitView SOMObject
#endif /* ODStorageUnitView */

/*
 * End of user-defined types.
 */

#define ODDragAndDrop_MajorVersion 1
#define ODDragAndDrop_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODDragAndDropNewClass c
#define ODDragAndDropClassData d
#define ODDragAndDropCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODDragAndDrop_classObj ODDragAndDropClassData.classObject
#define _ODDragAndDrop ODDragAndDrop_classObj

/*
 * Declare the class creation procedure
 */
SOMEXTERN SOMClass * SOMLINK ODDragAndDropNewClass(integer4 somntmajorVersion,
		integer4 somntminorVersion);

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODDragAndDropClassDataStructure {
	SOMClass *classObject;
	somMToken ShowPasteAsDialog;
	somMToken GetDragAttributes;
	somMToken MyDragTrackingHandler;
	somMToken MyReceiveDropHandler;
	somMToken MySendDataProc;
	somMToken FindTargetFacet;
	somMToken InitDragAndDrop;
	somMToken CanvasRequested;
	somMToken Locked;
	somMToken DrawDrag;
	somMToken ProcessDragOver;
	somMToken ProcessDragLeave;
	somMToken ProcessDrop;
	somMToken GetDragOrigin;
	somMToken GetDropKeyState;
	somMToken AllocDragItemList;
	somMToken FreeDragItemList;
	somMToken CloseAllDragItems;
}  _ODDragAndDropClassData;
SOMEXTERN struct ODDragAndDropClassDataStructure * SOMLINK resolve_ODDragAndDropClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODDragAndDropCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODDragAndDropCClassData;
SOMEXTERN struct ODDragAndDropCClassDataStructure * SOMLINK resolve_ODDragAndDropCClassData(void);

/*
 * New and Renew macros for ODDragAndDrop
 */
#define ODDragAndDropNew() \
   (_somNew(_ODDragAndDrop ? _ODDragAndDrop : ODDragAndDropNewClass(ODDragAndDrop_MajorVersion, ODDragAndDrop_MinorVersion)))
#define ODDragAndDropRenew(buf) \
   (_somRenew(_ODDragAndDrop ? _ODDragAndDrop : ODDragAndDropNewClass(ODDragAndDrop_MajorVersion, ODDragAndDrop_MinorVersion), buf))

/*
 * Override method: somInit
 */
#define ODDragAndDrop_somInit(somSelf) \
	SOMObject_somInit(somSelf)

/*
 * Override method: somUninit
 */
#define ODDragAndDrop_somUninit(somSelf) \
	SOMObject_somUninit(somSelf)

/*
 * Override method: Clear
 */
#define ODDragAndDrop_Clear(somSelf,ev) \
	ODBaseDragAndDrop_Clear(somSelf,ev)

/*
 * Override method: GetContentStorageUnit
 */
#define ODDragAndDrop_GetContentStorageUnit(somSelf,ev) \
	ODBaseDragAndDrop_GetContentStorageUnit(somSelf,ev)

/*
 * Override method: StartDrag
 */
#define ODDragAndDrop_StartDrag(somSelf,ev,srcFrame,imageType,image,destPart,refCon) \
	ODBaseDragAndDrop_StartDrag(somSelf,ev,srcFrame,imageType,image,destPart,refCon)

/*
 * New Method: ShowPasteAsDialog
 */
typedef ODBoolean   (SOMLINK * somTD_ODDragAndDrop_ShowPasteAsDialog)(ODDragAndDrop *somSelf, Environment *ev,
		ODBoolean canPasteLink,
		ODBoolean canEmbed,
		ODFacet* facet,
		ODTypeToken viewType,
		ODStorageUnit* contentSU,
		ODPasteAsResult* theResult);
#define somMD_ODDragAndDrop_ShowPasteAsDialog "::ODDragAndDrop::ShowPasteAsDialog"
#define ODDragAndDrop_ShowPasteAsDialog(somSelf,ev,canPasteLink,canEmbed,facet,viewType,contentSU,theResult) \
    (SOM_Resolve(somSelf, ODDragAndDrop, ShowPasteAsDialog) \
	(somSelf,ev,canPasteLink,canEmbed,facet,viewType,contentSU,theResult))
#ifndef SOMGD_ShowPasteAsDialog
    #if (defined(_ShowPasteAsDialog) || defined(__ShowPasteAsDialog))
        #undef _ShowPasteAsDialog
        #undef __ShowPasteAsDialog
        #define SOMGD_ShowPasteAsDialog 1
    #else
        #define _ShowPasteAsDialog ODDragAndDrop_ShowPasteAsDialog
    #endif /* _ShowPasteAsDialog */
#endif /* SOMGD_ShowPasteAsDialog */

/*
 * New Method: InitDragAndDrop
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_InitDragAndDrop)(ODDragAndDrop *somSelf, Environment *ev,
		ODSession* session);
#define somMD_ODDragAndDrop_InitDragAndDrop "::ODDragAndDrop::InitDragAndDrop"
#define ODDragAndDrop_InitDragAndDrop(somSelf,ev,session) \
    (SOM_Resolve(somSelf, ODDragAndDrop, InitDragAndDrop) \
	(somSelf,ev,session))
#ifndef SOMGD_InitDragAndDrop
    #if (defined(_InitDragAndDrop) || defined(__InitDragAndDrop))
        #undef _InitDragAndDrop
        #undef __InitDragAndDrop
        #define SOMGD_InitDragAndDrop 1
    #else
        #define _InitDragAndDrop ODDragAndDrop_InitDragAndDrop
    #endif /* _InitDragAndDrop */
#endif /* SOMGD_InitDragAndDrop */

/*
 * New Method: GetDragAttributes
 */
typedef ODULong   (SOMLINK * somTD_ODDragAndDrop_GetDragAttributes)(ODDragAndDrop *somSelf, Environment *ev);
#define somMD_ODDragAndDrop_GetDragAttributes "::ODDragAndDrop::GetDragAttributes"
#define ODDragAndDrop_GetDragAttributes(somSelf,ev) \
    (SOM_Resolve(somSelf, ODDragAndDrop, GetDragAttributes) \
	(somSelf,ev))
#ifndef SOMGD_GetDragAttributes
    #if (defined(_GetDragAttributes) || defined(__GetDragAttributes))
        #undef _GetDragAttributes
        #undef __GetDragAttributes
        #define SOMGD_GetDragAttributes 1
    #else
        #define _GetDragAttributes ODDragAndDrop_GetDragAttributes
    #endif /* _GetDragAttributes */
#endif /* SOMGD_GetDragAttributes */

/*
 * New Method: FindTargetFacet
 */
typedef ODFacet*   (SOMLINK * somTD_ODDragAndDrop_FindTargetFacet)(ODDragAndDrop *somSelf, Environment *ev,
		ODPlatformWindow theWindow,
		ODPoint* mouse,
		ODPoint* local);
#define somMD_ODDragAndDrop_FindTargetFacet "::ODDragAndDrop::FindTargetFacet"
#define ODDragAndDrop_FindTargetFacet(somSelf,ev,theWindow,mouse,local) \
    (SOM_Resolve(somSelf, ODDragAndDrop, FindTargetFacet) \
	(somSelf,ev,theWindow,mouse,local))
#ifndef SOMGD_FindTargetFacet
    #if (defined(_FindTargetFacet) || defined(__FindTargetFacet))
        #undef _FindTargetFacet
        #undef __FindTargetFacet
        #define SOMGD_FindTargetFacet 1
    #else
        #define _FindTargetFacet ODDragAndDrop_FindTargetFacet
    #endif /* _FindTargetFacet */
#endif /* SOMGD_FindTargetFacet */

/*
 * New Method: CanvasRequested
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_CanvasRequested)(ODDragAndDrop *somSelf, Environment *ev,
		ODBoolean bRequest);
#define somMD_ODDragAndDrop_CanvasRequested "::ODDragAndDrop::CanvasRequested"
#define ODDragAndDrop_CanvasRequested(somSelf,ev,bRequest) \
    (SOM_Resolve(somSelf, ODDragAndDrop, CanvasRequested) \
	(somSelf,ev,bRequest))
#ifndef SOMGD_CanvasRequested
    #if (defined(_CanvasRequested) || defined(__CanvasRequested))
        #undef _CanvasRequested
        #undef __CanvasRequested
        #define SOMGD_CanvasRequested 1
    #else
        #define _CanvasRequested ODDragAndDrop_CanvasRequested
    #endif /* _CanvasRequested */
#endif /* SOMGD_CanvasRequested */

/*
 * New Method: Locked
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_Locked)(ODDragAndDrop *somSelf, Environment *ev,
		ODBoolean bLock);
#define somMD_ODDragAndDrop_Locked "::ODDragAndDrop::Locked"
#define ODDragAndDrop_Locked(somSelf,ev,bLock) \
    (SOM_Resolve(somSelf, ODDragAndDrop, Locked) \
	(somSelf,ev,bLock))
#ifndef SOMGD_Locked
    #if (defined(_Locked) || defined(__Locked))
        #undef _Locked
        #undef __Locked
        #define SOMGD_Locked 1
    #else
        #define _Locked ODDragAndDrop_Locked
    #endif /* _Locked */
#endif /* SOMGD_Locked */

/*
 * New Method: DrawDrag
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_DrawDrag)(ODDragAndDrop *somSelf, Environment *ev,
		ODULong EraseDraw);
#define somMD_ODDragAndDrop_DrawDrag "::ODDragAndDrop::DrawDrag"
#define ODDragAndDrop_DrawDrag(somSelf,ev,EraseDraw) \
    (SOM_Resolve(somSelf, ODDragAndDrop, DrawDrag) \
	(somSelf,ev,EraseDraw))
#ifndef SOMGD_DrawDrag
    #if (defined(_DrawDrag) || defined(__DrawDrag))
        #undef _DrawDrag
        #undef __DrawDrag
        #define SOMGD_DrawDrag 1
    #else
        #define _DrawDrag ODDragAndDrop_DrawDrag
    #endif /* _DrawDrag */
#endif /* SOMGD_DrawDrag */

/*
 * New Method: ProcessDragOver
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_ProcessDragOver)(ODDragAndDrop *somSelf, Environment *ev,
		DWORD grfKeyState,
		POINTL pt,
		DWORD* pdwEffect,
		LPVOID pDataObj);
#define somMD_ODDragAndDrop_ProcessDragOver "::ODDragAndDrop::ProcessDragOver"
#define ODDragAndDrop_ProcessDragOver(somSelf,ev,grfKeyState,pt,pdwEffect,pDataObj) \
    (SOM_Resolve(somSelf, ODDragAndDrop, ProcessDragOver) \
	(somSelf,ev,grfKeyState,pt,pdwEffect,pDataObj))
#ifndef SOMGD_ProcessDragOver
    #if (defined(_ProcessDragOver) || defined(__ProcessDragOver))
        #undef _ProcessDragOver
        #undef __ProcessDragOver
        #define SOMGD_ProcessDragOver 1
    #else
        #define _ProcessDragOver ODDragAndDrop_ProcessDragOver
    #endif /* _ProcessDragOver */
#endif /* SOMGD_ProcessDragOver */

/*
 * New Method: ProcessDragLeave
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_ProcessDragLeave)(ODDragAndDrop *somSelf, Environment *ev);
#define somMD_ODDragAndDrop_ProcessDragLeave "::ODDragAndDrop::ProcessDragLeave"
#define ODDragAndDrop_ProcessDragLeave(somSelf,ev) \
    (SOM_Resolve(somSelf, ODDragAndDrop, ProcessDragLeave) \
	(somSelf,ev))
#ifndef SOMGD_ProcessDragLeave
    #if (defined(_ProcessDragLeave) || defined(__ProcessDragLeave))
        #undef _ProcessDragLeave
        #undef __ProcessDragLeave
        #define SOMGD_ProcessDragLeave 1
    #else
        #define _ProcessDragLeave ODDragAndDrop_ProcessDragLeave
    #endif /* _ProcessDragLeave */
#endif /* SOMGD_ProcessDragLeave */

/*
 * New Method: ProcessDrop
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_ProcessDrop)(ODDragAndDrop *somSelf, Environment *ev,
		DWORD grfKeyState,
		POINTL pt,
		DWORD* pdwEffect);
#define somMD_ODDragAndDrop_ProcessDrop "::ODDragAndDrop::ProcessDrop"
#define ODDragAndDrop_ProcessDrop(somSelf,ev,grfKeyState,pt,pdwEffect) \
    (SOM_Resolve(somSelf, ODDragAndDrop, ProcessDrop) \
	(somSelf,ev,grfKeyState,pt,pdwEffect))
#ifndef SOMGD_ProcessDrop
    #if (defined(_ProcessDrop) || defined(__ProcessDrop))
        #undef _ProcessDrop
        #undef __ProcessDrop
        #define SOMGD_ProcessDrop 1
    #else
        #define _ProcessDrop ODDragAndDrop_ProcessDrop
    #endif /* _ProcessDrop */
#endif /* SOMGD_ProcessDrop */

/*
 * New Method: GetDragOrigin
 */
typedef ODPoint   (SOMLINK * somTD_ODDragAndDrop_GetDragOrigin)(ODDragAndDrop *somSelf, Environment *ev);
#define somMD_ODDragAndDrop_GetDragOrigin "::ODDragAndDrop::GetDragOrigin"
#define ODDragAndDrop_GetDragOrigin(somSelf,ev) \
    (SOM_Resolve(somSelf, ODDragAndDrop, GetDragOrigin) \
	(somSelf,ev))
#ifndef SOMGD_GetDragOrigin
    #if (defined(_GetDragOrigin) || defined(__GetDragOrigin))
        #undef _GetDragOrigin
        #undef __GetDragOrigin
        #define SOMGD_GetDragOrigin 1
    #else
        #define _GetDragOrigin ODDragAndDrop_GetDragOrigin
    #endif /* _GetDragOrigin */
#endif /* SOMGD_GetDragOrigin */

/*
 * New Method: GetDropKeyState
 */
typedef ODULong   (SOMLINK * somTD_ODDragAndDrop_GetDropKeyState)(ODDragAndDrop *somSelf, Environment *ev);
#define somMD_ODDragAndDrop_GetDropKeyState "::ODDragAndDrop::GetDropKeyState"
#define ODDragAndDrop_GetDropKeyState(somSelf,ev) \
    (SOM_Resolve(somSelf, ODDragAndDrop, GetDropKeyState) \
	(somSelf,ev))
#ifndef SOMGD_GetDropKeyState
    #if (defined(_GetDropKeyState) || defined(__GetDropKeyState))
        #undef _GetDropKeyState
        #undef __GetDropKeyState
        #define SOMGD_GetDropKeyState 1
    #else
        #define _GetDropKeyState ODDragAndDrop_GetDropKeyState
    #endif /* _GetDropKeyState */
#endif /* SOMGD_GetDropKeyState */

/*
 * New Method: AllocDragItemList
 */
typedef HGLOBAL   (SOMLINK * somTD_ODDragAndDrop_AllocDragItemList)(ODDragAndDrop *somSelf, Environment *ev);
#define somMD_ODDragAndDrop_AllocDragItemList "::ODDragAndDrop::AllocDragItemList"
#define ODDragAndDrop_AllocDragItemList(somSelf,ev) \
    (SOM_Resolve(somSelf, ODDragAndDrop, AllocDragItemList) \
	(somSelf,ev))
#ifndef SOMGD_AllocDragItemList
    #if (defined(_AllocDragItemList) || defined(__AllocDragItemList))
        #undef _AllocDragItemList
        #undef __AllocDragItemList
        #define SOMGD_AllocDragItemList 1
    #else
        #define _AllocDragItemList ODDragAndDrop_AllocDragItemList
    #endif /* _AllocDragItemList */
#endif /* SOMGD_AllocDragItemList */

/*
 * New Method: FreeDragItemList
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_FreeDragItemList)(ODDragAndDrop *somSelf, Environment *ev,
		HGLOBAL hGlobList);
#define somMD_ODDragAndDrop_FreeDragItemList "::ODDragAndDrop::FreeDragItemList"
#define ODDragAndDrop_FreeDragItemList(somSelf,ev,hGlobList) \
    (SOM_Resolve(somSelf, ODDragAndDrop, FreeDragItemList) \
	(somSelf,ev,hGlobList))
#ifndef SOMGD_FreeDragItemList
    #if (defined(_FreeDragItemList) || defined(__FreeDragItemList))
        #undef _FreeDragItemList
        #undef __FreeDragItemList
        #define SOMGD_FreeDragItemList 1
    #else
        #define _FreeDragItemList ODDragAndDrop_FreeDragItemList
    #endif /* _FreeDragItemList */
#endif /* SOMGD_FreeDragItemList */

/*
 * New Method: CloseAllDragItems
 */
typedef void   (SOMLINK * somTD_ODDragAndDrop_CloseAllDragItems)(ODDragAndDrop *somSelf, Environment *ev);
#define somMD_ODDragAndDrop_CloseAllDragItems "::ODDragAndDrop::CloseAllDragItems"
#define ODDragAndDrop_CloseAllDragItems(somSelf,ev) \
    (SOM_Resolve(somSelf, ODDragAndDrop, CloseAllDragItems) \
	(somSelf,ev))
#ifndef SOMGD_CloseAllDragItems
    #if (defined(_CloseAllDragItems) || defined(__CloseAllDragItems))
        #undef _CloseAllDragItems
        #undef __CloseAllDragItems
        #define SOMGD_CloseAllDragItems 1
    #else
        #define _CloseAllDragItems ODDragAndDrop_CloseAllDragItems
    #endif /* _CloseAllDragItems */
#endif /* SOMGD_CloseAllDragItems */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODDragAndDrop_InitBaseDragAndDrop ODBaseDragAndDrop_InitBaseDragAndDrop
#define ODDragAndDrop_InitObject ODObject_InitObject
#define ODDragAndDrop_IsInitialized ODObject_IsInitialized
#define ODDragAndDrop_HasExtension ODObject_HasExtension
#define ODDragAndDrop_GetExtension ODObject_GetExtension
#define ODDragAndDrop_ReleaseExtension ODObject_ReleaseExtension
#define ODDragAndDrop_Purge ODObject_Purge
#define ODDragAndDrop_IsEqualTo ODObject_IsEqualTo
#define ODDragAndDrop_SubClassResponsibility ODObject_SubClassResponsibility
#define ODDragAndDrop_somDefaultInit SOMObject_somDefaultInit
#define ODDragAndDrop_somDestruct SOMObject_somDestruct
#define ODDragAndDrop_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODDragAndDrop_somDefaultAssign SOMObject_somDefaultAssign
#define ODDragAndDrop_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODDragAndDrop_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODDragAndDrop_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODDragAndDrop_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODDragAndDrop_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODDragAndDrop_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODDragAndDrop_somFree SOMObject_somFree
#define ODDragAndDrop_somGetClass SOMObject_somGetClass
#define ODDragAndDrop_somGetClassName SOMObject_somGetClassName
#define ODDragAndDrop_somGetSize SOMObject_somGetSize
#define ODDragAndDrop_somIsA SOMObject_somIsA
#define ODDragAndDrop_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODDragAndDrop_somRespondsTo SOMObject_somRespondsTo
#define ODDragAndDrop_somDispatch SOMObject_somDispatch
#define ODDragAndDrop_somClassDispatch SOMObject_somClassDispatch
#define ODDragAndDrop_somCastObj SOMObject_somCastObj
#define ODDragAndDrop_somResetObj SOMObject_somResetObj
#define ODDragAndDrop_somDispatchV SOMObject_somDispatchV
#define ODDragAndDrop_somDispatchL SOMObject_somDispatchL
#define ODDragAndDrop_somDispatchA SOMObject_somDispatchA
#define ODDragAndDrop_somDispatchD SOMObject_somDispatchD
#define ODDragAndDrop_somPrintSelf SOMObject_somPrintSelf
#define ODDragAndDrop_somDumpSelf SOMObject_somDumpSelf
#define ODDragAndDrop_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODDragAndDrop_h */
