[cig-commits] commit: Adding a StandardConditionFunctions_Destroy function, that deletes all conditions functions off the conditions functions register.

Mercurial hg at geodynamics.org
Tue Mar 23 10:35:37 PDT 2010


changeset:   753:89788c35ec9e
branch:      1.4.x
tag:         1.4.0
user:        JulianGiordani
date:        Tue Feb 02 16:43:18 2010 +1100
files:       plugins/StandardConditionFunctions/StandardConditionFunctions.c plugins/StandardConditionFunctions/StandardConditionFunctions.h
description:
Adding a StandardConditionFunctions_Destroy function, that deletes all conditions functions off the conditions functions register.
Also cleaning some warnings.


diff -r d1abceb1a5b0 -r 89788c35ec9e plugins/StandardConditionFunctions/StandardConditionFunctions.c
--- a/plugins/StandardConditionFunctions/StandardConditionFunctions.c	Tue Feb 02 14:46:04 2010 +1100
+++ b/plugins/StandardConditionFunctions/StandardConditionFunctions.c	Tue Feb 02 16:43:18 2010 +1100
@@ -178,6 +178,26 @@ void _StgFEM_StandardConditionFunctions_
         ConditionFunction_Register_Add( condFunc_Register, condFunc );
 }
 
+void _StgFEM_StandardConditionFunctions_Destroy( void* _self, void* data ) {
+   /* This function will totally clean the condFunc_Register
+    *
+    * This could be trouble some if other code adds or deletes condition functions on this register
+    */
+
+   unsigned *refCount = &(condFunc_Register->count);
+
+   /* first check if there are things still on the condFunc_Register, if so .... */
+   if( *refCount != 0 ) {
+      while( *refCount != 0 ) {
+
+         _ConditionFunction_Delete( condFunc_Register->_cf[ *refCount-1 ] );
+         condFunc_Register->_cf[ *refCount-1 ] = NULL;
+
+         *refCount = *refCount - 1;
+      }
+   }
+   _Codelet_Destroy( _self, data );
+}
 void* _StgFEM_StandardConditionFunctions_DefaultNew( Name name ) {
 	return Codelet_New(
 		StgFEM_StandardConditionFunctions_Type,
@@ -186,7 +206,7 @@ void* _StgFEM_StandardConditionFunctions
 		_Codelet_Build,
 		_Codelet_Initialise,
 		_Codelet_Execute,
-		_Codelet_Destroy,
+		_StgFEM_StandardConditionFunctions_Destroy,
 		name );
 }
 
@@ -967,7 +987,7 @@ void StgFEM_StandardConditionFunctions_S
 /*           } */
 }
 
-void StgFEM_StandardConditionFunctions_MovingStepFunction( int nodeInd, int varInd, void* _ctx, void* _result ) {
+void StgFEM_StandardConditionFunctions_MovingStepFunction( Node_LocalIndex nodeInd, Variable_Index varInd, void* _ctx, void* _result ) {
    FiniteElementContext* ctx = (FiniteElementContext*)_ctx;
    FeVariable* velField;
    FeMesh* mesh;
@@ -975,7 +995,8 @@ void StgFEM_StandardConditionFunctions_M
    double* result = (double*)_result;
    double* coord, offsetLower, offsetUpper, left, right;
    double *wallCrd, pos;
-   int dim, wallDepth, ijk[3];
+   int dim, wallDepth;
+   unsigned ijk[3];
    char* movingWall;
    Grid* grid;
 
@@ -1004,7 +1025,7 @@ void StgFEM_StandardConditionFunctions_M
    ** from where the offset should be applied. */
    grid = *(Grid**)Mesh_GetExtension( mesh, Grid**, "vertexGrid" );
    assert( grid );
-   memset( ijk, 0, 3 * sizeof(int) );
+   memset( ijk, 0, 3 * sizeof(unsigned) );
    if( !strcmp( movingWall, "lower" ) ) {
       ijk[dim] = wallDepth;
       wallCrd = Mesh_GetVertex( mesh, Grid_Project( grid, ijk ) );
diff -r d1abceb1a5b0 -r 89788c35ec9e plugins/StandardConditionFunctions/StandardConditionFunctions.h
--- a/plugins/StandardConditionFunctions/StandardConditionFunctions.h	Tue Feb 02 14:46:04 2010 +1100
+++ b/plugins/StandardConditionFunctions/StandardConditionFunctions.h	Tue Feb 02 16:43:18 2010 +1100
@@ -82,7 +82,7 @@ void StgFEM_StandardConditionFunctions_E
 void StgFEM_StandardConditionFunctions_EdgeDriveConvectionIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result );
 void StgFEM_StandardConditionFunctions_ThermalEdgeDriveConvectionIC( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result );
 void StgFEM_StandardConditionFunctions_StepFunction( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) ;
-void StgFEM_StandardConditionFunctions_MovingStepFunction( int nodeInd, int varInd, void* _ctx, void* _result );
+void StgFEM_StandardConditionFunctions_MovingStepFunction( Node_LocalIndex nodeInd, Variable_Index varInd, void* _ctx, void* _result );
 void StgFEM_StandardConditionFunctions_SpecRidge3D( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) ;
 void StgFEM_StandardConditionFunctions_SpectralBCX( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) ;
 void StgFEM_StandardConditionFunctions_SpectralBCY( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result ) ;



More information about the CIG-COMMITS mailing list