void get_stx_coordnum(const char *infile, int *natoms) { FILE *in; int ftp, tpxver, tpxgen; t_trxframe fr; char g96_line[STRLEN+1]; ftp = fn2ftp(infile); range_check(ftp, 0, efNR); switch (ftp) { case efGRO: get_coordnum(infile, natoms); break; case efG96: in = gmx_fio_fopen(infile, "r"); fr.title = NULL; fr.natoms = -1; fr.atoms = NULL; fr.x = NULL; fr.v = NULL; fr.f = NULL; *natoms = read_g96_conf(in, infile, &fr, g96_line); gmx_fio_fclose(in); break; case efPDB: case efBRK: case efENT: in = gmx_fio_fopen(infile, "r"); get_pdb_coordnum(in, natoms); gmx_fio_fclose(in); break; case efESP: *natoms = get_espresso_coordnum(infile); break; case efTPA: case efTPB: case efTPR: { t_tpxheader tpx; read_tpxheader(infile, &tpx, TRUE, &tpxver, &tpxgen); *natoms = tpx.natoms; break; } default: gmx_fatal(FARGS, "File type %s not supported in get_stx_coordnum", ftp2ext(ftp)); } }
static int pdb_first_x(t_trxstatus *status, FILE *fp, t_trxframe *fr) { initcount(status); fprintf(stderr,"Reading frames from pdb file"); frewind(fp); get_pdb_coordnum(fp, &fr->natoms); if (fr->natoms==0) gmx_fatal(FARGS,"\nNo coordinates in pdb file\n"); frewind(fp); snew(fr->x,fr->natoms); pdb_next_x(status, fp, fr); return fr->natoms; }
static void get_stx_coordnum(const char *infile, int *natoms) { FILE *in; int ftp; t_trxframe fr; char g96_line[STRLEN+1]; ftp = fn2ftp(infile); range_check(ftp, 0, efNR); switch (ftp) { case efGRO: get_coordnum(infile, natoms); break; case efG96: { in = gmx_fio_fopen(infile, "r"); fr.title = NULL; fr.natoms = -1; fr.atoms = NULL; fr.x = NULL; fr.v = NULL; fr.f = NULL; *natoms = read_g96_conf(in, infile, &fr, NULL, g96_line); sfree(const_cast<char *>(fr.title)); gmx_fio_fclose(in); break; } case efPDB: case efBRK: case efENT: in = gmx_fio_fopen(infile, "r"); get_pdb_coordnum(in, natoms); gmx_fio_fclose(in); break; case efESP: *natoms = get_espresso_coordnum(infile); break; default: gmx_fatal(FARGS, "File type %s not supported in get_stx_coordnum", ftp2ext(ftp)); } }