--- trunk/OOPSE/libmdtools/fortranWrappers.cpp 2003/07/17 19:25:51 631 +++ trunk/OOPSE/libmdtools/fortranWrappers.cpp 2003/10/28 22:25:46 836 @@ -1,59 +1,78 @@ #define __C + +#include "config.h" #include "fSimulation.h" -#include +#include "fortranWrappers.hpp" +// declare the actual instances of the function pointers +makeAtype_TD makeAtype; +initFortranFF_TD initFortranFF; +set_sticky_params_TD set_sticky_params; +set_gb_pair_params_TD set_gb_pair_params; +newEAMtype_TD newEAMtype; + +// declare the functions on the fortran side + extern "C" { + + typedef void (*ffWrapFunction_TD)( makeAtype_TD p1, + initFortranFF_TD p2, + doForceLoop_TD p3, + set_sticky_params_TD p4, + set_gb_pair_params_TD p5, + newEAMtype_TD p6 ); - void wrapforcefield_( void (*wrapFunction)( void (*p1) makeAtypeList, - void (*p2) initFortranFFList, - void (*p3) doForceLoopList, - void (*p4) set_sticky_params_List, - void (*p5) set_gb_pair_params_List, - void (*p6) newEAMtype_List) - ); + void F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( ffWrapFunction_TD myWF ); - void wrapsimmod_ ( void (*wrapFunction)( void (*p1) setFortranSimList, - void (*p2) setFortranBoxList, - void (*p3) notifyFortranCutOffList) ); + typedef void (*smWrapFunction_TD)( setFortranSim_TD p1, + setFortranBox_TD p2, + notifyFortranCutOff_TD p3 ); + void F90_FUNC(wrapsimmod, WRAPSIMMOD) ( smWrapFunction_TD myWF ); + #ifdef IS_MPI - void wrapsimparallelmod_( void (*wrapFunction)(void (*p1) setFortranMPIlist ) ); -#endif // is_mpi + + typedef void (*spmWrapFunction_TD)( setFortranMPI_TD p1 ); + void F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD)(spmWrapFunction_TD myWF); + +#endif // is_mpi } +// declare the functions that are defined in this file +extern "C"{ + void wrapFF(makeAtype_TD p1, + initFortranFF_TD p2, + doForceLoop_TD p3, + set_sticky_params_TD p4, + set_gb_pair_params_TD p5, + newEAMtype_TD p6 ); -void wrapFF( void (*p1) makeAtypeList, void (*p2) initFortranFFList, - void (*p3) doForceLoopList, void (*p4) set_sticky_params_List, - void (*p5) set_gb_pair_params_List, void (*p6) newEAMtype_List); -void (*makeAtype) makeAtypeList; -void (*initFortranFF) initFortranFFList; -void (*set_sticky_params) set_sticky_params_List; -void (*set_gb_pair_params) set_gb_pair_params_List; -void (*newEAMtype) newEAMtype_List; - -void wrapSimInfo( void (*p1) setFortranSimList, void (*p2) setFortranBoxList, - void (*p3) notifyFortranCutOffList ); - + void wrapSimInfo(setFortranSim_TD p1, + setFortranBox_TD p2, + notifyFortranCutOff_TD p3 ); + #ifdef IS_MPI -void wrapSimParallel(void (*p1) setFortranMPIlist ); -#endif // is_mpi + void wrapSimParallel( setFortranMPI_TD p1 ); +#endif +} - // take care of the ForceField functions ForceFields* currentFF; void wrapMeFF( ForceFields* thisFF ){ currentFF = thisFF; - wrapforcefield_( wrapFF ); + F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( wrapFF ); } - -void wrapFF( void (*p1) makeAtypeList, void (*p2) initFortranFFList, - void (*p3) doForceLoopList, void (*p4) set_sticky_params_List, - void (*p5) set_gb_pair_params_List, void (*p6) newEAMtype_List){ +extern "C" void wrapFF( makeAtype_TD p1, + initFortranFF_TD p2, + doForceLoop_TD p3, + set_sticky_params_TD p4, + set_gb_pair_params_TD p5, + newEAMtype_TD p6 ){ makeAtype = p1; initFortranFF = p2; @@ -61,7 +80,6 @@ void wrapFF( void (*p1) makeAtypeList, void (*p2) init set_sticky_params = p4; set_gb_pair_params = p5; newEAMtype = p6; - } @@ -71,16 +89,20 @@ void wrapMeSimInfo( SimInfo* thePlug ){ void wrapMeSimInfo( SimInfo* thePlug ){ currentPlug = thePlug; - wrapsimmod_( wrapSimInfo ); + F90_FUNC(wrapsimmod, WRAPSIMMOD) ( wrapSimInfo ); } -void wrapSimInfo( void (*p1) setFortranSimList, void (*p2) setFortranBoxList, - void (*p3) notifyFortranCutOffList){ + + +extern "C" void wrapSimInfo( setFortranSim_TD p1, + setFortranBox_TD p2, + notifyFortranCutOff_TD p3 ){ currentPlug->setInternal( p1, p2, p3 ); } - + + #ifdef IS_MPI // wrap the mpiSim functions @@ -89,13 +111,14 @@ void wrapMeSimParallel( mpiSimulation* thisMPIsim ){ void wrapMeSimParallel( mpiSimulation* thisMPIsim ){ currentMPIsim = thisMPIsim; - wrapsimparallelmod_( wrapSimParallel ); + F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD) ( wrapSimParallel ); } -void wrapSimParallel(void (*p1) setFortranMPIlist ){ +extern "C" void wrapSimParallel( setFortranMPI_TD p1 ){ currentMPIsim->setInternal( p1 ); } #endif // is_mpi +