| | |
| | | |
| | | /* plugins */ |
| | | typedef struct { |
| | | void (*at_start)(void); |
| | | void (*after_vesicle_init)(void *vesicle); |
| | | void (*at_start)(int argc, char **argv); |
| | | void *(*after_vesicle_init)(void *vesicle); |
| | | ts_bool (*vm_hard_constraint)(void *vesicle, ts_vertex *vtx, ts_vertex *odl_vtx); |
| | | ts_double (*vm_energy_before)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_energy_after)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_new_state_accepted)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_new_state_rejected)(void *vesicle, ts_vertex *vtx); |
| | | void (*vm_energy_before_prepare)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_energy_before_execute)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_energy_after_prepare)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_energy_after_execute)(void *vesicle, ts_vertex *vtx); |
| | | ts_double (*vm_before_montecarlo_constraint)(void *vesicle, ts_vertex *vtx, ts_vertex *old_vtx); |
| | | ts_double (*vm_new_state_accepted)(void *vesicle, ts_vertex *vtx, ts_vertex *old_vtx); |
| | | ts_double (*vm_new_state_rejected)(void *vesicle, ts_vertex *vtx, ts_vertex *old_vtx); |
| | | void (*cleanup)(void); |
| | | } ts_plugin_function; |
| | | |
| | |
| | | ts_char *name; |
| | | ts_char *description; |
| | | ts_char *author; |
| | | void *data; |
| | | } ts_plugin_details; |
| | | |
| | | typedef struct { |
| | |
| | | void *libhandle; |
| | | } ts_plugin; |
| | | |
| | | struct ts_plugin_chain { |
| | | ts_plugin *plugin; |
| | | struct ts_plugin_chain *next; |
| | | }; |
| | | typedef struct ts_plugin_chain ts_plugin_chain; |
| | | |
| | | typedef struct { |
| | | ts_plugin_chain *at_start; |
| | | ts_plugin_chain *after_vesicle_init; |
| | | ts_plugin_chain *vm_hard_constraint; |
| | | ts_plugin_chain *vm_energy_before_prepare; |
| | | ts_plugin_chain *vm_energy_after_execute; |
| | | ts_plugin_chain *vm_before_montecarlo_constraint; |
| | | ts_plugin_chain *vm_new_state_accepted; |
| | | ts_plugin_chain *cleanup; |
| | | } ts_plugin_chains; |
| | | |
| | | |
| | | typedef struct { |
| | | ts_uint n; |
| | | ts_plugin **plugin; |
| | | ts_plugin_chains *chain; |
| | | ts_plugin_chain *pointer; |
| | | } ts_plugin_list; |
| | | |
| | | /* end plugins */ |
| | |
| | | ts_double nucleus_center[3]; |
| | | ts_double area; |
| | | ts_confinement_plane confinement_plane; |
| | | ts_plugin_list plist; |
| | | ts_plugin_list *plist; |
| | | } ts_vesicle; |
| | | |
| | | |