| 4 |  | #include "fSimulation.h" | 
| 5 |  | #include "fortranWrappers.hpp" | 
| 6 |  |  | 
| 7 | + | // declare the actual instances of the function pointers | 
| 8 |  |  | 
| 9 | + | makeAtype_TD makeAtype; | 
| 10 | + | initFortranFF_TD initFortranFF; | 
| 11 | + | set_sticky_params_TD set_sticky_params; | 
| 12 | + | set_gb_pair_params_TD set_gb_pair_params; | 
| 13 | + | newEAMtype_TD newEAMtype; | 
| 14 | + |  | 
| 15 | + | // declare the functions on the fortran side | 
| 16 | + |  | 
| 17 |  | extern "C" { | 
| 9 | – | void F90_FUNC(wrapforcefield, WRAPFORCEFIELD) (void (*wrapFunction)(void (*p1) makeAtypeList, | 
| 10 | – | void (*p2) initFortranFFList, | 
| 11 | – | void (*p3) doForceLoopList, | 
| 12 | – | void (*p4) set_sticky_params_List, | 
| 13 | – | void (*p5) set_gb_pair_params_List, | 
| 14 | – | void (*p6) newEAMtype_List) | 
| 15 | – | ); | 
| 18 |  |  | 
| 19 | < | void F90_FUNC(wrapsimmod, WRAPSIMMOD) (void (*wrapFunction)(void (*p1) setFortranSimList, | 
| 20 | < | void (*p2) setFortranBoxList, | 
| 21 | < | void (*p3) notifyFortranCutOffList) | 
| 22 | < | ); | 
| 19 | > | typedef void (*ffWrapFunction_TD)( makeAtype_TD p1, | 
| 20 | > | initFortranFF_TD p2, | 
| 21 | > | doForceLoop_TD p3, | 
| 22 | > | set_sticky_params_TD p4, | 
| 23 | > | set_gb_pair_params_TD p5, | 
| 24 | > | newEAMtype_TD p6 ); | 
| 25 | > |  | 
| 26 | > | void F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( ffWrapFunction_TD myWF ); | 
| 27 |  |  | 
| 28 | + | typedef void (*smWrapFunction_TD)( setFortranSim_TD p1, | 
| 29 | + | setFortranBox_TD p2, | 
| 30 | + | notifyFortranCutOff_TD p3 ); | 
| 31 | + |  | 
| 32 | + | void F90_FUNC(wrapsimmod, WRAPSIMMOD) ( smWrapFunction_TD myWF ); | 
| 33 | + |  | 
| 34 |  | #ifdef IS_MPI | 
| 35 | < | void F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD) (void (*wrapFunction)(void (*p1) setFortranMPIlist) ); | 
| 36 | < | #endif // is_mpi | 
| 35 | > |  | 
| 36 | > | typedef void (*spmWrapFunction_TD)( setFortranMPI_TD p1 ); | 
| 37 |  |  | 
| 38 | + | void F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD)(spmWrapFunction_TD myWF); | 
| 39 |  |  | 
| 40 | < | void wrapFF( void (*p1) makeAtypeList, void (*p2) initFortranFFList, | 
| 28 | < | void (*p3) doForceLoopList, void (*p4) set_sticky_params_List, | 
| 29 | < | void (*p5) set_gb_pair_params_List, void (*p6) newEAMtype_List); | 
| 40 | > | #endif // is_mpi | 
| 41 |  | } | 
| 42 |  |  | 
| 43 | < | /* | 
| 44 | < | void (*makeAtype) makeAtypeList; | 
| 45 | < | void (*initFortranFF) initFortranFFList; | 
| 46 | < | void (*set_sticky_params) set_sticky_params_List; | 
| 47 | < | void (*set_gb_pair_params) set_gb_pair_params_List; | 
| 48 | < | void (*newEAMtype) newEAMtype_List; | 
| 49 | < | */ | 
| 43 | > | // declare the functions that are defined in this file | 
| 44 | > | extern "C"{ | 
| 45 | > | void wrapFF(makeAtype_TD p1, | 
| 46 | > | initFortranFF_TD p2, | 
| 47 | > | doForceLoop_TD p3, | 
| 48 | > | set_sticky_params_TD p4, | 
| 49 | > | set_gb_pair_params_TD p5, | 
| 50 | > | newEAMtype_TD p6 ); | 
| 51 |  |  | 
| 52 | < | extern "C" { | 
| 53 | < | void wrapSimInfo( void (*p1) setFortranSimList, void (*p2) setFortranBoxList, | 
| 54 | < | void (*p3) notifyFortranCutOffList ); | 
| 55 | < |  | 
| 52 | > | void wrapSimInfo(setFortranSim_TD p1, | 
| 53 | > | setFortranBox_TD p2, | 
| 54 | > | notifyFortranCutOff_TD p3 ); | 
| 55 | > |  | 
| 56 |  | #ifdef IS_MPI | 
| 57 | < | void wrapSimParallel(void (*p1) setFortranMPIlist ); | 
| 58 | < | #endif // is_mpi | 
| 57 | > | void wrapSimParallel( setFortranMPI_TD p1 ); | 
| 58 | > | #endif | 
| 59 |  | } | 
| 60 |  |  | 
| 61 |  | // take care of the ForceField functions | 
| 67 |  | F90_FUNC(wrapforcefield, WRAPFORCEFIELD)( wrapFF ); | 
| 68 |  | } | 
| 69 |  |  | 
| 70 | < |  | 
| 71 | < | void wrapFF( void (*p1) makeAtypeList, void (*p2) initFortranFFList, | 
| 72 | < | void (*p3) doForceLoopList, void (*p4) set_sticky_params_List, | 
| 73 | < | void (*p5) set_gb_pair_params_List, void (*p6) newEAMtype_List){ | 
| 70 | > | extern "C" void wrapFF( makeAtype_TD p1, | 
| 71 | > | initFortranFF_TD p2, | 
| 72 | > | doForceLoop_TD p3, | 
| 73 | > | set_sticky_params_TD p4, | 
| 74 | > | set_gb_pair_params_TD p5, | 
| 75 | > | newEAMtype_TD p6 ){ | 
| 76 |  |  | 
| 77 |  | makeAtype = p1; | 
| 78 |  | initFortranFF = p2; | 
| 80 |  | set_sticky_params = p4; | 
| 81 |  | set_gb_pair_params = p5; | 
| 82 |  | newEAMtype = p6; | 
| 69 | – |  | 
| 83 |  | } | 
| 84 |  |  | 
| 85 |  |  | 
| 93 |  | } | 
| 94 |  |  | 
| 95 |  |  | 
| 83 | – | extern "C" void wrapSimInfo( void (*p1) setFortranSimList, void (*p2) setFortranBoxList, | 
| 84 | – | void (*p3) notifyFortranCutOffList){ | 
| 96 |  |  | 
| 97 | + | extern "C" void wrapSimInfo( setFortranSim_TD p1, | 
| 98 | + | setFortranBox_TD p2, | 
| 99 | + | notifyFortranCutOff_TD p3 ){ | 
| 100 | + |  | 
| 101 |  | currentPlug->setInternal( p1, p2, p3 ); | 
| 102 |  | } | 
| 103 |  |  | 
| 104 |  |  | 
| 105 | + |  | 
| 106 |  | #ifdef IS_MPI | 
| 107 |  |  | 
| 108 |  | // wrap the mpiSim functions | 
| 114 |  | F90_FUNC(wrapsimparallelmod, WRAPSIMPARALLELMOD) ( wrapSimParallel ); | 
| 115 |  | } | 
| 116 |  |  | 
| 117 | < | void wrapSimParallel(void (*p1) setFortranMPIlist ){ | 
| 117 | > | extern "C" void wrapSimParallel( setFortranMPI_TD p1 ){ | 
| 118 |  |  | 
| 119 |  | currentMPIsim->setInternal( p1 ); | 
| 120 |  | } |