static void *open_trr_read(const char *filename, const char *filetype, int *natoms) { md_file *mf; md_header mdh; gmxdata *gmx; int format; if (!strcmp(filetype, "trr")) format = MDFMT_TRR; else if (!strcmp(filetype, "trj")) format = MDFMT_TRJ; else if (!strcmp(filetype, "xtc")) format = MDFMT_XTC; else return NULL; mf = mdio_open(filename, format); if (!mf) { fprintf(stderr, "gromacsplugin) Cannot open file '%s', %s\n", filename, mdio_errmsg(mdio_errno())); return NULL; } if (mdio_header(mf, &mdh) < 0) { mdio_close(mf); fprintf(stderr, "gromacsplugin) Cannot read header fromm '%s', %s\n", filename, mdio_errmsg(mdio_errno())); return NULL; } *natoms = mdh.natoms; gmx = new gmxdata; gmx->mf = mf; gmx->natoms = mdh.natoms; return gmx; }
static void close_gro_write(void *v) { gmxdata *gmx = (gmxdata *)v; mdio_close(gmx->mf); free(gmx->atomlist); free(gmx->meta); free(gmx); }
int main(int argc, char *argv[]){ int i; if(strcmp("help", argv[1]) == 0){ cmd_help(argc, argv); return 0; } mdio_open_local(&g_mdio_bus); for(i = 0; i < sizeof(g_cmd_table)/sizeof(g_cmd_table[0])-1; ++i){ if(strcmp(g_cmd_table[i].cmd, argv[1]) == 0){ return g_cmd_table[i].func(argc, argv); } } mdio_close(); return 1; }
static void close_trr_write(void *v) { gmxdata *gmx = (gmxdata *)v; mdio_close(gmx->mf); delete gmx; }
static void close_g96_read(void *v) { gmxdata *gmx = (gmxdata *)v; mdio_close(gmx->mf); delete gmx; }