static gmx_bool do_trnheader(t_fileio *fio, gmx_bool bRead, t_trnheader *sh, gmx_bool *bOK) { int magic = GROMACS_MAGIC; static gmx_bool bFirst = TRUE; char buf[256]; *bOK = TRUE; gmx_fio_checktype(fio); if (!gmx_fio_do_int(fio, magic) || magic != GROMACS_MAGIC) { return FALSE; } if (bRead) { *bOK = *bOK && gmx_fio_do_string(fio, buf); if (bFirst) { fprintf(stderr, "trn version: %s ", buf); } } else { sprintf(buf, "GMX_trn_file"); *bOK = *bOK && gmx_fio_do_string(fio, buf); } *bOK = *bOK && gmx_fio_do_int(fio, sh->ir_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->e_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->box_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->vir_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->pres_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->top_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->sym_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->x_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->v_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->f_size); *bOK = *bOK && gmx_fio_do_int(fio, sh->natoms); if (!*bOK) { return *bOK; } sh->bDouble = (nFloatSize(sh) == sizeof(double)); gmx_fio_setprecision(fio, sh->bDouble); if (bRead && bFirst) { fprintf(stderr, "(%s precision)\n", sh->bDouble ? "double" : "single"); bFirst = FALSE; } *bOK = *bOK && gmx_fio_do_int(fio, sh->step); *bOK = *bOK && gmx_fio_do_int(fio, sh->nre); *bOK = *bOK && gmx_fio_do_real(fio, sh->t); *bOK = *bOK && gmx_fio_do_real(fio, sh->lambda); return *bOK; }
static bool do_trnheader(int fp,bool bRead,t_trnheader *sh, bool *bOK) { const int magic=GROMACS_MAGIC; const char *version = "GMX_trn_file"; static bool bFirst=TRUE; char buf[256]; *bOK=TRUE; gmx_fio_select(fp); if (!do_int(magic)) return FALSE; if (bRead) { *bOK = *bOK && do_string(buf); if (bFirst) fprintf(stderr,"trn version: %s ",buf); } else *bOK = *bOK && do_string(version); *bOK = *bOK && do_int(sh->ir_size); *bOK = *bOK && do_int(sh->e_size); *bOK = *bOK && do_int(sh->box_size); *bOK = *bOK && do_int(sh->vir_size); *bOK = *bOK && do_int(sh->pres_size); *bOK = *bOK && do_int(sh->top_size); *bOK = *bOK && do_int(sh->sym_size); *bOK = *bOK && do_int(sh->x_size); *bOK = *bOK && do_int(sh->v_size); *bOK = *bOK && do_int(sh->f_size); *bOK = *bOK && do_int(sh->natoms); if (!*bOK) return *bOK; sh->bDouble = (nFloatSize(sh) == sizeof(double)); gmx_fio_setprecision(fp,sh->bDouble); if (bRead && bFirst) { fprintf(stderr,"(%s precision)\n",sh->bDouble ? "double" : "single"); bFirst = FALSE; } *bOK = *bOK && do_int(sh->step); *bOK = *bOK && do_int(sh->nre); *bOK = *bOK && do_real(sh->t); *bOK = *bOK && do_real(sh->lambda); return *bOK; }
static int do_trnheader(XDRFILE *xd,mybool bRead,t_trnheader *sh) { int magic=GROMACS_MAGIC; int nflsz,slen,result; char *version = "GMX_trn_file"; char buf[BUFSIZE]; if (xdrfile_read_int(&magic,1,xd) != 1) return exdrINT; if (bRead) { if (xdrfile_read_int(&slen,1,xd) != 1) return exdrINT; if (slen != strlen(version)+1) return exdrSTRING; if (xdrfile_read_string(buf,BUFSIZE,xd) <= 0) return exdrSTRING; } else { slen = strlen(version)+1; if (xdrfile_read_int(&slen,1,xd) != 1) return exdrINT; if (xdrfile_write_string(version,xd) != (strlen(version)+1) ) return exdrSTRING; } if (xdrfile_read_int(&sh->ir_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->e_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->box_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->vir_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->pres_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->top_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->sym_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->x_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->v_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->f_size,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->natoms,1,xd) != 1) return exdrINT; if ((result = nFloatSize(sh,&nflsz)) != exdrOK) return result; sh->bDouble = (nflsz == sizeof(double)); if (xdrfile_read_int(&sh->step,1,xd) != 1) return exdrINT; if (xdrfile_read_int(&sh->nre,1,xd) != 1) return exdrINT; if (sh->bDouble) { if (xdrfile_read_double(&sh->td,1,xd) != 1) return exdrDOUBLE; sh->tf = sh->td; if (xdrfile_read_double(&sh->lambdad,1,xd) != 1) return exdrDOUBLE; sh->lambdaf = sh->lambdad; } else { if (xdrfile_read_float(&sh->tf,1,xd) != 1) return exdrFLOAT; sh->td = sh->tf; if (xdrfile_read_float(&sh->lambdaf,1,xd) != 1) return exdrFLOAT; sh->lambdad = sh->lambdaf; } return exdrOK; }