--- trunk/OOPSE/libmdtools/fortranWrappers.cpp 2003/10/28 17:04:06 832 +++ trunk/OOPSE/libmdtools/fortranWrappers.cpp 2003/10/28 22:25:46 836 @@ -4,46 +4,58 @@ #include "fSimulation.h" #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" { - void F90_FUNC(wrapforcefield, 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(wrapsimmod, WRAPSIMMOD) (void (*wrapFunction)(void (*p1) setFortranSimList, - void (*p2) setFortranBoxList, - void (*p3) notifyFortranCutOffList) - ); + 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 F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( ffWrapFunction_TD myWF ); + 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 F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD) (void (*wrapFunction)(void (*p1) setFortranMPIlist) ); -#endif // is_mpi + + typedef void (*spmWrapFunction_TD)( setFortranMPI_TD p1 ); + void F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD)(spmWrapFunction_TD myWF); -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); +#endif // is_mpi } -/* -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; -*/ +// 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 ); -extern "C" { -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 @@ -55,10 +67,12 @@ void wrapMeFF( ForceFields* thisFF ){ 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; @@ -66,7 +80,6 @@ void wrapFF( void (*p1) makeAtypeList, void (*p2) init set_sticky_params = p4; set_gb_pair_params = p5; newEAMtype = p6; - } @@ -80,13 +93,16 @@ extern "C" void wrapSimInfo( void (*p1) setFortranSimL } -extern "C" 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 @@ -98,7 +114,7 @@ void wrapSimParallel(void (*p1) setFortranMPIlist ){ F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD) ( wrapSimParallel ); } -void wrapSimParallel(void (*p1) setFortranMPIlist ){ +extern "C" void wrapSimParallel( setFortranMPI_TD p1 ){ currentMPIsim->setInternal( p1 ); }