
/*
 * This file was generated by the SOM Compiler.
 * FileName: F:\BUILD\NT\ship\include\ShapeB.xh.
 * Generated using:
 *     SOM Precompiler somipc: Development
 *     SOM Emitter emitxh.dll: Development
 */

#ifndef SOM_ODBaseShape_xh
#define SOM_ODBaseShape_xh

class ODBaseShape;

#define ODBaseShape_MajorVersion 1
#define ODBaseShape_MinorVersion 0

/* C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

/* C++ parent defs */
#ifndef SOM_ODRefCntObject_xh
#include <RefCtObj.xh>
#endif

#ifndef ODBaseShape_API
#define ODBaseShape_API
/*
 * -- The Class API
 */

/*
 * Start of user-defined types:
 */
class SOMClass;
class SOMObject;
class ODFrame;
class ODFacet;
class ODPlatformCanvas;
class ODObject;
class ODExtension;
class ODRefCntObject;
class ODBaseShape;
class ODShape;
class ODTransform;
class ODStorageUnit;

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

/* A procedure to create the ODBaseShape Class */
SOMEXTERN
#if (defined(SOM_Module_ShapeB_Source) || defined(ODBaseShape_Class_Source) || defined (SOM_DONT_IMPORT_CLASS_ODBaseShape))
WIN32_DLLEXPORT
#else
WIN32_DLLIMPORT
#endif
SOMClass * SOMLINK ODBaseShapeNewClass(
		integer4,
		integer4 );

/* The API to the ODBaseShape class object, and the methods it introduces. */
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 reserved1;
	somMToken reserved2;
}
#if !(defined(SOM_Module_ShapeB_Source) || defined(ODBaseShape_Class_Source) || defined (SOM_DONT_IMPORT_CLASS_ODBaseShape))
WIN32_DLLIMPORT
#elif defined(_MSC_VER)||defined(_WIN32_DECL_PROTO)
WIN32_DLLEXPORT
#endif
SOMDLINK ODBaseShapeClassData;
#define _ODBaseShape ODBaseShapeClassData.classObject

/* The API to parentMtabs for ODBaseShape, and the instance data it introduces. */
SOMEXTERN struct ODBaseShapeCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken              instanceDataToken;
}
#if !(defined(SOM_Module_ShapeB_Source) || defined(ODBaseShape_Class_Source) || defined (SOM_DONT_IMPORT_CLASS_ODBaseShape))
WIN32_DLLIMPORT
#elif defined(_MSC_VER)||defined(_WIN32_DECL_PROTO)
WIN32_DLLEXPORT
#endif
SOMDLINK ODBaseShapeCClassData;

/*
 * -- Typedefs for ODBaseShape Method Procedures
 */
extern "C" {
typedef ODShape*   SOMLINK somTP_ODBaseShape_NewShape(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_NewShape *somTD_ODBaseShape_NewShape;
typedef ODShape*   SOMLINK somTP_ODBaseShape_Copy(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_Copy *somTD_ODBaseShape_Copy;
typedef ODGeometryMode   SOMLINK somTP_ODBaseShape_GetGeometryMode(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_GetGeometryMode *somTD_ODBaseShape_GetGeometryMode;
typedef void   SOMLINK somTP_ODBaseShape_SetGeometryMode(ODBaseShape *somSelf, Environment *ev,
		ODGeometryMode mode);
typedef somTP_ODBaseShape_SetGeometryMode *somTD_ODBaseShape_SetGeometryMode;
typedef void   SOMLINK somTP_ODBaseShape_GetBoundingBox(ODBaseShape *somSelf, Environment *ev,
		ODRect* bounds);
typedef somTP_ODBaseShape_GetBoundingBox *somTD_ODBaseShape_GetBoundingBox;
typedef ODShape*   SOMLINK somTP_ODBaseShape_SetRectangle(ODBaseShape *somSelf, Environment *ev,
		ODRect* rect);
typedef somTP_ODBaseShape_SetRectangle *somTD_ODBaseShape_SetRectangle;
typedef void   SOMLINK somTP_ODBaseShape_CopyPolygon(ODBaseShape *somSelf, Environment *ev,
		ODPolygon* copy);
typedef somTP_ODBaseShape_CopyPolygon *somTD_ODBaseShape_CopyPolygon;
typedef ODShape*   SOMLINK somTP_ODBaseShape_SetPolygon(ODBaseShape *somSelf, Environment *ev,
		ODPolygon* polygon);
typedef somTP_ODBaseShape_SetPolygon *somTD_ODBaseShape_SetPolygon;
typedef ODPlatformShape   SOMLINK somTP_ODBaseShape_GetPlatformShape(ODBaseShape *somSelf, Environment *ev,
		ODGraphicsSystem graphicsSystem);
typedef somTP_ODBaseShape_GetPlatformShape *somTD_ODBaseShape_GetPlatformShape;
typedef void   SOMLINK somTP_ODBaseShape_SetPlatformShape(ODBaseShape *somSelf, Environment *ev,
		ODGraphicsSystem graphicsSystem,
		ODPlatformShape platformShape);
typedef somTP_ODBaseShape_SetPlatformShape *somTD_ODBaseShape_SetPlatformShape;
typedef void   SOMLINK somTP_ODBaseShape_Reset(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_Reset *somTD_ODBaseShape_Reset;
typedef void   SOMLINK somTP_ODBaseShape_WriteShape(ODBaseShape *somSelf, Environment *ev,
		ODStorageUnit* storageUnit);
typedef somTP_ODBaseShape_WriteShape *somTD_ODBaseShape_WriteShape;
typedef ODShape*   SOMLINK somTP_ODBaseShape_ReadShape(ODBaseShape *somSelf, Environment *ev,
		ODStorageUnit* storageUnit);
typedef somTP_ODBaseShape_ReadShape *somTD_ODBaseShape_ReadShape;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_IsSameAs(ODBaseShape *somSelf, Environment *ev,
		ODShape* compareShape);
typedef somTP_ODBaseShape_IsSameAs *somTD_ODBaseShape_IsSameAs;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_IsEmpty(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_IsEmpty *somTD_ODBaseShape_IsEmpty;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_ContainsPoint(ODBaseShape *somSelf, Environment *ev,
		ODPoint* point);
typedef somTP_ODBaseShape_ContainsPoint *somTD_ODBaseShape_ContainsPoint;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_IsRectangular(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_IsRectangular *somTD_ODBaseShape_IsRectangular;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_HasGeometry(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_HasGeometry *somTD_ODBaseShape_HasGeometry;
typedef void   SOMLINK somTP_ODBaseShape_CopyFrom(ODBaseShape *somSelf, Environment *ev,
		ODShape* sourceShape);
typedef somTP_ODBaseShape_CopyFrom *somTD_ODBaseShape_CopyFrom;
typedef ODShape*   SOMLINK somTP_ODBaseShape_Transform(ODBaseShape *somSelf, Environment *ev,
		ODTransform* transform);
typedef somTP_ODBaseShape_Transform *somTD_ODBaseShape_Transform;
typedef ODShape*   SOMLINK somTP_ODBaseShape_InverseTransform(ODBaseShape *somSelf, Environment *ev,
		ODTransform* transform);
typedef somTP_ODBaseShape_InverseTransform *somTD_ODBaseShape_InverseTransform;
typedef ODShape*   SOMLINK somTP_ODBaseShape_Subtract(ODBaseShape *somSelf, Environment *ev,
		ODShape* diffShape);
typedef somTP_ODBaseShape_Subtract *somTD_ODBaseShape_Subtract;
typedef ODShape*   SOMLINK somTP_ODBaseShape_Intersect(ODBaseShape *somSelf, Environment *ev,
		ODShape* sectShape);
typedef somTP_ODBaseShape_Intersect *somTD_ODBaseShape_Intersect;
typedef ODShape*   SOMLINK somTP_ODBaseShape_Union(ODBaseShape *somSelf, Environment *ev,
		ODShape* unionShape);
typedef somTP_ODBaseShape_Union *somTD_ODBaseShape_Union;
typedef ODShape*   SOMLINK somTP_ODBaseShape_Outset(ODBaseShape *somSelf, Environment *ev,
		ODCoordinate distance);
typedef somTP_ODBaseShape_Outset *somTD_ODBaseShape_Outset;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef void   SOMLINK somTP_ODBaseShape_InitRefCntObject(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_InitRefCntObject *somTD_ODBaseShape_InitRefCntObject;
typedef void   SOMLINK somTP_ODBaseShape_Acquire(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_Acquire *somTD_ODBaseShape_Acquire;
typedef void   SOMLINK somTP_ODBaseShape_Release(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_Release *somTD_ODBaseShape_Release;
typedef ODULong   SOMLINK somTP_ODBaseShape_GetRefCount(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_GetRefCount *somTD_ODBaseShape_GetRefCount;
typedef void   SOMLINK somTP_ODBaseShape_somUninit(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somUninit *somTD_ODBaseShape_somUninit;
typedef void   SOMLINK somTP_ODBaseShape_InitObject(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_InitObject *somTD_ODBaseShape_InitObject;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_HasExtension(ODBaseShape *somSelf, Environment *ev,
		ODType extensionName);
typedef somTP_ODBaseShape_HasExtension *somTD_ODBaseShape_HasExtension;
typedef ODExtension*   SOMLINK somTP_ODBaseShape_AcquireExtension(ODBaseShape *somSelf, Environment *ev,
		ODType extensionName);
typedef somTP_ODBaseShape_AcquireExtension *somTD_ODBaseShape_AcquireExtension;
typedef void   SOMLINK somTP_ODBaseShape_ReleaseExtension(ODBaseShape *somSelf, Environment *ev,
		ODExtension* extension);
typedef somTP_ODBaseShape_ReleaseExtension *somTD_ODBaseShape_ReleaseExtension;
typedef ODSize   SOMLINK somTP_ODBaseShape_Purge(ODBaseShape *somSelf, Environment *ev,
		ODSize size);
typedef somTP_ODBaseShape_Purge *somTD_ODBaseShape_Purge;
typedef ODBoolean   SOMLINK somTP_ODBaseShape_IsEqualTo(ODBaseShape *somSelf, Environment *ev,
		ODObject* object);
typedef somTP_ODBaseShape_IsEqualTo *somTD_ODBaseShape_IsEqualTo;
typedef void   SOMLINK somTP_ODBaseShape_SubClassResponsibility(ODBaseShape *somSelf, Environment *ev);
typedef somTP_ODBaseShape_SubClassResponsibility *somTD_ODBaseShape_SubClassResponsibility;
typedef void   SOMLINK somTP_ODBaseShape_somInit(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somInit *somTD_ODBaseShape_somInit;
typedef void   SOMLINK somTP_ODBaseShape_somDefaultInit(ODBaseShape *somSelf,
		somInitCtrl* ctrl);
typedef somTP_ODBaseShape_somDefaultInit *somTD_ODBaseShape_somDefaultInit;
typedef void   SOMLINK somTP_ODBaseShape_somDestruct(ODBaseShape *somSelf,
		octet doFree,
		somDestructCtrl* ctrl);
typedef somTP_ODBaseShape_somDestruct *somTD_ODBaseShape_somDestruct;
typedef void   SOMLINK somTP_ODBaseShape_somDefaultCopyInit(ODBaseShape *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultCopyInit *somTD_ODBaseShape_somDefaultCopyInit;
typedef ODBaseShape*   SOMLINK somTP_ODBaseShape_somDefaultAssign(ODBaseShape *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultAssign *somTD_ODBaseShape_somDefaultAssign;
typedef void   SOMLINK somTP_ODBaseShape_somDefaultConstCopyInit(ODBaseShape *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultConstCopyInit *somTD_ODBaseShape_somDefaultConstCopyInit;
typedef void   SOMLINK somTP_ODBaseShape_somDefaultVCopyInit(ODBaseShape *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultVCopyInit *somTD_ODBaseShape_somDefaultVCopyInit;
typedef void   SOMLINK somTP_ODBaseShape_somDefaultConstVCopyInit(ODBaseShape *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultConstVCopyInit *somTD_ODBaseShape_somDefaultConstVCopyInit;
typedef ODBaseShape*   SOMLINK somTP_ODBaseShape_somDefaultConstAssign(ODBaseShape *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultConstAssign *somTD_ODBaseShape_somDefaultConstAssign;
typedef ODBaseShape*   SOMLINK somTP_ODBaseShape_somDefaultVAssign(ODBaseShape *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultVAssign *somTD_ODBaseShape_somDefaultVAssign;
typedef ODBaseShape*   SOMLINK somTP_ODBaseShape_somDefaultConstVAssign(ODBaseShape *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
typedef somTP_ODBaseShape_somDefaultConstVAssign *somTD_ODBaseShape_somDefaultConstVAssign;
typedef void   SOMLINK somTP_ODBaseShape_somFree(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somFree *somTD_ODBaseShape_somFree;
typedef SOMClass*   SOMLINK somTP_ODBaseShape_somGetClass(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somGetClass *somTD_ODBaseShape_somGetClass;
typedef string   SOMLINK somTP_ODBaseShape_somGetClassName(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somGetClassName *somTD_ODBaseShape_somGetClassName;
typedef long   SOMLINK somTP_ODBaseShape_somGetSize(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somGetSize *somTD_ODBaseShape_somGetSize;
typedef boolean   SOMLINK somTP_ODBaseShape_somIsA(ODBaseShape *somSelf,
		SOMClass* aClassObj);
typedef somTP_ODBaseShape_somIsA *somTD_ODBaseShape_somIsA;
typedef boolean   SOMLINK somTP_ODBaseShape_somIsInstanceOf(ODBaseShape *somSelf,
		SOMClass* aClassObj);
typedef somTP_ODBaseShape_somIsInstanceOf *somTD_ODBaseShape_somIsInstanceOf;
typedef boolean   SOMLINK somTP_ODBaseShape_somRespondsTo(ODBaseShape *somSelf,
		somId mId);
typedef somTP_ODBaseShape_somRespondsTo *somTD_ODBaseShape_somRespondsTo;
typedef boolean   SOMLINK somTP_ODBaseShape_somDispatch(ODBaseShape *somSelf,
		somToken* retValue,
		somId methodId,
		va_list ap);
typedef somTP_ODBaseShape_somDispatch *somTD_ODBaseShape_somDispatch;
typedef boolean   SOMLINK somTP_ODBaseShape_somClassDispatch(ODBaseShape *somSelf,
		SOMClass* clsObj,
		somToken* retValue,
		somId methodId,
		va_list ap);
typedef somTP_ODBaseShape_somClassDispatch *somTD_ODBaseShape_somClassDispatch;
typedef boolean   SOMLINK somTP_ODBaseShape_somCastObj(ODBaseShape *somSelf,
		SOMClass* cls);
typedef somTP_ODBaseShape_somCastObj *somTD_ODBaseShape_somCastObj;
typedef boolean   SOMLINK somTP_ODBaseShape_somResetObj(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somResetObj *somTD_ODBaseShape_somResetObj;
typedef SOMObject*   SOMLINK somTP_ODBaseShape_somPrintSelf(ODBaseShape *somSelf);
typedef somTP_ODBaseShape_somPrintSelf *somTD_ODBaseShape_somPrintSelf;
typedef void   SOMLINK somTP_ODBaseShape_somDumpSelf(ODBaseShape *somSelf,
		long level);
typedef somTP_ODBaseShape_somDumpSelf *somTD_ODBaseShape_somDumpSelf;
typedef void   SOMLINK somTP_ODBaseShape_somDumpSelfInt(ODBaseShape *somSelf,
		long level);
typedef somTP_ODBaseShape_somDumpSelfInt *somTD_ODBaseShape_somDumpSelfInt;
}

#endif /* ODBaseShape_API */


/*
 * -- This emitter believes that method thunks are unavailable,
 * -- so somResolve will be called.
 */
#undef somresolve_
#define somresolve_(obj,mToken) (somResolve(obj,mToken))

/*
 * -- The C++ Wrapper Class for ODBaseShape
 */
class ODBaseShape : public ODRefCntObject
{
public:

// ODBaseShape::new creates the class object if necessary, and then uses somNewNoInit
// to allocate memory and create the object. Initialization is in ctors.
void *operator new(size_t)
{
   if (!_ODBaseShape) ODBaseShapeNewClass(ODBaseShape_MajorVersion,ODBaseShape_MinorVersion);
   return (void*)
      SOM_Resolve(_ODBaseShape,SOMClass,somNewNoInit)
         ((SOMClass *)((void*)_ODBaseShape));
}

// ODBaseShape::delete uses somDestruct.
void operator delete(void * obj)
{
   if (obj && *(void**)obj) {
      SOM_Resolve(obj,SOMObject,somDestruct)
         ((SOMObject*)obj, 1, 0);
   }
}

ODBaseShape()
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (ODBaseShapeCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

ODBaseShape(ODBaseShape* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (ODBaseShapeCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}

ODBaseShape(const ODBaseShape* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (ODBaseShapeCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/* method: NewShape */
ODShape*   NewShape(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,NewShape)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,NewShape)
	(this, ev);
#endif
}


/* method: Copy */
ODShape*   Copy(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,Copy)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,Copy)
	(this, ev);
#endif
}


/* method: GetGeometryMode */
ODGeometryMode   GetGeometryMode(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODGeometryMode __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,GetGeometryMode)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,GetGeometryMode)
	(this, ev);
#endif
}


/* method: SetGeometryMode */
void   SetGeometryMode(Environment *ev,
		ODGeometryMode mode)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,SetGeometryMode)
	(this, ev,mode);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: GetBoundingBox */
void   GetBoundingBox(Environment *ev,
		ODRect* bounds)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,GetBoundingBox)
	(this, ev,bounds);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: SetRectangle */
ODShape*   SetRectangle(Environment *ev,
		ODRect* rect)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,SetRectangle)
	(this, ev,rect);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,SetRectangle)
	(this, ev,rect);
#endif
}


/* method: CopyPolygon */
void   CopyPolygon(Environment *ev,
		ODPolygon* copy)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,CopyPolygon)
	(this, ev,copy);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: SetPolygon */
ODShape*   SetPolygon(Environment *ev,
		ODPolygon* polygon)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,SetPolygon)
	(this, ev,polygon);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,SetPolygon)
	(this, ev,polygon);
#endif
}


/* method: GetPlatformShape */
ODPlatformShape   GetPlatformShape(Environment *ev,
		ODGraphicsSystem graphicsSystem)
{
#ifdef SOMCHKEXCEPT
   ODPlatformShape __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,GetPlatformShape)
	(this, ev,graphicsSystem);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,GetPlatformShape)
	(this, ev,graphicsSystem);
#endif
}


/* method: SetPlatformShape */
void   SetPlatformShape(Environment *ev,
		ODGraphicsSystem graphicsSystem,
		ODPlatformShape platformShape)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,SetPlatformShape)
	(this, ev,graphicsSystem,platformShape);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: Reset */
void   Reset(Environment *ev)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,Reset)
	(this, ev);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: WriteShape */
void   WriteShape(Environment *ev,
		ODStorageUnit* storageUnit)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,WriteShape)
	(this, ev,storageUnit);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: ReadShape */
ODShape*   ReadShape(Environment *ev,
		ODStorageUnit* storageUnit)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,ReadShape)
	(this, ev,storageUnit);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,ReadShape)
	(this, ev,storageUnit);
#endif
}


/* method: IsSameAs */
ODBoolean   IsSameAs(Environment *ev,
		ODShape* compareShape)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,IsSameAs)
	(this, ev,compareShape);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,IsSameAs)
	(this, ev,compareShape);
#endif
}


/* method: IsEmpty */
ODBoolean   IsEmpty(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,IsEmpty)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,IsEmpty)
	(this, ev);
#endif
}


/* method: ContainsPoint */
ODBoolean   ContainsPoint(Environment *ev,
		ODPoint* point)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,ContainsPoint)
	(this, ev,point);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,ContainsPoint)
	(this, ev,point);
#endif
}


/* method: IsRectangular */
ODBoolean   IsRectangular(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,IsRectangular)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,IsRectangular)
	(this, ev);
#endif
}


/* method: HasGeometry */
ODBoolean   HasGeometry(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,HasGeometry)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,HasGeometry)
	(this, ev);
#endif
}


/* method: CopyFrom */
void   CopyFrom(Environment *ev,
		ODShape* sourceShape)
{
   SOM_ResolveD(this,ODBaseShape,ODBaseShape,CopyFrom)
	(this, ev,sourceShape);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: Transform */
ODShape*   Transform(Environment *ev,
		ODTransform* transform)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,Transform)
	(this, ev,transform);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,Transform)
	(this, ev,transform);
#endif
}


/* method: InverseTransform */
ODShape*   InverseTransform(Environment *ev,
		ODTransform* transform)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,InverseTransform)
	(this, ev,transform);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,InverseTransform)
	(this, ev,transform);
#endif
}


/* method: Subtract */
ODShape*   Subtract(Environment *ev,
		ODShape* diffShape)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,Subtract)
	(this, ev,diffShape);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,Subtract)
	(this, ev,diffShape);
#endif
}


/* method: Intersect */
ODShape*   Intersect(Environment *ev,
		ODShape* sectShape)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,Intersect)
	(this, ev,sectShape);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,Intersect)
	(this, ev,sectShape);
#endif
}


/* method: Union */
ODShape*   Union(Environment *ev,
		ODShape* unionShape)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,Union)
	(this, ev,unionShape);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,Union)
	(this, ev,unionShape);
#endif
}


/* method: Outset */
ODShape*   Outset(Environment *ev,
		ODCoordinate distance)
{
#ifdef SOMCHKEXCEPT
   ODShape* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODBaseShape,Outset)
	(this, ev,distance);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODBaseShape,Outset)
	(this, ev,distance);
#endif
}


/*
 * Reintroduce inherited methods
 */

/* method: InitRefCntObject */
void   InitRefCntObject(Environment *ev)
{
   SOM_ResolveD(this,ODBaseShape,ODRefCntObject,InitRefCntObject)
	(this, ev);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: Acquire */
void   Acquire(Environment *ev)
{
   SOM_ResolveD(this,ODBaseShape,ODRefCntObject,Acquire)
	(this, ev);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: Release */
void   Release(Environment *ev)
{
   SOM_ResolveD(this,ODBaseShape,ODRefCntObject,Release)
	(this, ev);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: GetRefCount */
ODULong   GetRefCount(Environment *ev)
{
#ifdef SOMCHKEXCEPT
   ODULong __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODRefCntObject,GetRefCount)
	(this, ev);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODRefCntObject,GetRefCount)
	(this, ev);
#endif
}


/* method: somUninit */
void   somUninit()
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somUninit)
	(this);
}


/* method: InitObject */
void   InitObject(Environment *ev)
{
   SOM_ResolveD(this,ODBaseShape,ODObject,InitObject)
	(this, ev);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: HasExtension */
ODBoolean   HasExtension(Environment *ev,
		ODType extensionName)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODObject,HasExtension)
	(this, ev,extensionName);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODObject,HasExtension)
	(this, ev,extensionName);
#endif
}


/* method: AcquireExtension */
ODExtension*   AcquireExtension(Environment *ev,
		ODType extensionName)
{
#ifdef SOMCHKEXCEPT
   ODExtension* __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODObject,AcquireExtension)
	(this, ev,extensionName);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODObject,AcquireExtension)
	(this, ev,extensionName);
#endif
}


/* method: ReleaseExtension */
void   ReleaseExtension(Environment *ev,
		ODExtension* extension)
{
   SOM_ResolveD(this,ODBaseShape,ODObject,ReleaseExtension)
	(this, ev,extension);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: Purge */
ODSize   Purge(Environment *ev,
		ODSize size)
{
#ifdef SOMCHKEXCEPT
   ODSize __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODObject,Purge)
	(this, ev,size);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODObject,Purge)
	(this, ev,size);
#endif
}


/* method: IsEqualTo */
ODBoolean   IsEqualTo(Environment *ev,
		ODObject* object)
{
#ifdef SOMCHKEXCEPT
   ODBoolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,ODObject,IsEqualTo)
	(this, ev,object);
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
   return __somResult;
#else
   return SOM_ResolveD(this,ODBaseShape,ODObject,IsEqualTo)
	(this, ev,object);
#endif
}


/* method: SubClassResponsibility */
void   SubClassResponsibility(Environment *ev)
{
   SOM_ResolveD(this,ODBaseShape,ODObject,SubClassResponsibility)
	(this, ev);
#ifdef SOMCHKEXCEPT
   if ( ev->_major != NO_EXCEPTION )
      SOMCHKEXCEPT;
#endif
}


/* method: somInit */
void   somInit()
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somInit)
	(this);
}


/* initializer method: somDefaultInit */
void   somDefaultInit(somInitCtrl* ctrl)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultInit)
	(this,ctrl);
}


/* method: somDestruct */
void   somDestruct(octet doFree,
		somDestructCtrl* ctrl)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDestruct)
	(this,doFree,ctrl);
}


/* initializer method: somDefaultCopyInit */
void   somDefaultCopyInit(somInitCtrl* ctrl,
		SOMObject* fromObj)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultCopyInit)
	(this,ctrl,fromObj);
}


/* method: somDefaultAssign */
ODBaseShape*  somDefaultAssign(somAssignCtrl* ctrl,
		SOMObject* fromObj)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultAssign)
	(this,ctrl,fromObj);
}


/* initializer method: somDefaultConstCopyInit */
void   somDefaultConstCopyInit(somInitCtrl* ctrl,
		SOMObject* fromObj)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultConstCopyInit)
	(this,ctrl,fromObj);
}


/* initializer method: somDefaultVCopyInit */
void   somDefaultVCopyInit(somInitCtrl* ctrl,
		SOMObject* fromObj)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultVCopyInit)
	(this,ctrl,fromObj);
}


/* initializer method: somDefaultConstVCopyInit */
void   somDefaultConstVCopyInit(somInitCtrl* ctrl,
		SOMObject* fromObj)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultConstVCopyInit)
	(this,ctrl,fromObj);
}


/* method: somDefaultConstAssign */
ODBaseShape*  somDefaultConstAssign(somAssignCtrl* ctrl,
		SOMObject* fromObj)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultConstAssign)
	(this,ctrl,fromObj);
}


/* method: somDefaultVAssign */
ODBaseShape*  somDefaultVAssign(somAssignCtrl* ctrl,
		SOMObject* fromObj)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultVAssign)
	(this,ctrl,fromObj);
}


/* method: somDefaultConstVAssign */
ODBaseShape*  somDefaultConstVAssign(somAssignCtrl* ctrl,
		SOMObject* fromObj)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somDefaultConstVAssign)
	(this,ctrl,fromObj);
}


/* method: somFree */
void   somFree()
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somFree)
	(this);
}


/* method: somGetClass */
SOMClass*   somGetClass()
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somGetClass)
	(this);
}


/* method: somGetClassName */
string   somGetClassName()
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somGetClassName)
	(this);
}


/* method: somGetSize */
long   somGetSize()
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somGetSize)
	(this);
}


/* method: somIsA */
boolean   somIsA(SOMClass* aClassObj)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somIsA)
	(this,aClassObj);
}


/* method: somIsInstanceOf */
boolean   somIsInstanceOf(SOMClass* aClassObj)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somIsInstanceOf)
	(this,aClassObj);
}


/* method: somRespondsTo */
boolean   somRespondsTo(somId mId)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somRespondsTo)
	(this,mId);
}


/* va_list method: somDispatch */
/* the va_list invocation form */
boolean   ODBaseShape_somDispatch(somToken* retValue,
		somId methodId,
		va_list ap)
{
return SOM_ResolveD(this,ODBaseShape,SOMObject,somDispatch)
	(this,retValue,methodId,ap);
}

/* the varargs invocation form */
boolean   somDispatch(somToken* retValue,
		somId methodId,
		...)
{
   va_list ap;
   va_start(ap, methodId);
   boolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,SOMObject,somDispatch)
	(this,retValue,methodId,ap);
   va_end(ap);
   return __somResult;
}


/* va_list method: somClassDispatch */
/* the va_list invocation form */
boolean   ODBaseShape_somClassDispatch(SOMClass* clsObj,
		somToken* retValue,
		somId methodId,
		va_list ap)
{
return SOM_ResolveD(this,ODBaseShape,SOMObject,somClassDispatch)
	(this,clsObj,retValue,methodId,ap);
}

/* the varargs invocation form */
boolean   somClassDispatch(SOMClass* clsObj,
		somToken* retValue,
		somId methodId,
		...)
{
   va_list ap;
   va_start(ap, methodId);
   boolean __somResult = 
      SOM_ResolveD(this,ODBaseShape,SOMObject,somClassDispatch)
	(this,clsObj,retValue,methodId,ap);
   va_end(ap);
   return __somResult;
}


/* method: somCastObj */
boolean   somCastObj(SOMClass* cls)
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somCastObj)
	(this,cls);
}


/* method: somResetObj */
boolean   somResetObj()
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somResetObj)
	(this);
}


/* method: somPrintSelf */
SOMObject*   somPrintSelf()
{
   return SOM_ResolveD(this,ODBaseShape,SOMObject,somPrintSelf)
	(this);
}


/* method: somDumpSelf */
void   somDumpSelf(long level)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDumpSelf)
	(this,level);
}


/* method: somDumpSelfInt */
void   somDumpSelfInt(long level)
{
   SOM_ResolveD(this,ODBaseShape,SOMObject,somDumpSelfInt)
	(this,level);
}



};   /* ODBaseShape */



#endif       /* SOM_ODBaseShape_xh */
