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

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


#ifndef SOM_ODFacet_h
#define SOM_ODFacet_h


#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 ODFacetClassData (*resolve_ODFacetClassData())
#define ODFacetCClassData (*resolve_ODFacetCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODFacet
#define ODFacet SOMObject
#endif
#include <FacetB.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 ODBaseFacet
    #define ODBaseFacet SOMObject
#endif /* ODBaseFacet */
#ifndef ODCanvas
    #define ODCanvas SOMObject
#endif /* ODCanvas */
#ifndef ODDragItemIterator
    #define ODDragItemIterator SOMObject
#endif /* ODDragItemIterator */
#ifndef ODFacet
    #define ODFacet SOMObject
#endif /* ODFacet */
#ifndef ODFacetIterator
    #define ODFacetIterator SOMObject
#endif /* ODFacetIterator */
#ifndef ODFrame
    #define ODFrame SOMObject
#endif /* ODFrame */
#ifndef ODShape
    #define ODShape SOMObject
#endif /* ODShape */
#ifndef ODTransform
    #define ODTransform SOMObject
#endif /* ODTransform */
#ifndef ODWindow
    #define ODWindow SOMObject
#endif /* ODWindow */

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

#define ODFacet_MajorVersion 1
#define ODFacet_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODFacetNewClass c
#define ODFacetClassData d
#define ODFacetCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODFacet_classObj ODFacetClassData.classObject
#define _ODFacet ODFacet_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODFacetClassDataStructure {
	SOMClass *classObject;
	somMToken InitFacet;
	somMToken InitChildFacet;
	somMToken GetNode;
	somMToken NeedsUpdate;
	somMToken SetNeedsUpdate;
}  _ODFacetClassData;
SOMEXTERN struct ODFacetClassDataStructure * SOMLINK resolve_ODFacetClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODFacetCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODFacetCClassData;
SOMEXTERN struct ODFacetCClassDataStructure * SOMLINK resolve_ODFacetCClassData(void);

/*
 * New and Renew macros for ODFacet
 */
#define ODFacetNew() \
   (_somNew(_ODFacet ? _ODFacet : ODFacetNewClass(ODFacet_MajorVersion, ODFacet_MinorVersion)))
#define ODFacetRenew(buf) \
   (_somRenew(_ODFacet ? _ODFacet : ODFacetNewClass(ODFacet_MajorVersion, ODFacet_MinorVersion), buf))

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

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

/*
 * Override method: Purge
 */
#define ODFacet_Purge(somSelf,ev,size) \
	ODObject_Purge(somSelf,ev,size)

/*
 * Override method: GetFrame
 */
#define ODFacet_GetFrame(somSelf,ev) \
	ODBaseFacet_GetFrame(somSelf,ev)

/*
 * Override method: CreateEmbeddedFacet
 */
#define ODFacet_CreateEmbeddedFacet(somSelf,ev,frame,clipShape,externalTransform,canvas,biasCanvas,siblingFacet,position) \
	ODBaseFacet_CreateEmbeddedFacet(somSelf,ev,frame,clipShape,externalTransform,canvas,biasCanvas,siblingFacet,position)

/*
 * Override method: RemoveFacet
 */
#define ODFacet_RemoveFacet(somSelf,ev,facet) \
	ODBaseFacet_RemoveFacet(somSelf,ev,facet)

/*
 * Override method: MoveBefore
 */
#define ODFacet_MoveBefore(somSelf,ev,child,sibling) \
	ODBaseFacet_MoveBefore(somSelf,ev,child,sibling)

/*
 * Override method: MoveBehind
 */
#define ODFacet_MoveBehind(somSelf,ev,child,sibling) \
	ODBaseFacet_MoveBehind(somSelf,ev,child,sibling)

/*
 * Override method: GetContainingFacet
 */
#define ODFacet_GetContainingFacet(somSelf,ev) \
	ODBaseFacet_GetContainingFacet(somSelf,ev)

/*
 * Override method: CreateFacetIterator
 */
#define ODFacet_CreateFacetIterator(somSelf,ev,traversalType,siblingOrder) \
	ODBaseFacet_CreateFacetIterator(somSelf,ev,traversalType,siblingOrder)

/*
 * Override method: CreateShape
 */
#define ODFacet_CreateShape(somSelf,ev) \
	ODBaseFacet_CreateShape(somSelf,ev)

/*
 * Override method: GetClipShape
 */
#define ODFacet_GetClipShape(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetClipShape(somSelf,ev,biasCanvas)

/*
 * Override method: ChangeGeometry
 */
#define ODFacet_ChangeGeometry(somSelf,ev,clipShape,transform,biasCanvas) \
	ODBaseFacet_ChangeGeometry(somSelf,ev,clipShape,transform,biasCanvas)

/*
 * Override method: GetAggregateClipShape
 */
#define ODFacet_GetAggregateClipShape(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetAggregateClipShape(somSelf,ev,biasCanvas)

/*
 * Override method: GetWindowAggregateClipShape
 */
#define ODFacet_GetWindowAggregateClipShape(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetWindowAggregateClipShape(somSelf,ev,biasCanvas)

/*
 * Override method: InvalidateAggregateClipShape
 */
#define ODFacet_InvalidateAggregateClipShape(somSelf,ev) \
	ODBaseFacet_InvalidateAggregateClipShape(somSelf,ev)

/*
 * Override method: GetActiveShape
 */
#define ODFacet_GetActiveShape(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetActiveShape(somSelf,ev,biasCanvas)

/*
 * Override method: ChangeActiveShape
 */
#define ODFacet_ChangeActiveShape(somSelf,ev,activeShape,biasCanvas) \
	ODBaseFacet_ChangeActiveShape(somSelf,ev,activeShape,biasCanvas)

/*
 * Override method: CreateTransform
 */
#define ODFacet_CreateTransform(somSelf,ev) \
	ODBaseFacet_CreateTransform(somSelf,ev)

/*
 * Override method: GetExternalTransform
 */
#define ODFacet_GetExternalTransform(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetExternalTransform(somSelf,ev,biasCanvas)

/*
 * Override method: InternalTransformChanged
 */
#define ODFacet_InternalTransformChanged(somSelf,ev) \
	ODBaseFacet_InternalTransformChanged(somSelf,ev)

/*
 * Override method: GetFrameTransform
 */
#define ODFacet_GetFrameTransform(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetFrameTransform(somSelf,ev,biasCanvas)

/*
 * Override method: GetContentTransform
 */
#define ODFacet_GetContentTransform(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetContentTransform(somSelf,ev,biasCanvas)

/*
 * Override method: GetWindowFrameTransform
 */
#define ODFacet_GetWindowFrameTransform(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetWindowFrameTransform(somSelf,ev,biasCanvas)

/*
 * Override method: GetWindowContentTransform
 */
#define ODFacet_GetWindowContentTransform(somSelf,ev,biasCanvas) \
	ODBaseFacet_GetWindowContentTransform(somSelf,ev,biasCanvas)

/*
 * Override method: InvalidateAggregateTransforms
 */
#define ODFacet_InvalidateAggregateTransforms(somSelf,ev) \
	ODBaseFacet_InvalidateAggregateTransforms(somSelf,ev)

/*
 * Override method: CreateCanvas
 */
#define ODFacet_CreateCanvas(somSelf,ev,graphicsSystem,platformCanvas,isDynamic,isOffscreen) \
	ODBaseFacet_CreateCanvas(somSelf,ev,graphicsSystem,platformCanvas,isDynamic,isOffscreen)

/*
 * Override method: HasCanvas
 */
#define ODFacet_HasCanvas(somSelf,ev) \
	ODBaseFacet_HasCanvas(somSelf,ev)

/*
 * Override method: GetCanvas
 */
#define ODFacet_GetCanvas(somSelf,ev) \
	ODBaseFacet_GetCanvas(somSelf,ev)

/*
 * Override method: SetCanvas
 */
#define ODFacet_SetCanvas(somSelf,ev,canvas) \
	ODBaseFacet_SetCanvas(somSelf,ev,canvas)

/*
 * Override method: GetWindow
 */
#define ODFacet_GetWindow(somSelf,ev) \
	ODBaseFacet_GetWindow(somSelf,ev)

/*
 * Override method: GetPartInfo
 */
#define ODFacet_GetPartInfo(somSelf,ev) \
	ODBaseFacet_GetPartInfo(somSelf,ev)

/*
 * Override method: SetPartInfo
 */
#define ODFacet_SetPartInfo(somSelf,ev,partInfo) \
	ODBaseFacet_SetPartInfo(somSelf,ev,partInfo)

/*
 * Override method: DragEnter
 */
#define ODFacet_DragEnter(somSelf,ev,point,dragInfo,biasCanvas) \
	ODBaseFacet_DragEnter(somSelf,ev,point,dragInfo,biasCanvas)

/*
 * Override method: DragWithin
 */
#define ODFacet_DragWithin(somSelf,ev,point,dragInfo,biasCanvas) \
	ODBaseFacet_DragWithin(somSelf,ev,point,dragInfo,biasCanvas)

/*
 * Override method: DragLeave
 */
#define ODFacet_DragLeave(somSelf,ev,point,biasCanvas) \
	ODBaseFacet_DragLeave(somSelf,ev,point,biasCanvas)

/*
 * Override method: Drop
 */
#define ODFacet_Drop(somSelf,ev,point,dropInfo,biasCanvas) \
	ODBaseFacet_Drop(somSelf,ev,point,dropInfo,biasCanvas)

/*
 * Override method: Update
 */
#define ODFacet_Update(somSelf,ev,invalidShape,biasCanvas) \
	ODBaseFacet_Update(somSelf,ev,invalidShape,biasCanvas)

/*
 * Override method: Invalidate
 */
#define ODFacet_Invalidate(somSelf,ev,invalidShape,biasCanvas) \
	ODBaseFacet_Invalidate(somSelf,ev,invalidShape,biasCanvas)

/*
 * Override method: Validate
 */
#define ODFacet_Validate(somSelf,ev,validShape,biasCanvas) \
	ODBaseFacet_Validate(somSelf,ev,validShape,biasCanvas)

/*
 * Override method: Draw
 */
#define ODFacet_Draw(somSelf,ev,invalidShape,biasCanvas) \
	ODBaseFacet_Draw(somSelf,ev,invalidShape,biasCanvas)

/*
 * Override method: DrawChildren
 */
#define ODFacet_DrawChildren(somSelf,ev,invalidShape,biasCanvas) \
	ODBaseFacet_DrawChildren(somSelf,ev,invalidShape,biasCanvas)

/*
 * Override method: DrawChildrenAlways
 */
#define ODFacet_DrawChildrenAlways(somSelf,ev,invalidShape,biasCanvas) \
	ODBaseFacet_DrawChildrenAlways(somSelf,ev,invalidShape,biasCanvas)

/*
 * Override method: DrawnIn
 */
#define ODFacet_DrawnIn(somSelf,ev,shape,biasCanvas) \
	ODBaseFacet_DrawnIn(somSelf,ev,shape,biasCanvas)

/*
 * Override method: InvalidateActiveBorder
 */
#define ODFacet_InvalidateActiveBorder(somSelf,ev) \
	ODBaseFacet_InvalidateActiveBorder(somSelf,ev)

/*
 * Override method: DrawActiveBorder
 */
#define ODFacet_DrawActiveBorder(somSelf,ev) \
	ODBaseFacet_DrawActiveBorder(somSelf,ev)

/*
 * Override method: MouseEnter
 */
#define ODFacet_MouseEnter(somSelf,ev,where,biasCanvas) \
	ODBaseFacet_MouseEnter(somSelf,ev,where,biasCanvas)

/*
 * Override method: MouseWithin
 */
#define ODFacet_MouseWithin(somSelf,ev,where,biasCanvas) \
	ODBaseFacet_MouseWithin(somSelf,ev,where,biasCanvas)

/*
 * Override method: MouseLeave
 */
#define ODFacet_MouseLeave(somSelf,ev) \
	ODBaseFacet_MouseLeave(somSelf,ev)

/*
 * Override method: ContainsPoint
 */
#define ODFacet_ContainsPoint(somSelf,ev,point,biasCanvas) \
	ODBaseFacet_ContainsPoint(somSelf,ev,point,biasCanvas)

/*
 * Override method: ActiveBorderContainsPoint
 */
#define ODFacet_ActiveBorderContainsPoint(somSelf,ev,point,biasCanvas) \
	ODBaseFacet_ActiveBorderContainsPoint(somSelf,ev,point,biasCanvas)

/*
 * Override method: IsSelected
 */
#define ODFacet_IsSelected(somSelf,ev) \
	ODBaseFacet_IsSelected(somSelf,ev)

/*
 * Override method: SetSelected
 */
#define ODFacet_SetSelected(somSelf,ev,isSelected) \
	ODBaseFacet_SetSelected(somSelf,ev,isSelected)

/*
 * Override method: GetHighlight
 */
#define ODFacet_GetHighlight(somSelf,ev) \
	ODBaseFacet_GetHighlight(somSelf,ev)

/*
 * Override method: ChangeHighlight
 */
#define ODFacet_ChangeHighlight(somSelf,ev,highlight) \
	ODBaseFacet_ChangeHighlight(somSelf,ev,highlight)

/*
 * New Method: InitFacet
 */
typedef void   (SOMLINK * somTD_ODFacet_InitFacet)(ODFacet *somSelf, Environment *ev,
		ODFrame* frame,
		ODShape* clipShape,
		ODTransform* externalTransform,
		ODCanvas* canvas,
		ODCanvas* biasCanvas);
#define somMD_ODFacet_InitFacet "::ODFacet::InitFacet"
#define ODFacet_InitFacet(somSelf,ev,frame,clipShape,externalTransform,canvas,biasCanvas) \
    (SOM_Resolve(somSelf, ODFacet, InitFacet) \
	(somSelf,ev,frame,clipShape,externalTransform,canvas,biasCanvas))
#ifndef SOMGD_InitFacet
    #if (defined(_InitFacet) || defined(__InitFacet))
        #undef _InitFacet
        #undef __InitFacet
        #define SOMGD_InitFacet 1
    #else
        #define _InitFacet ODFacet_InitFacet
    #endif /* _InitFacet */
#endif /* SOMGD_InitFacet */

/*
 * New Method: InitChildFacet
 */
typedef void   (SOMLINK * somTD_ODFacet_InitChildFacet)(ODFacet *somSelf, Environment *ev,
		FacetNode* node,
		ODFrame* frame,
		ODShape* clipShape,
		ODTransform* externalTransform,
		ODCanvas* canvas,
		ODCanvas* biasCanvas);
#define somMD_ODFacet_InitChildFacet "::ODFacet::InitChildFacet"
#define ODFacet_InitChildFacet(somSelf,ev,node,frame,clipShape,externalTransform,canvas,biasCanvas) \
    (SOM_Resolve(somSelf, ODFacet, InitChildFacet) \
	(somSelf,ev,node,frame,clipShape,externalTransform,canvas,biasCanvas))
#ifndef SOMGD_InitChildFacet
    #if (defined(_InitChildFacet) || defined(__InitChildFacet))
        #undef _InitChildFacet
        #undef __InitChildFacet
        #define SOMGD_InitChildFacet 1
    #else
        #define _InitChildFacet ODFacet_InitChildFacet
    #endif /* _InitChildFacet */
#endif /* SOMGD_InitChildFacet */

/*
 * New Method: GetNode
 */
typedef FacetNode*   (SOMLINK * somTD_ODFacet_GetNode)(ODFacet *somSelf, Environment *ev);
#define somMD_ODFacet_GetNode "::ODFacet::GetNode"
#define ODFacet_GetNode(somSelf,ev) \
    (SOM_Resolve(somSelf, ODFacet, GetNode) \
	(somSelf,ev))
#ifndef SOMGD_GetNode
    #if (defined(_GetNode) || defined(__GetNode))
        #undef _GetNode
        #undef __GetNode
        #define SOMGD_GetNode 1
    #else
        #define _GetNode ODFacet_GetNode
    #endif /* _GetNode */
#endif /* SOMGD_GetNode */

/*
 * New Method: NeedsUpdate
 */
typedef ODBoolean   (SOMLINK * somTD_ODFacet_NeedsUpdate)(ODFacet *somSelf, Environment *ev);
#define somMD_ODFacet_NeedsUpdate "::ODFacet::NeedsUpdate"
#define ODFacet_NeedsUpdate(somSelf,ev) \
    (SOM_Resolve(somSelf, ODFacet, NeedsUpdate) \
	(somSelf,ev))
#ifndef SOMGD_NeedsUpdate
    #if (defined(_NeedsUpdate) || defined(__NeedsUpdate))
        #undef _NeedsUpdate
        #undef __NeedsUpdate
        #define SOMGD_NeedsUpdate 1
    #else
        #define _NeedsUpdate ODFacet_NeedsUpdate
    #endif /* _NeedsUpdate */
#endif /* SOMGD_NeedsUpdate */

/*
 * New Method: SetNeedsUpdate
 */
typedef void   (SOMLINK * somTD_ODFacet_SetNeedsUpdate)(ODFacet *somSelf, Environment *ev,
		ODBoolean needsUpdate);
#define somMD_ODFacet_SetNeedsUpdate "::ODFacet::SetNeedsUpdate"
#define ODFacet_SetNeedsUpdate(somSelf,ev,needsUpdate) \
    (SOM_Resolve(somSelf, ODFacet, SetNeedsUpdate) \
	(somSelf,ev,needsUpdate))
#ifndef SOMGD_SetNeedsUpdate
    #if (defined(_SetNeedsUpdate) || defined(__SetNeedsUpdate))
        #undef _SetNeedsUpdate
        #undef __SetNeedsUpdate
        #define SOMGD_SetNeedsUpdate 1
    #else
        #define _SetNeedsUpdate ODFacet_SetNeedsUpdate
    #endif /* _SetNeedsUpdate */
#endif /* SOMGD_SetNeedsUpdate */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODFacet_InitBaseFacet ODBaseFacet_InitBaseFacet
#define ODFacet_InitChildBaseFacet ODBaseFacet_InitChildBaseFacet
#define ODFacet_InitObject ODObject_InitObject
#define ODFacet_IsInitialized ODObject_IsInitialized
#define ODFacet_HasExtension ODObject_HasExtension
#define ODFacet_GetExtension ODObject_GetExtension
#define ODFacet_ReleaseExtension ODObject_ReleaseExtension
#define ODFacet_IsEqualTo ODObject_IsEqualTo
#define ODFacet_SubClassResponsibility ODObject_SubClassResponsibility
#define ODFacet_somDefaultInit SOMObject_somDefaultInit
#define ODFacet_somDestruct SOMObject_somDestruct
#define ODFacet_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODFacet_somDefaultAssign SOMObject_somDefaultAssign
#define ODFacet_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODFacet_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODFacet_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODFacet_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODFacet_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODFacet_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODFacet_somFree SOMObject_somFree
#define ODFacet_somGetClass SOMObject_somGetClass
#define ODFacet_somGetClassName SOMObject_somGetClassName
#define ODFacet_somGetSize SOMObject_somGetSize
#define ODFacet_somIsA SOMObject_somIsA
#define ODFacet_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODFacet_somRespondsTo SOMObject_somRespondsTo
#define ODFacet_somDispatch SOMObject_somDispatch
#define ODFacet_somClassDispatch SOMObject_somClassDispatch
#define ODFacet_somCastObj SOMObject_somCastObj
#define ODFacet_somResetObj SOMObject_somResetObj
#define ODFacet_somDispatchV SOMObject_somDispatchV
#define ODFacet_somDispatchL SOMObject_somDispatchL
#define ODFacet_somDispatchA SOMObject_somDispatchA
#define ODFacet_somDispatchD SOMObject_somDispatchD
#define ODFacet_somPrintSelf SOMObject_somPrintSelf
#define ODFacet_somDumpSelf SOMObject_somDumpSelf
#define ODFacet_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODFacet_h */
