#ifndef __StGermain_Discretisation_Shape_SurfaceShapeClass_h__ #define __StGermain_Discretisation_Shape_SurfaceShapeClass_h__ /* Textual name of this class */ extern const Type SurfaceShape_Type; /* SurfaceShape information */ #define __SurfaceShape \ /* General info */ \ __Stg_Shape \ /* Virtual Info */\ \ Coord_List vertexList1; \ Coord_List vertexList2; \ Index vertexCount; \ Index nx; \ Index ny; \ struct SurfaceShape { __SurfaceShape }; /*--------------------------------------------------------------------------------------------------------------------- ** Constructors */ SurfaceShape* SurfaceShape_New( Name name, Dimension_Index dim, XYZ centre, double alpha, double beta, double gamma, Coord_List vertexList1, Coord_List vertexList2, Index vertexCount, Index nx, Index ny); SurfaceShape* _SurfaceShape_New( SizeT _sizeOfSelf, Type type, Stg_Class_DeleteFunction* _delete, Stg_Class_PrintFunction* _print, Stg_Class_CopyFunction* _copy, Stg_Component_DefaultConstructorFunction* _defaultConstructor, Stg_Component_ConstructFunction* _construct, Stg_Component_BuildFunction* _build, Stg_Component_InitialiseFunction* _initialise, Stg_Component_ExecuteFunction* _execute, Stg_Component_DestroyFunction* _destroy, Stg_Shape_IsCoordInsideFunction* _isCoordInside, Stg_Shape_CalculateVolumeFunction* _calculateVolume, Name name ); void _SurfaceShape_Init( void* polygon, Coord_List vertexList1, Coord_List vertexList2, Index vertexCount, Index nx, Index ny ) ; void SurfaceShape_InitAll( void* polygon, Dimension_Index dim, Coord centre, double alpha, double beta, double gamma, Coord_List vertexList1, Coord_List vertexList2, Index vertexCount, Index nx, Index ny ) ; /* Stg_Class_Delete SurfaceShape implementation */ void _SurfaceShape_Delete( void* polygon ); void _SurfaceShape_Print( void* polygon, Stream* stream ); #define SurfaceShape_Copy( self ) \ (SurfaceShape*) Stg_Class_Copy( self, NULL, False, NULL, NULL ) #define SurfaceShape_DeepCopy( self ) \ (SurfaceShape*) Stg_Class_Copy( self, NULL, True, NULL, NULL ) void* _SurfaceShape_Copy( void* polygon, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ); void* _SurfaceShape_DefaultNew( Name name ) ; void _SurfaceShape_Construct( void* shape, Stg_ComponentFactory* cf, void* data ) ; void _SurfaceShape_Build( void* polygon, void* data ) ; void _SurfaceShape_Initialise( void* polygon, void* data ) ; void _SurfaceShape_Execute( void* polygon, void* data ); void _SurfaceShape_Destroy( void* polygon, void* data ) ; void _SurfaceShape_invMatrix(double mat[ 3 ][ 3 ], double dest[ 3 ][ 3 ]) ; Bool _SurfaceShape_IsCoordInside( void* polygon, Coord coord ) ; double _SurfaceShape_CalculateVolume( void* polygon ); /*--------------------------------------------------------------------------------------------------------------------- ** Public member functions */ /*--------------------------------------------------------------------------------------------------------------------- ** Private Member functions */ #endif