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

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


#ifndef SOM_ODBaseShape_h
#define SOM_ODBaseShape_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 ODBaseShapeClassData (*resolve_ODBaseShapeClassData())
#define ODBaseShapeCClassData (*resolve_ODBaseShapeCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODBaseShape
#define ODBaseShape SOMObject
#endif
#include <RefCtObj.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 ODRefCntObject
    #define ODRefCntObject SOMObject
#endif /* ODRefCntObject */
#ifndef ODBaseShape
    #define ODBaseShape SOMObject
#endif /* ODBaseShape */
#ifndef ODShape
    #define ODShape SOMObject
#endif /* ODShape */
#ifndef ODTransform
    #define ODTransform SOMObject
#endif /* ODTransform */
#ifndef ODStorageUnit
    #define ODStorageUnit SOMObject
#endif /* ODStorageUnit */

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

#define ODBaseShape_MajorVersion 1
#define ODBaseShape_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODBaseShapeNewClass c
#define ODBaseShapeClassData d
#define ODBaseShapeCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODBaseShape_classObj ODBaseShapeClassData.classObject
#define _ODBaseShape ODBaseShape_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODBaseShapeClassDataStructure {
	SOMClass *classObject;
	somMToken SetGeometryMode;
	somMToken GetGeometryMode;
	somMToken GetBoundingBox;
	somMToken SetRectangle;
	somMToken CopyPolygon;
	somMToken SetPolygon;
	somMToken GetPlatformShape;
	somMToken SetPlatformShape;
	somMToken WriteShape;
	somMToken ReadShape;
	somMToken IsSameAs;
	somMToken IsEmpty;
	somMToken ContainsPoint;
	somMToken IsRectangular;
	somMToken HasGeometry;
	somMToken Copy;
	somMToken CopyFrom;
	somMToken Transform;
	somMToken InverseTransform;
	somMToken Subtract;
	somMToken Intersect;
	somMToken Union;
	somMToken Outset;
	somMToken NewShape;
	somMToken Reset;
	somMToken InitBaseShape;
	somMToken GetRealShape;
}  _ODBaseShapeClassData;
SOMEXTERN struct ODBaseShapeClassDataStructure * SOMLINK resolve_ODBaseShapeClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODBaseShapeCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODBaseShapeCClassData;
SOMEXTERN struct ODBaseShapeCClassDataStructure * SOMLINK resolve_ODBaseShapeCClassData(void);

/*
 * New and Renew macros for ODBaseShape
 */
#define ODBaseShapeNew() \
   (_somNew(_ODBaseShape ? _ODBaseShape : ODBaseShapeNewClass(ODBaseShape_MajorVersion, ODBaseShape_MinorVersion)))
#define ODBaseShapeRenew(buf) \
   (_somRenew(_ODBaseShape ? _ODBaseShape : ODBaseShapeNewClass(ODBaseShape_MajorVersion, ODBaseShape_MinorVersion), buf))

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

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

/*
 * Override method: Release
 */
#define ODBaseShape_Release(somSelf,ev) \
	ODRefCntObject_Release(somSelf,ev)

/*
 * New Method: NewShape
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_NewShape)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_NewShape "::ODBaseShape::NewShape"
#define ODBaseShape_NewShape(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, NewShape) \
	(somSelf,ev))
#ifndef SOMGD_NewShape
    #if (defined(_NewShape) || defined(__NewShape))
        #undef _NewShape
        #undef __NewShape
        #define SOMGD_NewShape 1
    #else
        #define _NewShape ODBaseShape_NewShape
    #endif /* _NewShape */
#endif /* SOMGD_NewShape */

/*
 * New Method: Copy
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_Copy)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_Copy "::ODBaseShape::Copy"
#define ODBaseShape_Copy(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, Copy) \
	(somSelf,ev))
#ifndef SOMGD_Copy
    #if (defined(_Copy) || defined(__Copy))
        #undef _Copy
        #undef __Copy
        #define SOMGD_Copy 1
    #else
        #define _Copy ODBaseShape_Copy
    #endif /* _Copy */
#endif /* SOMGD_Copy */

/*
 * New Method: GetGeometryMode
 */
typedef ODGeometryMode   (SOMLINK * somTD_ODBaseShape_GetGeometryMode)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_GetGeometryMode "::ODBaseShape::GetGeometryMode"
#define ODBaseShape_GetGeometryMode(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, GetGeometryMode) \
	(somSelf,ev))
#ifndef SOMGD_GetGeometryMode
    #if (defined(_GetGeometryMode) || defined(__GetGeometryMode))
        #undef _GetGeometryMode
        #undef __GetGeometryMode
        #define SOMGD_GetGeometryMode 1
    #else
        #define _GetGeometryMode ODBaseShape_GetGeometryMode
    #endif /* _GetGeometryMode */
#endif /* SOMGD_GetGeometryMode */

/*
 * New Method: SetGeometryMode
 */
typedef void   (SOMLINK * somTD_ODBaseShape_SetGeometryMode)(ODBaseShape *somSelf, Environment *ev,
		ODGeometryMode mode);
#define somMD_ODBaseShape_SetGeometryMode "::ODBaseShape::SetGeometryMode"
#define ODBaseShape_SetGeometryMode(somSelf,ev,mode) \
    (SOM_Resolve(somSelf, ODBaseShape, SetGeometryMode) \
	(somSelf,ev,mode))
#ifndef SOMGD_SetGeometryMode
    #if (defined(_SetGeometryMode) || defined(__SetGeometryMode))
        #undef _SetGeometryMode
        #undef __SetGeometryMode
        #define SOMGD_SetGeometryMode 1
    #else
        #define _SetGeometryMode ODBaseShape_SetGeometryMode
    #endif /* _SetGeometryMode */
#endif /* SOMGD_SetGeometryMode */

/*
 * New Method: GetBoundingBox
 */
typedef void   (SOMLINK * somTD_ODBaseShape_GetBoundingBox)(ODBaseShape *somSelf, Environment *ev,
		ODRect* bounds);
#define somMD_ODBaseShape_GetBoundingBox "::ODBaseShape::GetBoundingBox"
#define ODBaseShape_GetBoundingBox(somSelf,ev,bounds) \
    (SOM_Resolve(somSelf, ODBaseShape, GetBoundingBox) \
	(somSelf,ev,bounds))
#ifndef SOMGD_GetBoundingBox
    #if (defined(_GetBoundingBox) || defined(__GetBoundingBox))
        #undef _GetBoundingBox
        #undef __GetBoundingBox
        #define SOMGD_GetBoundingBox 1
    #else
        #define _GetBoundingBox ODBaseShape_GetBoundingBox
    #endif /* _GetBoundingBox */
#endif /* SOMGD_GetBoundingBox */

/*
 * New Method: SetRectangle
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_SetRectangle)(ODBaseShape *somSelf, Environment *ev,
		ODRect* rect);
#define somMD_ODBaseShape_SetRectangle "::ODBaseShape::SetRectangle"
#define ODBaseShape_SetRectangle(somSelf,ev,rect) \
    (SOM_Resolve(somSelf, ODBaseShape, SetRectangle) \
	(somSelf,ev,rect))
#ifndef SOMGD_SetRectangle
    #if (defined(_SetRectangle) || defined(__SetRectangle))
        #undef _SetRectangle
        #undef __SetRectangle
        #define SOMGD_SetRectangle 1
    #else
        #define _SetRectangle ODBaseShape_SetRectangle
    #endif /* _SetRectangle */
#endif /* SOMGD_SetRectangle */

/*
 * New Method: CopyPolygon
 */
typedef ODPolygon   (SOMLINK * somTD_ODBaseShape_CopyPolygon)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_CopyPolygon "::ODBaseShape::CopyPolygon"
#define ODBaseShape_CopyPolygon(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, CopyPolygon) \
	(somSelf,ev))
#ifndef SOMGD_CopyPolygon
    #if (defined(_CopyPolygon) || defined(__CopyPolygon))
        #undef _CopyPolygon
        #undef __CopyPolygon
        #define SOMGD_CopyPolygon 1
    #else
        #define _CopyPolygon ODBaseShape_CopyPolygon
    #endif /* _CopyPolygon */
#endif /* SOMGD_CopyPolygon */

/*
 * New Method: SetPolygon
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_SetPolygon)(ODBaseShape *somSelf, Environment *ev,
		ODPolygon* polygon);
#define somMD_ODBaseShape_SetPolygon "::ODBaseShape::SetPolygon"
#define ODBaseShape_SetPolygon(somSelf,ev,polygon) \
    (SOM_Resolve(somSelf, ODBaseShape, SetPolygon) \
	(somSelf,ev,polygon))
#ifndef SOMGD_SetPolygon
    #if (defined(_SetPolygon) || defined(__SetPolygon))
        #undef _SetPolygon
        #undef __SetPolygon
        #define SOMGD_SetPolygon 1
    #else
        #define _SetPolygon ODBaseShape_SetPolygon
    #endif /* _SetPolygon */
#endif /* SOMGD_SetPolygon */

/*
 * New Method: GetPlatformShape
 */
typedef ODPlatformShape   (SOMLINK * somTD_ODBaseShape_GetPlatformShape)(ODBaseShape *somSelf, Environment *ev,
		ODGraphicsSystem graphicsSystem);
#define somMD_ODBaseShape_GetPlatformShape "::ODBaseShape::GetPlatformShape"
#define ODBaseShape_GetPlatformShape(somSelf,ev,graphicsSystem) \
    (SOM_Resolve(somSelf, ODBaseShape, GetPlatformShape) \
	(somSelf,ev,graphicsSystem))
#ifndef SOMGD_GetPlatformShape
    #if (defined(_GetPlatformShape) || defined(__GetPlatformShape))
        #undef _GetPlatformShape
        #undef __GetPlatformShape
        #define SOMGD_GetPlatformShape 1
    #else
        #define _GetPlatformShape ODBaseShape_GetPlatformShape
    #endif /* _GetPlatformShape */
#endif /* SOMGD_GetPlatformShape */

/*
 * New Method: SetPlatformShape
 */
typedef void   (SOMLINK * somTD_ODBaseShape_SetPlatformShape)(ODBaseShape *somSelf, Environment *ev,
		ODGraphicsSystem graphicsSystem,
		ODPlatformShape platformShape);
#define somMD_ODBaseShape_SetPlatformShape "::ODBaseShape::SetPlatformShape"
#define ODBaseShape_SetPlatformShape(somSelf,ev,graphicsSystem,platformShape) \
    (SOM_Resolve(somSelf, ODBaseShape, SetPlatformShape) \
	(somSelf,ev,graphicsSystem,platformShape))
#ifndef SOMGD_SetPlatformShape
    #if (defined(_SetPlatformShape) || defined(__SetPlatformShape))
        #undef _SetPlatformShape
        #undef __SetPlatformShape
        #define SOMGD_SetPlatformShape 1
    #else
        #define _SetPlatformShape ODBaseShape_SetPlatformShape
    #endif /* _SetPlatformShape */
#endif /* SOMGD_SetPlatformShape */

/*
 * New Method: Reset
 */
typedef void   (SOMLINK * somTD_ODBaseShape_Reset)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_Reset "::ODBaseShape::Reset"
#define ODBaseShape_Reset(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, Reset) \
	(somSelf,ev))
#ifndef SOMGD_Reset
    #if (defined(_Reset) || defined(__Reset))
        #undef _Reset
        #undef __Reset
        #define SOMGD_Reset 1
    #else
        #define _Reset ODBaseShape_Reset
    #endif /* _Reset */
#endif /* SOMGD_Reset */

/*
 * New Method: WriteShape
 */
typedef void   (SOMLINK * somTD_ODBaseShape_WriteShape)(ODBaseShape *somSelf, Environment *ev,
		ODStorageUnit* storageUnit);
#define somMD_ODBaseShape_WriteShape "::ODBaseShape::WriteShape"
#define ODBaseShape_WriteShape(somSelf,ev,storageUnit) \
    (SOM_Resolve(somSelf, ODBaseShape, WriteShape) \
	(somSelf,ev,storageUnit))
#ifndef SOMGD_WriteShape
    #if (defined(_WriteShape) || defined(__WriteShape))
        #undef _WriteShape
        #undef __WriteShape
        #define SOMGD_WriteShape 1
    #else
        #define _WriteShape ODBaseShape_WriteShape
    #endif /* _WriteShape */
#endif /* SOMGD_WriteShape */

/*
 * New Method: ReadShape
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_ReadShape)(ODBaseShape *somSelf, Environment *ev,
		ODStorageUnit* storageUnit);
#define somMD_ODBaseShape_ReadShape "::ODBaseShape::ReadShape"
#define ODBaseShape_ReadShape(somSelf,ev,storageUnit) \
    (SOM_Resolve(somSelf, ODBaseShape, ReadShape) \
	(somSelf,ev,storageUnit))
#ifndef SOMGD_ReadShape
    #if (defined(_ReadShape) || defined(__ReadShape))
        #undef _ReadShape
        #undef __ReadShape
        #define SOMGD_ReadShape 1
    #else
        #define _ReadShape ODBaseShape_ReadShape
    #endif /* _ReadShape */
#endif /* SOMGD_ReadShape */

/*
 * New Method: IsSameAs
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseShape_IsSameAs)(ODBaseShape *somSelf, Environment *ev,
		ODShape* compareShape);
#define somMD_ODBaseShape_IsSameAs "::ODBaseShape::IsSameAs"
#define ODBaseShape_IsSameAs(somSelf,ev,compareShape) \
    (SOM_Resolve(somSelf, ODBaseShape, IsSameAs) \
	(somSelf,ev,compareShape))
#ifndef SOMGD_IsSameAs
    #if (defined(_IsSameAs) || defined(__IsSameAs))
        #undef _IsSameAs
        #undef __IsSameAs
        #define SOMGD_IsSameAs 1
    #else
        #define _IsSameAs ODBaseShape_IsSameAs
    #endif /* _IsSameAs */
#endif /* SOMGD_IsSameAs */

/*
 * New Method: IsEmpty
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseShape_IsEmpty)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_IsEmpty "::ODBaseShape::IsEmpty"
#define ODBaseShape_IsEmpty(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, IsEmpty) \
	(somSelf,ev))
#ifndef SOMGD_IsEmpty
    #if (defined(_IsEmpty) || defined(__IsEmpty))
        #undef _IsEmpty
        #undef __IsEmpty
        #define SOMGD_IsEmpty 1
    #else
        #define _IsEmpty ODBaseShape_IsEmpty
    #endif /* _IsEmpty */
#endif /* SOMGD_IsEmpty */

/*
 * New Method: ContainsPoint
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseShape_ContainsPoint)(ODBaseShape *somSelf, Environment *ev,
		ODPoint* point);
#define somMD_ODBaseShape_ContainsPoint "::ODBaseShape::ContainsPoint"
#define ODBaseShape_ContainsPoint(somSelf,ev,point) \
    (SOM_Resolve(somSelf, ODBaseShape, ContainsPoint) \
	(somSelf,ev,point))
#ifndef SOMGD_ContainsPoint
    #if (defined(_ContainsPoint) || defined(__ContainsPoint))
        #undef _ContainsPoint
        #undef __ContainsPoint
        #define SOMGD_ContainsPoint 1
    #else
        #define _ContainsPoint ODBaseShape_ContainsPoint
    #endif /* _ContainsPoint */
#endif /* SOMGD_ContainsPoint */

/*
 * New Method: IsRectangular
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseShape_IsRectangular)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_IsRectangular "::ODBaseShape::IsRectangular"
#define ODBaseShape_IsRectangular(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, IsRectangular) \
	(somSelf,ev))
#ifndef SOMGD_IsRectangular
    #if (defined(_IsRectangular) || defined(__IsRectangular))
        #undef _IsRectangular
        #undef __IsRectangular
        #define SOMGD_IsRectangular 1
    #else
        #define _IsRectangular ODBaseShape_IsRectangular
    #endif /* _IsRectangular */
#endif /* SOMGD_IsRectangular */

/*
 * New Method: HasGeometry
 */
typedef ODBoolean   (SOMLINK * somTD_ODBaseShape_HasGeometry)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_HasGeometry "::ODBaseShape::HasGeometry"
#define ODBaseShape_HasGeometry(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, HasGeometry) \
	(somSelf,ev))
#ifndef SOMGD_HasGeometry
    #if (defined(_HasGeometry) || defined(__HasGeometry))
        #undef _HasGeometry
        #undef __HasGeometry
        #define SOMGD_HasGeometry 1
    #else
        #define _HasGeometry ODBaseShape_HasGeometry
    #endif /* _HasGeometry */
#endif /* SOMGD_HasGeometry */

/*
 * New Method: CopyFrom
 */
typedef void   (SOMLINK * somTD_ODBaseShape_CopyFrom)(ODBaseShape *somSelf, Environment *ev,
		ODShape* sourceShape);
#define somMD_ODBaseShape_CopyFrom "::ODBaseShape::CopyFrom"
#define ODBaseShape_CopyFrom(somSelf,ev,sourceShape) \
    (SOM_Resolve(somSelf, ODBaseShape, CopyFrom) \
	(somSelf,ev,sourceShape))
#ifndef SOMGD_CopyFrom
    #if (defined(_CopyFrom) || defined(__CopyFrom))
        #undef _CopyFrom
        #undef __CopyFrom
        #define SOMGD_CopyFrom 1
    #else
        #define _CopyFrom ODBaseShape_CopyFrom
    #endif /* _CopyFrom */
#endif /* SOMGD_CopyFrom */

/*
 * New Method: Transform
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_Transform)(ODBaseShape *somSelf, Environment *ev,
		ODTransform* transform);
#define somMD_ODBaseShape_Transform "::ODBaseShape::Transform"
#define ODBaseShape_Transform(somSelf,ev,transform) \
    (SOM_Resolve(somSelf, ODBaseShape, Transform) \
	(somSelf,ev,transform))
#ifndef SOMGD_Transform
    #if (defined(_Transform) || defined(__Transform))
        #undef _Transform
        #undef __Transform
        #define SOMGD_Transform 1
    #else
        #define _Transform ODBaseShape_Transform
    #endif /* _Transform */
#endif /* SOMGD_Transform */

/*
 * New Method: InverseTransform
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_InverseTransform)(ODBaseShape *somSelf, Environment *ev,
		ODTransform* transform);
#define somMD_ODBaseShape_InverseTransform "::ODBaseShape::InverseTransform"
#define ODBaseShape_InverseTransform(somSelf,ev,transform) \
    (SOM_Resolve(somSelf, ODBaseShape, InverseTransform) \
	(somSelf,ev,transform))
#ifndef SOMGD_InverseTransform
    #if (defined(_InverseTransform) || defined(__InverseTransform))
        #undef _InverseTransform
        #undef __InverseTransform
        #define SOMGD_InverseTransform 1
    #else
        #define _InverseTransform ODBaseShape_InverseTransform
    #endif /* _InverseTransform */
#endif /* SOMGD_InverseTransform */

/*
 * New Method: Subtract
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_Subtract)(ODBaseShape *somSelf, Environment *ev,
		ODShape* diffShape);
#define somMD_ODBaseShape_Subtract "::ODBaseShape::Subtract"
#define ODBaseShape_Subtract(somSelf,ev,diffShape) \
    (SOM_Resolve(somSelf, ODBaseShape, Subtract) \
	(somSelf,ev,diffShape))
#ifndef SOMGD_Subtract
    #if (defined(_Subtract) || defined(__Subtract))
        #undef _Subtract
        #undef __Subtract
        #define SOMGD_Subtract 1
    #else
        #define _Subtract ODBaseShape_Subtract
    #endif /* _Subtract */
#endif /* SOMGD_Subtract */

/*
 * New Method: Intersect
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_Intersect)(ODBaseShape *somSelf, Environment *ev,
		ODShape* sectShape);
#define somMD_ODBaseShape_Intersect "::ODBaseShape::Intersect"
#define ODBaseShape_Intersect(somSelf,ev,sectShape) \
    (SOM_Resolve(somSelf, ODBaseShape, Intersect) \
	(somSelf,ev,sectShape))
#ifndef SOMGD_Intersect
    #if (defined(_Intersect) || defined(__Intersect))
        #undef _Intersect
        #undef __Intersect
        #define SOMGD_Intersect 1
    #else
        #define _Intersect ODBaseShape_Intersect
    #endif /* _Intersect */
#endif /* SOMGD_Intersect */

/*
 * New Method: Union
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_Union)(ODBaseShape *somSelf, Environment *ev,
		ODShape* unionShape);
#define somMD_ODBaseShape_Union "::ODBaseShape::Union"
#define ODBaseShape_Union(somSelf,ev,unionShape) \
    (SOM_Resolve(somSelf, ODBaseShape, Union) \
	(somSelf,ev,unionShape))
#ifndef SOMGD_Union
    #if (defined(_Union) || defined(__Union))
        #undef _Union
        #undef __Union
        #define SOMGD_Union 1
    #else
        #define _Union ODBaseShape_Union
    #endif /* _Union */
#endif /* SOMGD_Union */

/*
 * New Method: Outset
 */
typedef ODShape*   (SOMLINK * somTD_ODBaseShape_Outset)(ODBaseShape *somSelf, Environment *ev,
		ODCoordinate distance);
#define somMD_ODBaseShape_Outset "::ODBaseShape::Outset"
#define ODBaseShape_Outset(somSelf,ev,distance) \
    (SOM_Resolve(somSelf, ODBaseShape, Outset) \
	(somSelf,ev,distance))
#ifndef SOMGD_Outset
    #if (defined(_Outset) || defined(__Outset))
        #undef _Outset
        #undef __Outset
        #define SOMGD_Outset 1
    #else
        #define _Outset ODBaseShape_Outset
    #endif /* _Outset */
#endif /* SOMGD_Outset */

/*
 * New Method: InitBaseShape
 */
typedef void   (SOMLINK * somTD_ODBaseShape_InitBaseShape)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_InitBaseShape "::ODBaseShape::InitBaseShape"
#define ODBaseShape_InitBaseShape(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, InitBaseShape) \
	(somSelf,ev))
#ifndef SOMGD_InitBaseShape
    #if (defined(_InitBaseShape) || defined(__InitBaseShape))
        #undef _InitBaseShape
        #undef __InitBaseShape
        #define SOMGD_InitBaseShape 1
    #else
        #define _InitBaseShape ODBaseShape_InitBaseShape
    #endif /* _InitBaseShape */
#endif /* SOMGD_InitBaseShape */

/*
 * New Method: GetRealShape
 */
typedef RealShape*   (SOMLINK * somTD_ODBaseShape_GetRealShape)(ODBaseShape *somSelf, Environment *ev);
#define somMD_ODBaseShape_GetRealShape "::ODBaseShape::GetRealShape"
#define ODBaseShape_GetRealShape(somSelf,ev) \
    (SOM_Resolve(somSelf, ODBaseShape, GetRealShape) \
	(somSelf,ev))
#ifndef SOMGD_GetRealShape
    #if (defined(_GetRealShape) || defined(__GetRealShape))
        #undef _GetRealShape
        #undef __GetRealShape
        #define SOMGD_GetRealShape 1
    #else
        #define _GetRealShape ODBaseShape_GetRealShape
    #endif /* _GetRealShape */
#endif /* SOMGD_GetRealShape */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODBaseShape_InitRefCntObject ODRefCntObject_InitRefCntObject
#define ODBaseShape_IncrementRefCount ODRefCntObject_IncrementRefCount
#define ODBaseShape_GetRefCount ODRefCntObject_GetRefCount
#define ODBaseShape_InitObject ODObject_InitObject
#define ODBaseShape_IsInitialized ODObject_IsInitialized
#define ODBaseShape_HasExtension ODObject_HasExtension
#define ODBaseShape_GetExtension ODObject_GetExtension
#define ODBaseShape_ReleaseExtension ODObject_ReleaseExtension
#define ODBaseShape_Purge ODObject_Purge
#define ODBaseShape_IsEqualTo ODObject_IsEqualTo
#define ODBaseShape_SubClassResponsibility ODObject_SubClassResponsibility
#define ODBaseShape_somDefaultInit SOMObject_somDefaultInit
#define ODBaseShape_somDestruct SOMObject_somDestruct
#define ODBaseShape_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODBaseShape_somDefaultAssign SOMObject_somDefaultAssign
#define ODBaseShape_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODBaseShape_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODBaseShape_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODBaseShape_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODBaseShape_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODBaseShape_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODBaseShape_somFree SOMObject_somFree
#define ODBaseShape_somGetClass SOMObject_somGetClass
#define ODBaseShape_somGetClassName SOMObject_somGetClassName
#define ODBaseShape_somGetSize SOMObject_somGetSize
#define ODBaseShape_somIsA SOMObject_somIsA
#define ODBaseShape_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODBaseShape_somRespondsTo SOMObject_somRespondsTo
#define ODBaseShape_somDispatch SOMObject_somDispatch
#define ODBaseShape_somClassDispatch SOMObject_somClassDispatch
#define ODBaseShape_somCastObj SOMObject_somCastObj
#define ODBaseShape_somResetObj SOMObject_somResetObj
#define ODBaseShape_somDispatchV SOMObject_somDispatchV
#define ODBaseShape_somDispatchL SOMObject_somDispatchL
#define ODBaseShape_somDispatchA SOMObject_somDispatchA
#define ODBaseShape_somDispatchD SOMObject_somDispatchD
#define ODBaseShape_somPrintSelf SOMObject_somPrintSelf
#define ODBaseShape_somDumpSelf SOMObject_somDumpSelf
#define ODBaseShape_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODBaseShape_h */
