From: Teemu Murtola Date: Tue, 30 Jun 2015 04:09:58 +0000 (+0300) Subject: Clean up unused code from gmxfio X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=f59b8428e300526ece9244ed1c115037275a381b;p=alexxy%2Fgromacs.git Clean up unused code from gmxfio - gmx_fio_do_*() are only used for writing xdr-based formats, so remove other implementations (has been unused since support for .tpa and .tpb formats was removed). Further decoupling should be possible, but left for later to keep this change smaller. - gmx_fio_read/write_*() were not used with the exception of gmx_fio_write_string(), so removed. gmx_fio_do_*() should be sufficient. - Remove USE_XDR, as it is not feasible to turn off xdr support from these few files alone. There are several file formats (most notably, run input files and checkpoints) that can only be written in xdr, and functionality is severely limited without those. - Remove unused (and mistyped) HAVE_XML #ifdefs. It's not feasible to inject XML support at this level... - Move confusingly placed check for not opening .tng files with gmxfio. - Removed unnecessary checks for debug files (debug files are no longer opened with gmx_fio_fopen()). - Remove a few other fields, enum members, and methods that had no effect. - Rename gmxfio_int.h to gmxfio-impl.h to make its role clearer and to make it follow the current naming conventions. - Remove unnecessary #includes. Change-Id: Ida39a076969da116c9a5f68d7bfd0355c2d2363b --- diff --git a/src/gromacs/fileio/filenm.c b/src/gromacs/fileio/filenm.c index 782424df60..99f2a7da65 100644 --- a/src/gromacs/fileio/filenm.c +++ b/src/gromacs/fileio/filenm.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,18 +48,13 @@ #include "gromacs/utility/fatalerror.h" #include "gromacs/utility/smalloc.h" -/* XDR should be available on all platforms now, - * but we keep the possibility of turning it off... - */ -#define USE_XDR - /* Use bitflag ... */ #define IS_SET(fn) ((fn.flag & ffSET) != 0) #define IS_OPT(fn) ((fn.flag & ffOPT) != 0) enum { - eftASC, eftBIN, eftXDR, eftTNG, eftGEN, eftNR + eftASC, eftXDR, eftTNG, eftGEN, eftNR }; /* To support multiple file types with one general (eg TRX) we have @@ -67,36 +62,28 @@ enum */ static const int trxs[] = { -#ifdef USE_XDR efXTC, efTRR, efCPT, -#endif efGRO, efG96, efPDB, efTNG }; #define NTRXS asize(trxs) static const int trcompressed[] = { -#ifdef USE_XDR efXTC, -#endif efTNG }; #define NTRCOMPRESSED asize(trcompressed) static const int tros[] = { -#ifdef USE_XDR efXTC, efTRR, -#endif efGRO, efG96, efPDB, efTNG }; #define NTROS asize(tros) static const int trns[] = { -#ifdef USE_XDR efTRR, efCPT, -#endif efTNG }; #define NTRNS asize(trns) @@ -107,18 +94,14 @@ static const int stos[] = static const int stxs[] = { - efGRO, efG96, efPDB, efBRK, efENT, efESP -#ifdef USE_XDR - , efTPR -#endif + efGRO, efG96, efPDB, efBRK, efENT, efESP, + efTPR }; #define NSTXS asize(stxs) static const int tpss[] = { -#ifdef USE_XDR efTPR, -#endif efGRO, efG96, efPDB, efBRK, efENT }; #define NTPSS asize(tpss) @@ -284,8 +267,6 @@ const char *ftp2ftype(int ftp) { case eftASC: return "ASCII"; - case eftBIN: - return "Binary"; case eftXDR: return "XDR portable"; case eftTNG: diff --git a/src/gromacs/fileio/gmxfio_int.h b/src/gromacs/fileio/gmxfio-impl.h similarity index 81% rename from src/gromacs/fileio/gmxfio_int.h rename to src/gromacs/fileio/gmxfio-impl.h index e7010b15f3..486f0e0e8a 100644 --- a/src/gromacs/fileio/gmxfio_int.h +++ b/src/gromacs/fileio/gmxfio-impl.h @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -34,8 +34,12 @@ * To help us fund GROMACS development, we humbly ask that you cite * the research papers on the package. Check out http://www.gromacs.org. */ -#ifndef GMX_FILEIO_GMXFIO_INT_H -#define GMX_FILEIO_GMXFIO_INT_H +/*! \internal \file + * \brief + * Internal definitions shared by gmxfio*.c files. + */ +#ifndef GMX_FILEIO_GMXFIO_IMPL_H +#define GMX_FILEIO_GMXFIO_IMPL_H /* This is the new improved and thread safe version of gmxfio. */ @@ -50,32 +54,24 @@ WARNING WARNING WARNING WARNING */ - -/* XDR should be available on all platforms now, - * but we keep the possibility of turning it off... - */ -#define USE_XDR - #include "thread_mpi/lock.h" #include "gromacs/fileio/xdrf.h" -/* the reader/writer functions for t_iotype */ +/** the reader function for t_iotype */ typedef gmx_bool read_func (t_fileio *fio, void *item, int nitem, int eio, const char *desc, const char *srcfile, int line); +/** the writer function for t_iotype */ typedef gmx_bool write_func (t_fileio *fio, const void *item, int nitem, int eio, const char *desc, const char *srcfile, int line); -/* these are pointers to the actual reading & writing functions */ typedef struct { read_func *nread; write_func *nwrite; } t_iotype; - - struct t_fileio { FILE *fp; /* the file pointer */ @@ -84,15 +80,12 @@ struct t_fileio bRead, /* the file is open for reading */ bDouble, /* write doubles instead of floats */ bDebug, /* the file ops should come with debug info */ - bStdio, /* the file is actually stdin or stdout */ bReadWrite; /* the file is open for reading and writing */ char *fn; /* the file name */ XDR *xdr; /* the xdr data pointer */ enum xdr_op xdrmode; /* the xdr mode */ int iFTP; /* the file type identifier */ - const char *comment; /* a comment string for debugging */ - t_fileio *next, *prev; /* next and previous file pointers in the linked list */ tMPI_Lock_t mtx; /* content locking mutex. This is a fast lock @@ -101,30 +94,22 @@ struct t_fileio a lock */ }; - - -extern const t_iotype asc_iotype; -extern const t_iotype bin_iotype; +/** handlers for XDR read/write */ extern const t_iotype xdr_iotype; -extern const t_iotype dummy_iotype; +/** Names for different items that can be read/written with gmx_fio_do_*() */ extern const char *eioNames[eioNR]; - - -#define GMX_FIO_BUFLEN 256 - -/* make a debug string if that is requested in the fio */ -const char *gmx_fio_dbgstr(t_fileio *fio, const char *desc, char *buf); -/* check the number of items against the allowed number of items */ +/** check the number of items against the allowed number of items */ void gmx_fio_check_nitem(int eio, int nitem, const char *file, int line); -/* check the output type against allowed values */ +/** check the output type against allowed values */ void gmx_fio_fe(t_fileio *fio, int eio, const char *desc, const char *srcfile, int line); -/* lock/unlock the mutex associated with a fio */ +/** lock the mutex associated with a fio */ void gmx_fio_lock(t_fileio *fio); +/** unlock the mutex associated with a fio */ void gmx_fio_unlock(t_fileio *fio); #endif diff --git a/src/gromacs/fileio/gmxfio.c b/src/gromacs/fileio/gmxfio.c index dc204ec697..4f3d01dfde 100644 --- a/src/gromacs/fileio/gmxfio.c +++ b/src/gromacs/fileio/gmxfio.c @@ -54,13 +54,13 @@ #include "thread_mpi/threads.h" #include "gromacs/fileio/filenm.h" -#include "gromacs/fileio/gmxfio_int.h" #include "gromacs/fileio/md5.h" #include "gromacs/legacyheaders/macros.h" #include "gromacs/utility/fatalerror.h" #include "gromacs/utility/futil.h" #include "gromacs/utility/smalloc.h" -#include "gromacs/utility/snprintf.h" + +#include "gmxfio-impl.h" /* This is the new improved and thread safe version of gmxfio. */ @@ -86,14 +86,6 @@ static tMPI_Thread_mutex_t open_file_mutex = TMPI_THREAD_MUTEX_INITIALIZER; /* These simple lists define the I/O type for these files */ static const int ftpXDR[] = { efTPR, efTRR, efEDR, efXTC, efTNG, efMTX, efCPT }; -static const int ftpASC[] = -{ efGRO, efPDB, efG96 }; -static const int ftpBIN[] = -{ efTNG }; -#ifdef HAVE_XML -static const int ftpXML[] = -{ efXML}; -#endif const char *eioNames[eioNR] = { @@ -101,6 +93,30 @@ const char *eioNames[eioNR] = "IVEC", "STRING" }; + +static gmx_bool do_dummyread(t_fileio *fio, void *item, int nitem, int eio, + const char *desc, const char *srcfile, int line); +static gmx_bool do_dummywrite(t_fileio *fio, const void *item, int nitem, int eio, + const char *desc, const char *srcfile, int line); + +const t_iotype dummy_iotype = {do_dummyread, do_dummywrite}; + +static gmx_bool do_dummyread( + t_fileio gmx_unused *fio, void gmx_unused *item, int gmx_unused nitem, int gmx_unused eio, + const char gmx_unused *desc, const char gmx_unused *srcfile, int gmx_unused line) +{ + gmx_fatal(FARGS, "File type not set!"); + return FALSE; +} + +static gmx_bool do_dummywrite( + t_fileio gmx_unused *fio, const void gmx_unused *item, int gmx_unused nitem, int gmx_unused eio, + const char gmx_unused *desc, const char gmx_unused *srcfile, int gmx_unused line) +{ + gmx_fatal(FARGS, "File type not set!"); + return FALSE; +} + /****************************************************************** * * Internal functions: @@ -142,33 +158,6 @@ static gmx_bool in_ftpset(int ftp, int nset, const int set[]) } - -extern void gmx_fio_set_comment(t_fileio *fio, const char *comment) -{ - fio->comment = comment; -} - -extern void gmx_fio_unset_comment(t_fileio *fio) -{ - fio->comment = NULL; -} - - -const char *gmx_fio_dbgstr(t_fileio *fio, const char *desc, char *buf) -{ - if (!fio->bDebug) - { - /* set to empty string */ - buf[0] = 0; - } - else - { - snprintf(buf, GMX_FIO_BUFLEN, " ; %s %s", fio->comment ? fio->comment : "", desc); - } - return buf; -} - - /* check the number of items given against the type */ void gmx_fio_check_nitem(int eio, int nitem, const char *file, int line) { @@ -199,26 +188,8 @@ static void gmx_fio_set_iotype(t_fileio *fio) { if (in_ftpset(fio->iFTP, asize(ftpXDR), ftpXDR)) { -#ifdef USE_XDR fio->iotp = &xdr_iotype; -#else - gmx_fatal(FARGS, "Sorry, no XDR"); -#endif - } - else if (in_ftpset(fio->iFTP, asize(ftpASC), ftpASC)) - { - fio->iotp = &asc_iotype; } - else if (in_ftpset(fio->iFTP, asize(ftpBIN), ftpBIN)) - { - fio->iotp = &bin_iotype; - } -#ifdef HAVE_XMl - else if (in_ftpset(fio->iFTP, asize(ftpXML), ftpXML)) - { - fio->iotp = &dummy_iotype; - } -#endif else { fio->iotp = &dummy_iotype; @@ -451,9 +422,12 @@ t_fileio *gmx_fio_open(const char *fn, const char *mode) fio->xdr = NULL; if (fn) { + if (fn2ftp(fn) == efTNG) + { + gmx_incons("gmx_fio_open may not be used to open TNG files"); + } fio->iFTP = fn2ftp(fn); fio->fn = gmx_strdup(fn); - fio->bStdio = FALSE; /* If this file type is in the list of XDR files, open it like that */ if (in_ftpset(fio->iFTP, asize(ftpXDR), ftpXDR)) @@ -476,10 +450,6 @@ t_fileio *gmx_fio_open(const char *fn, const char *mode) gmx_open(fn); } } - if (fn2ftp(fn) == efTNG) - { - gmx_incons("gmx_fio_open may not be used to open TNG files"); - } /* Open the file */ fio->fp = gmx_ffopen(fn, newmode); @@ -538,8 +508,7 @@ static int gmx_fio_close_locked(t_fileio *fio) sfree(fio->xdr); } - /* Don't close stdin and stdout! */ - if (!fio->bStdio && fio->fp != NULL) + if (fio->fp != NULL) { rc = gmx_ffclose(fio->fp); /* fclose returns 0 if happy */ @@ -580,7 +549,7 @@ int gmx_fio_fp_close(t_fileio *fio) { int rc = 0; gmx_fio_lock(fio); - if (!in_ftpset(fio->iFTP, asize(ftpXDR), ftpXDR) && !fio->bStdio) + if (!in_ftpset(fio->iFTP, asize(ftpXDR), ftpXDR)) { rc = gmx_ffclose(fio->fp); /* fclose returns 0 if happy */ fio->fp = NULL; @@ -781,12 +750,7 @@ int gmx_fio_get_output_file_positions(gmx_file_position_t **p_outputfiles, { /* Skip the checkpoint files themselves, since they could be open when we call this routine... */ - /* also skip debug files (shoud be the only iFTP==efNR) */ - if (cur->bOpen && - !cur->bRead && - !cur->bStdio && - cur->iFTP != efCPT && - cur->iFTP != efNR) + if (cur->bOpen && !cur->bRead && cur->iFTP != efCPT) { int ret; /* This is an output file currently open for writing, add it */ @@ -824,20 +788,6 @@ void gmx_fio_checktype(t_fileio *fio) { return; } - else if (in_ftpset(fio->iFTP, asize(ftpASC), ftpASC)) - { - return; - } - else if (in_ftpset(fio->iFTP, asize(ftpBIN), ftpBIN)) - { - return; - } -#ifdef HAVE_XMl - else if (in_ftpset(fio->iFTP, asize(ftpXML), ftpXML)) - { - return; - } -#endif else { gmx_fatal(FARGS, "Can not read/write topologies to file type %s", @@ -854,17 +804,6 @@ void gmx_fio_setprecision(t_fileio *fio, gmx_bool bDouble) gmx_fio_unlock(fio); } -gmx_bool gmx_fio_getdebug(t_fileio *fio) -{ - gmx_bool ret; - - gmx_fio_lock(fio); - ret = fio->bDebug; - gmx_fio_unlock(fio); - - return ret; -} - void gmx_fio_setdebug(t_fileio *fio, gmx_bool bDebug) { gmx_fio_lock(fio); @@ -965,11 +904,7 @@ t_fileio *gmx_fio_all_output_fsync(void) cur = gmx_fio_get_first(); while (cur) { - /* skip debug files (shoud be the only iFTP==efNR) */ - if (cur->bOpen && - !cur->bRead && - !cur->bStdio && - cur->iFTP != efNR) + if (cur->bOpen && !cur->bRead) { /* if any of them fails, return failure code */ int rc = gmx_fio_int_fsync(cur); @@ -1065,17 +1000,6 @@ gmx_bool gmx_fio_getread(t_fileio* fio) return ret; } -int xtc_seek_frame(t_fileio *fio, int frame, int natoms) -{ - int ret; - - gmx_fio_lock(fio); - ret = xdr_xtc_seek_frame(frame, fio->fp, fio->xdr, natoms); - gmx_fio_unlock(fio); - - return ret; -} - int xtc_seek_time(t_fileio *fio, real time, int natoms, gmx_bool bSeekForwardOnly) { int ret; diff --git a/src/gromacs/fileio/gmxfio.h b/src/gromacs/fileio/gmxfio.h index bc656d2ef9..21116b765d 100644 --- a/src/gromacs/fileio/gmxfio.h +++ b/src/gromacs/fileio/gmxfio.h @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -50,13 +50,6 @@ extern "C" { #endif /* types */ - -/* Enumerated for different items in files */ -enum { - eitemHEADER, eitemIR, eitemBOX, - eitemTOP, eitemX, eitemV, eitemF, eitemNR -}; - /* Enumerated for data types in files */ enum { eioREAL, eioFLOAT, eioDOUBLE, eioINT, eioINT64, @@ -127,9 +120,6 @@ int gmx_fio_getftp(t_fileio *fio); void gmx_fio_setdebug(t_fileio *fio, gmx_bool bDebug); /* Set the debug mode */ -gmx_bool gmx_fio_getdebug(t_fileio *fio); -/* Return whether debug mode is on in fio */ - gmx_bool gmx_fio_getread(t_fileio *fio); /* Return whether read mode is on in fio */ @@ -206,65 +196,14 @@ int gmx_fio_get_file_md5(t_fileio *fio, gmx_off_t offset, unsigned char digest[]); -int xtc_seek_frame(t_fileio *fio, int frame, int natoms); - int xtc_seek_time(t_fileio *fio, real time, int natoms, gmx_bool bSeekForwardOnly); -/* Add this to the comment string for debugging */ -void gmx_fio_set_comment(t_fileio *fio, const char *comment); - -/* Remove previously set comment */ -void gmx_fio_unset_comment(t_fileio *fio); - - - - /******************************************************** * Read and write ********************************************************/ -/* basic reading & writing */ -gmx_bool gmx_fio_reade_real(t_fileio *fio, real *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_float(t_fileio *fio, float *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_double(t_fileio *fio, double *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_int(t_fileio *fio, int *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_int64(t_fileio *fio, gmx_int64_t *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_uchar(t_fileio *fio, unsigned char *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_ushort(t_fileio *fio, unsigned short *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_rvec(t_fileio *fio, rvec *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_ivec(t_fileio *fio, ivec *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_reade_string(t_fileio *fio, char *item, - const char *desc, const char *srcfile, int line); - -gmx_bool gmx_fio_writee_real(t_fileio *fio, real item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_float(t_fileio *fio, float item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_double(t_fileio *fio, double item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_int(t_fileio *fio, int item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_int64(t_fileio *fio, gmx_int64_t item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_uchar(t_fileio *fio, unsigned char item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_ushort(t_fileio *fio, unsigned short item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_rvec(t_fileio *fio, rvec *item, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_writee_ivec(t_fileio *fio, ivec *item, - const char *desc, const char *srcfile, int line); gmx_bool gmx_fio_writee_string(t_fileio *fio, const char *item, const char *desc, const char *srcfile, int line); @@ -292,55 +231,7 @@ gmx_bool gmx_fio_doe_ivec(t_fileio *fio, ivec *item, gmx_bool gmx_fio_doe_string(t_fileio *fio, char *item, const char *desc, const char *srcfile, int line); - - - /* array reading & writing */ -gmx_bool gmx_fio_nreade_real(t_fileio *fio, real *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_float(t_fileio *fio, float *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_double(t_fileio *fio, double *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_int(t_fileio *fio, int *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_int64(t_fileio *fio, gmx_int64_t *item, int n, - const char *desc, const char *srcfile, - int line); -gmx_bool gmx_fio_nreade_uchar(t_fileio *fio, unsigned char *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_ushort(t_fileio *fio, unsigned short *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_rvec(t_fileio *fio, rvec *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_ivec(t_fileio *fio, ivec *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nreade_string(t_fileio *fio, char *item[], int n, - const char *desc, const char *srcfile, int line); - -gmx_bool gmx_fio_nwritee_real(t_fileio *fio, const real *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_float(t_fileio *fio, const float *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_double(t_fileio *fio, const double *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_int(t_fileio *fio, const int *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_int64(t_fileio *fio, - const gmx_int64_t *item, int n, - const char *desc, const char *srcfile, - int line); -gmx_bool gmx_fio_nwritee_uchar(t_fileio *fio, const unsigned char *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_ushort(t_fileio *fio, const unsigned short *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_rvec(t_fileio *fio, const rvec *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_ivec(t_fileio *fio, const ivec *item, int n, - const char *desc, const char *srcfile, int line); -gmx_bool gmx_fio_nwritee_string(t_fileio *fio, const char *item[], int n, - const char *desc, const char *srcfile, int line); - gmx_bool gmx_fio_ndoe_real(t_fileio *fio, real *item, int n, const char *desc, const char *srcfile, int line); gmx_bool gmx_fio_ndoe_float(t_fileio *fio, float *item, int n, @@ -368,26 +259,6 @@ gmx_bool gmx_fio_ndoe_string(t_fileio *fio, char *item[], int n, /* convenience macros */ -#define gmx_fio_read_real(fio, item) gmx_fio_reade_real(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_float(fio, item) gmx_fio_reade_float(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_double(fio, item) gmx_fio_reade_double(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_int(fio, item) gmx_fio_reade_int(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_int64(fio, item) gmx_fio_reade_int64(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_uchar(fio, item) gmx_fio_reade_uchar(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_ushort(fio, item) gmx_fio_reade_ushort(fio, &item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_rvec(fio, item) gmx_fio_reade_rvec(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_ivec(fio, item) gmx_fio_reade_ivec(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_read_string(fio, item) gmx_fio_reade_string(fio, item, (#item), __FILE__, __LINE__) - -#define gmx_fio_write_real(fio, item) gmx_fio_writee_real(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_float(fio, item) gmx_fio_writee_float(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_double(fio, item) gmx_fio_writee_double(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_int(fio, item) gmx_fio_writee_int(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_int64(fio, item) gmx_fio_writee_int64(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_uchar(fio, item) gmx_fio_writee_uchar(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_ushort(fio, item) gmx_fio_writee_ushort(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_rvec(fio, item) gmx_fio_writee_rvec(fio, item, (#item), __FILE__, __LINE__) -#define gmx_fio_write_ivec(fio, item) gmx_fio_writee_ivec(fio, item, (#item), __FILE__, __LINE__) #define gmx_fio_write_string(fio, item) gmx_fio_writee_string(fio, item, (#item), __FILE__, __LINE__) #define gmx_fio_do_real(fio, item) gmx_fio_doe_real(fio, &item, (#item), __FILE__, __LINE__) @@ -403,30 +274,6 @@ gmx_bool gmx_fio_ndoe_string(t_fileio *fio, char *item[], int n, #define gmx_fio_do_string(fio, item) gmx_fio_doe_string(fio, item, (#item), __FILE__, __LINE__) - - -#define gmx_fio_nread_real(fio, item, n) gmx_fio_nreade_real(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_float(fio, item, n) gmx_fio_nreade_float(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_double(fio, item, n) gmx_fio_nreade_double(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_int(fio, item, n) gmx_fio_nreade_int(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_int64(fio, item, n) gmx_fio_nreade_int64(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_uchar(fio, item, n) gmx_fio_nreade_uchar(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_ushort(fio, item, n) gmx_fio_nreade_ushort(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_rvec(fio, item, n) gmx_fio_nreade_rvec(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_ivec(fio, item, n) gmx_fio_nreade_ivec(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nread_string(fio, item, n) gmx_fio_nreade_string(fio, item, n, (#item), __FILE__, __LINE__) - -#define gmx_fio_nwrite_real(fio, item, n) gmx_fio_nwritee_real(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_float(fio, item, n) gmx_fio_nwritee_float(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_double(fio, item, n) gmx_fio_nwritee_double(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_int(fio, item, n) gmx_fio_nwritee_int(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_int64(fio, item, n) gmx_fio_nwritee_int64(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_uchar(fio, item, n) gmx_fio_nwritee_uchar(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_ushort(fio, item, n) gmx_fio_nwritee_ushort(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_rvec(fio, item, n) gmx_fio_nwritee_rvec(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_ivec(fio, item, n) gmx_fio_nwritee_ivec(fio, item, n, (#item), __FILE__, __LINE__) -#define gmx_fio_nwrite_string(fio, item, n) gmx_fio_nwritee_string(fio, item, n, (#item), __FILE__, __LINE__) - #define gmx_fio_ndo_real(fio, item, n) gmx_fio_ndoe_real(fio, item, n, (#item), __FILE__, __LINE__) #define gmx_fio_ndo_float(fio, item, n) gmx_fio_ndoe_float(fio, item, n, (#item), __FILE__, __LINE__) #define gmx_fio_ndo_double(fio, item, n) gmx_fio_ndoe_double(fio, item, n, (#item), __FILE__, __LINE__) diff --git a/src/gromacs/fileio/gmxfio_asc.c b/src/gromacs/fileio/gmxfio_asc.c deleted file mode 100644 index a451b0c072..0000000000 --- a/src/gromacs/fileio/gmxfio_asc.c +++ /dev/null @@ -1,408 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 1991-2000, University of Groningen, The Netherlands. - * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -#include "gmxpre.h" - -#include "config.h" - -#include -#include -#include -#include -#include - -#ifdef HAVE_IO_H -#include -#endif - -#include "gromacs/fileio/filenm.h" -#include "gromacs/fileio/gmxfio.h" -#include "gromacs/fileio/gmxfio_int.h" -#include "gromacs/fileio/md5.h" -#include "gromacs/legacyheaders/macros.h" -#include "gromacs/utility/cstringutil.h" -#include "gromacs/utility/fatalerror.h" -#include "gromacs/utility/futil.h" -#include "gromacs/utility/smalloc.h" - - -/* This is the part that reads dummy and ascii files. */ - - - - -/* file type functions */ -static gmx_bool do_ascread(t_fileio *fio, void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line); -static gmx_bool do_ascwrite(t_fileio *fio, const void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line); -static gmx_bool do_dummyread(t_fileio *fio, void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line); -static gmx_bool do_dummywrite(t_fileio *fio, const void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line); - - -const t_iotype asc_iotype = {do_ascread, do_ascwrite}; -const t_iotype dummy_iotype = {do_dummyread, do_dummywrite}; - - - - - - -static gmx_bool do_dummyread(t_fileio gmx_unused *fio, void gmx_unused *item, int gmx_unused nitem, int gmx_unused eio, - const char gmx_unused *desc, const char gmx_unused *srcfile, int gmx_unused line) -{ - gmx_fatal(FARGS, "File type not set!"); - return FALSE; -} - -static gmx_bool do_dummywrite(t_fileio gmx_unused *fio, const void gmx_unused *item, int gmx_unused nitem, int gmx_unused eio, - const char gmx_unused *desc, const char gmx_unused *srcfile, int gmx_unused line) -{ - gmx_fatal(FARGS, "File type not set!"); - return FALSE; -} - - - -static void encode_string(int maxlen, char dst[], const char src[]) -{ - int i; - - for (i = 0; (i < maxlen - 1) && (src[i] != '\0'); i++) - { - if ((src[i] == ' ') || (src[i] == '\t')) - { - dst[i] = '_'; - } - else - { - dst[i] = src[i]; - } - } - dst[i] = '\0'; - - if (i == maxlen) - { - fprintf(stderr, "String '%s' truncated to '%s'\n", src, dst); - } -} - -static void decode_string(int maxlen, char dst[], const char src[]) -{ - int i; - - for (i = 0; (i < maxlen - 1) && (src[i] != '\0'); i++) - { - if (src[i] == '_') - { - dst[i] = ' '; - } - else - { - dst[i] = src[i]; - } - } - dst[i] = '\0'; - - if (i == maxlen) - { - fprintf(stderr, "String '%s' truncated to '%s'\n", src, dst); - } -} - -static gmx_bool do_ascwrite(t_fileio *fio, const void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line) -{ - int i; - int res = 0, *iptr; - real *ptr; - char strbuf[256]; - char buf[GMX_FIO_BUFLEN]; - unsigned char *ucptr; - FILE *fp = fio->fp; - - gmx_fio_check_nitem(eio, nitem, srcfile, line); - switch (eio) - { - case eioREAL: - case eioFLOAT: - case eioDOUBLE: - res = fprintf(fp, "%18.10e%s\n", *((real *) item), - gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioINT: - res = fprintf(fp, "%18d%s\n", *((int *) item), gmx_fio_dbgstr(fio, - desc, - buf)); - break; - case eioINT64: - sprintf(strbuf, "%s%s%s", "%", GMX_PRId64, "\n"); - res = fprintf(fp, strbuf, *((gmx_int64_t *) item), - gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioUCHAR: - res = fprintf(fp, "%4d%s\n", *((unsigned char *) item), - gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioNUCHAR: - ucptr = (unsigned char *) item; - for (i = 0; (i < nitem); i++) - { - res = fprintf(fp, "%4d", (int) ucptr[i]); - } - fprintf(fio->fp, "%s\n", gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioUSHORT: - res = fprintf(fp, "%18d%s\n", *((unsigned short *) item), - gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioRVEC: - ptr = (real *) item; - res = fprintf(fp, "%18.10e%18.10e%18.10e%s\n", ptr[XX], - ptr[YY], ptr[ZZ], gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioNRVEC: - for (i = 0; (i < nitem); i++) - { - ptr = ((rvec *) item)[i]; - res = fprintf(fp, "%18.10e%18.10e%18.10e%s\n", ptr[XX], - ptr[YY], ptr[ZZ], gmx_fio_dbgstr(fio, desc, buf)); - } - break; - case eioIVEC: - iptr = (int *) item; - res = fprintf(fp, "%18d%18d%18d%s\n", iptr[XX], iptr[YY], - iptr[ZZ], gmx_fio_dbgstr(fio, desc, buf)); - break; - case eioSTRING: - encode_string(256, strbuf, (char *) item); - res = fprintf(fp, "%-18s%s\n", strbuf, gmx_fio_dbgstr(fio, desc, buf)); - break; - default: - gmx_fio_fe(fio, eio, desc, srcfile, line); - } - if ((res <= 0) && fio->bDebug) - { - fprintf(stderr, - "Error writing %s %s to file %s (source %s, line %d)\n", - eioNames[eio], desc, fio->fn, srcfile, line); - } - - return (res > 0); -} - - -static char *next_item(FILE *fp, char *buf, int buflen) -{ - int rd; - gmx_bool in_comment = FALSE; - gmx_bool in_token = FALSE; - int i = 0; - /* This routine reads strings from the file fp, strips comment - * and buffers. For thread-safety reasons, It reads through getc() */ - - rd = getc(fp); - if (rd == EOF) - { - gmx_file("End of file"); - } - do - { - if (in_comment) - { - if (rd == '\n') - { - in_comment = FALSE; - } - } - else if (in_token) - { - if (isspace(rd) || rd == ';') - { - break; - } - buf[i++] = (char) rd; - } - else - { - if (!isspace(rd)) - { - if (rd == ';') - { - in_comment = TRUE; - } - else - { - in_token = TRUE; - buf[i++] = (char) (rd); - } - } - } - if (i >= buflen - 2) - { - break; - } - } - while ((rd = getc(fp)) != EOF); - - fprintf(stderr, "WARNING, ftpASC file type not tested!\n"); - - buf[i] = 0; - - return buf; -} - -static gmx_bool do_ascread(t_fileio *fio, void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line) -{ - FILE *fp = fio->fp; - int i, m, res = 0, *iptr, ix; - gmx_int64_t s; - double d, x; - char c; - real *ptr; - unsigned char *ucptr; - char *cptr; -#define NEXT_ITEM_BUF_LEN 128 - char ni_buf[NEXT_ITEM_BUF_LEN]; - - gmx_fio_check_nitem(eio, nitem, srcfile, line); - switch (eio) - { - case eioREAL: - case eioFLOAT: - case eioDOUBLE: - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%lf", &d); - if (item) - { - *((real *) item) = d; - } - break; - case eioINT: - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%d", &i); - if (item) - { - *((int *) item) = i; - } - break; - case eioINT64: - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), - "%"GMX_SCNd64, &s); - if (item) - { - *((gmx_int64_t *) item) = s; - } - break; - case eioUCHAR: - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%c", &c); - if (item) - { - *((unsigned char *) item) = (unsigned char)c; - } - break; - case eioNUCHAR: - ucptr = (unsigned char *) item; - for (i = 0; (i < nitem); i++) - { - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%d", &ix); - if (item) - { - ucptr[i] = ix; - } - } - break; - case eioUSHORT: - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%d", &i); - if (item) - { - *((unsigned short *) item) = i; - } - break; - case eioRVEC: - ptr = (real *) item; - for (m = 0; (m < DIM); m++) - { - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%lf\n", &x); - ptr[m] = x; - } - break; - case eioNRVEC: - assert(item); - for (i = 0; (i < nitem); i++) - { - ptr = ((rvec *) item)[i]; - for (m = 0; (m < DIM); m++) - { - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%lf\n", - &x); - ptr[m] = x; - } - } - break; - case eioIVEC: - iptr = (int *) item; - for (m = 0; (m < DIM); m++) - { - res = sscanf(next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN), "%d\n", &ix); - if (item) - { - iptr[m] = ix; - } - } - break; - case eioSTRING: - cptr = next_item(fp, ni_buf, NEXT_ITEM_BUF_LEN); - if (item) - { - decode_string(strlen(cptr) + 1, (char *) item, cptr); - /* res = sscanf(cptr,"%s",(char *)item);*/ - res = 1; - } - break; - default: - gmx_fio_fe(fio, eio, desc, srcfile, line); - } - - if ((res <= 0) && fio->bDebug) - { - fprintf(stderr, - "Error reading %s %s from file %s (source %s, line %d)\n", - eioNames[eio], desc, fio->fn, srcfile, line); - } - return (res > 0); -} diff --git a/src/gromacs/fileio/gmxfio_bin.c b/src/gromacs/fileio/gmxfio_bin.c deleted file mode 100644 index 9238af5fa1..0000000000 --- a/src/gromacs/fileio/gmxfio_bin.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 1991-2000, University of Groningen, The Netherlands. - * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -#include "gmxpre.h" - -#include "config.h" - -#include -#include -#include - -#ifdef HAVE_IO_H -#include -#endif - -#include "gromacs/fileio/filenm.h" -#include "gromacs/fileio/gmxfio.h" -#include "gromacs/fileio/gmxfio_int.h" -#include "gromacs/fileio/md5.h" -#include "gromacs/legacyheaders/macros.h" -#include "gromacs/utility/futil.h" -#include "gromacs/utility/smalloc.h" - -/* This is the part that reads dummy and ascii files. */ - - -static gmx_bool do_binread(t_fileio *fio, void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line); -static gmx_bool do_binwrite(t_fileio *fio, const void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line); - - -const t_iotype bin_iotype = {do_binread, do_binwrite}; - - -static gmx_bool do_binwrite(t_fileio *fio, const void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line) -{ - size_t size = 0, wsize; - int ssize; - - gmx_fio_check_nitem(eio, nitem, srcfile, line); - switch (eio) - { - case eioREAL: - size = sizeof(real); - break; - case eioFLOAT: - size = sizeof(float); - break; - case eioDOUBLE: - size = sizeof(double); - break; - case eioINT: - size = sizeof(int); - break; - case eioINT64: - size = sizeof(gmx_int64_t); - break; - case eioUCHAR: - size = sizeof(unsigned char); - break; - case eioNUCHAR: - size = sizeof(unsigned char); - break; - case eioUSHORT: - size = sizeof(unsigned short); - break; - case eioRVEC: - size = sizeof(rvec); - break; - case eioNRVEC: - size = sizeof(rvec); - break; - case eioIVEC: - size = sizeof(ivec); - break; - case eioSTRING: - size = ssize = strlen((char *) item) + 1; - do_binwrite(fio, &ssize, 1, eioINT, desc, srcfile, line); - break; - default: - gmx_fio_fe(fio, eio, desc, srcfile, line); - } - - wsize = fwrite(item, size, nitem, fio->fp); - - if ((wsize != nitem) && fio->bDebug) - { - fprintf(stderr, - "Error writing %s %s to file %s (source %s, line %d)\n", - eioNames[eio], desc, fio->fn, srcfile, line); - fprintf(stderr, "written size %u bytes, source size %u bytes\n", - (unsigned int) wsize, (unsigned int) size); - } - return (wsize == nitem); -} - -static gmx_bool do_binread(t_fileio *fio, void *item, int nitem, int eio, - const char *desc, const char *srcfile, int line) -{ - size_t size = 0, rsize; - int ssize; - - gmx_fio_check_nitem(eio, nitem, srcfile, line); - switch (eio) - { - case eioREAL: - if (fio->bDouble) - { - size = sizeof(double); - } - else - { - size = sizeof(float); - } - break; - case eioFLOAT: - size = sizeof(float); - break; - case eioDOUBLE: - size = sizeof(double); - break; - case eioINT: - size = sizeof(int); - break; - case eioINT64: - size = sizeof(gmx_int64_t); - break; - case eioUCHAR: - size = sizeof(unsigned char); - break; - case eioNUCHAR: - size = sizeof(unsigned char); - break; - case eioUSHORT: - size = sizeof(unsigned short); - break; - case eioRVEC: - case eioNRVEC: - if (fio->bDouble) - { - size = sizeof(double) * DIM; - } - else - { - size = sizeof(float) * DIM; - } - break; - case eioIVEC: - size = sizeof(ivec); - break; - case eioSTRING: - do_binread(fio, &ssize, 1, eioINT, desc, srcfile, line); - size = ssize; - break; - default: - gmx_fio_fe(fio, eio, desc, srcfile, line); - } - if (item) - { - rsize = fread(item, size, nitem, fio->fp); - } - else - { - /* Skip over it if we have a NULL pointer here */ - gmx_fseek(fio->fp, (gmx_off_t)(size*nitem), SEEK_CUR); - rsize = nitem; - } - if ((rsize != nitem) && (fio->bDebug)) - { - fprintf(stderr, - "Error reading %s %s from file %s (source %s, line %d)\n", - eioNames[eio], desc, fio->fn, srcfile, line); - } - - return (rsize == nitem); -} diff --git a/src/gromacs/fileio/gmxfio_rw.c b/src/gromacs/fileio/gmxfio_rw.c index bdfa1ec4d8..fbe7c5198d 100644 --- a/src/gromacs/fileio/gmxfio_rw.c +++ b/src/gromacs/fileio/gmxfio_rw.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -36,23 +36,9 @@ */ #include "gmxpre.h" -#include "config.h" - -#include -#include - -#ifdef HAVE_IO_H -#include -#endif - -#include "gromacs/fileio/filenm.h" #include "gromacs/fileio/gmxfio.h" -#include "gromacs/fileio/gmxfio_int.h" -#include "gromacs/fileio/md5.h" -#include "gromacs/legacyheaders/macros.h" -#include "gromacs/utility/futil.h" -#include "gromacs/utility/smalloc.h" +#include "gmxfio-impl.h" /******************************************************************* * @@ -60,202 +46,6 @@ * *******************************************************************/ -gmx_bool gmx_fio_reade_real(t_fileio *fio, real *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioREAL, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_float(t_fileio *fio, float *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioFLOAT, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_reade_double(t_fileio *fio, double *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioDOUBLE, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_int(t_fileio *fio, int *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioINT, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_int64(t_fileio *fio, gmx_int64_t *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioINT64, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_uchar(t_fileio *fio, unsigned char *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioUCHAR, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_reade_ushort(t_fileio *fio, unsigned short *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioUSHORT, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_rvec(t_fileio *fio, rvec *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioRVEC, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_ivec(t_fileio *fio, ivec *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioIVEC, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_reade_string(t_fileio *fio, char *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, 1, eioSTRING, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - - -/* Write */ - -gmx_bool gmx_fio_writee_real(t_fileio *fio, real item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioREAL, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_float(t_fileio *fio, float item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioFLOAT, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_double(t_fileio *fio, double item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioDOUBLE, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_writee_int(t_fileio *fio, int item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioINT, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_int64(t_fileio *fio, gmx_int64_t item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioINT64, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_uchar(t_fileio *fio, unsigned char item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioUCHAR, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_ushort(t_fileio *fio, unsigned short item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, &item, 1, eioUSHORT, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_rvec(t_fileio *fio, rvec *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, item, 1, eioRVEC, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_writee_ivec(t_fileio *fio, ivec *item, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, item, 1, eioIVEC, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - gmx_bool gmx_fio_writee_string(t_fileio *fio, const char *item, const char *desc, const char *srcfile, int line) { @@ -266,10 +56,6 @@ gmx_bool gmx_fio_writee_string(t_fileio *fio, const char *item, return ret; } - - -/* Read/write functions */ - gmx_bool gmx_fio_doe_real(t_fileio *fio, real *item, const char *desc, const char *srcfile, int line) { @@ -464,303 +250,8 @@ gmx_bool gmx_fio_doe_string(t_fileio *fio, char *item, } - - - - - /* Array reading & writing */ -gmx_bool gmx_fio_nreade_real(t_fileio *fio, real *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, &(item[i]), 1, eioREAL, desc, srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_float(t_fileio *fio, float *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, &(item[i]), 1, eioFLOAT, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_nreade_double(t_fileio *fio, double *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, &(item[i]), 1, eioDOUBLE, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_int(t_fileio *fio, int *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, &(item[i]), 1, eioINT, desc, srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_int64(t_fileio *fio, gmx_int64_t *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, &(item[i]), 1, eioINT64, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_nreade_uchar(t_fileio *fio, unsigned char *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, n, eioNUCHAR, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_ushort(t_fileio *fio, unsigned short *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, &(item[i]), 1, eioUSHORT, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_rvec(t_fileio *fio, rvec *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nread(fio, item, n, eioNRVEC, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_ivec(t_fileio *fio, ivec *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, item[i], 1, eioIVEC, desc, srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nreade_string(t_fileio *fio, char *item[], int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nread(fio, item[i], 1, eioSTRING, desc, srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - - - - -/* Array writing */ - -gmx_bool gmx_fio_nwritee_real(t_fileio *fio, const real *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioREAL, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_float(t_fileio *fio, const float *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioFLOAT, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_double(t_fileio *fio, const double *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioDOUBLE, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_int(t_fileio *fio, const int *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioINT, desc, srcfile, - line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_int64(t_fileio *fio, - const gmx_int64_t *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioINT64, - desc, srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_uchar(t_fileio *fio, const unsigned char *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, item, n, eioNUCHAR, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_ushort(t_fileio *fio, const unsigned short *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioUSHORT, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_nwritee_rvec(t_fileio *fio, const rvec *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret; - gmx_fio_lock(fio); - ret = fio->iotp->nwrite(fio, item, n, eioNRVEC, desc, srcfile, line); - gmx_fio_unlock(fio); - return ret; -} - -gmx_bool gmx_fio_nwritee_ivec(t_fileio *fio, const ivec *item, int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioIVEC, desc, - srcfile, line); - } - gmx_fio_unlock(fio); - return ret; -} - - -gmx_bool gmx_fio_nwritee_string(t_fileio *fio, const char *item[], int n, - const char *desc, const char *srcfile, int line) -{ - gmx_bool ret = TRUE; - int i; - gmx_fio_lock(fio); - for (i = 0; i < n; i++) - { - ret = ret && fio->iotp->nwrite(fio, &(item[i]), 1, eioSTRING, desc, srcfile, - line); - } - gmx_fio_unlock(fio); - return ret; -} - - - -/* array read/write functions */ - gmx_bool gmx_fio_ndoe_real(t_fileio *fio, real *item, int n, const char *desc, const char *srcfile, int line) { diff --git a/src/gromacs/fileio/gmxfio_xdr.c b/src/gromacs/fileio/gmxfio_xdr.c index ca1b70d21e..e651c0bc71 100644 --- a/src/gromacs/fileio/gmxfio_xdr.c +++ b/src/gromacs/fileio/gmxfio_xdr.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -36,27 +36,17 @@ */ #include "gmxpre.h" -#include "config.h" - -#include #include #include -#ifdef HAVE_IO_H -#include -#endif - -#include "gromacs/fileio/filenm.h" #include "gromacs/fileio/gmxfio.h" -#include "gromacs/fileio/gmxfio_int.h" -#include "gromacs/fileio/md5.h" -#include "gromacs/legacyheaders/macros.h" +#include "gromacs/fileio/xdrf.h" #include "gromacs/utility/fatalerror.h" -#include "gromacs/utility/futil.h" #include "gromacs/utility/smalloc.h" -/* This is the part that reads xdr files. */ +#include "gmxfio-impl.h" +/* This is the part that reads xdr files. */ /* file type functions */ static gmx_bool do_xdrread(t_fileio *fio, void *item, int nitem, int eio, @@ -68,8 +58,6 @@ static gmx_bool do_xdrwrite(t_fileio *fio, const void *item, int nitem, int eio, const t_iotype xdr_iotype = {do_xdrread, do_xdrwrite}; -#ifdef USE_XDR - static gmx_bool do_xdr(t_fileio *fio, void *item, int nitem, int eio, const char *desc, const char *srcfile, int line) { @@ -331,5 +319,3 @@ static gmx_bool do_xdrwrite(t_fileio *fio, const void *item, int nitem, int eio, void *it = (void*)item; /* ugh.. */ return do_xdr(fio, it, nitem, eio, desc, srcfile, line); } - -#endif diff --git a/src/gromacs/fileio/tpxio.c b/src/gromacs/fileio/tpxio.c index 26aed407ee..085cd5c9af 100644 --- a/src/gromacs/fileio/tpxio.c +++ b/src/gromacs/fileio/tpxio.c @@ -1840,10 +1840,6 @@ void do_iparams(t_fileio *fio, t_functype ftype, t_iparams *iparams, int idum; real rdum; - if (!bRead) - { - gmx_fio_set_comment(fio, interaction_function[ftype].name); - } switch (ftype) { case F_ANGLES: @@ -2160,21 +2156,12 @@ void do_iparams(t_fileio *fio, t_functype ftype, t_iparams *iparams, gmx_fatal(FARGS, "unknown function type %d (%s) in %s line %d", ftype, interaction_function[ftype].name, __FILE__, __LINE__); } - if (!bRead) - { - gmx_fio_unset_comment(fio); - } } -static void do_ilist(t_fileio *fio, t_ilist *ilist, gmx_bool bRead, int file_version, - int ftype) +static void do_ilist(t_fileio *fio, t_ilist *ilist, gmx_bool bRead, int file_version) { int i, k, idum; - if (!bRead) - { - gmx_fio_set_comment(fio, interaction_function[ftype].name); - } if (file_version < 44) { for (i = 0; i < MAXNODES; i++) @@ -2188,10 +2175,6 @@ static void do_ilist(t_fileio *fio, t_ilist *ilist, gmx_bool bRead, int file_ver snew(ilist->iatoms, ilist->nr); } gmx_fio_ndo_int(fio, ilist->iatoms, ilist->nr); - if (!bRead) - { - gmx_fio_unset_comment(fio); - } } static void do_ffparams(t_fileio *fio, gmx_ffparams_t *ffparams, @@ -2316,7 +2299,7 @@ static void do_ilists(t_fileio *fio, t_ilist *ilist, gmx_bool bRead, } else { - do_ilist(fio, &ilist[j], bRead, file_version, j); + do_ilist(fio, &ilist[j], bRead, file_version); if (file_version < 78 && j == F_SETTLE && ilist[j].nr > 0) { add_settle_atoms(&ilist[j]); diff --git a/src/gromacs/fileio/trnio.c b/src/gromacs/fileio/trnio.c index a1d6c8cbd7..f1eadbd5f3 100644 --- a/src/gromacs/fileio/trnio.c +++ b/src/gromacs/fileio/trnio.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -144,31 +144,6 @@ static gmx_bool do_trnheader(t_fileio *fio, gmx_bool bRead, t_trnheader *sh, gmx return *bOK; } -void pr_trnheader(FILE *fp, int indent, char *title, t_trnheader *sh) -{ - if (sh) - { - indent = pr_title(fp, indent, title); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "box_size = %d\n", sh->box_size); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "x_size = %d\n", sh->x_size); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "v_size = %d\n", sh->v_size); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "f_size = %d\n", sh->f_size); - - (void) pr_indent(fp, indent); - (void) fprintf(fp, "natoms = %d\n", sh->natoms); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "step = %d\n", sh->step); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "t = %e\n", sh->t); - (void) pr_indent(fp, indent); - (void) fprintf(fp, "lambda = %e\n", sh->lambda); - } -} - static gmx_bool do_htrn(t_fileio *fio, t_trnheader *sh, rvec *box, rvec *x, rvec *v, rvec *f) { diff --git a/src/gromacs/fileio/trnio.h b/src/gromacs/fileio/trnio.h index 0dcc1e0399..57fb51bd6f 100644 --- a/src/gromacs/fileio/trnio.h +++ b/src/gromacs/fileio/trnio.h @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Copyright (c) 2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -97,14 +97,6 @@ void read_trnheader(const char *fn, t_trnheader *header); /* Read the header of a trn file from fn, and close the file afterwards. */ -void pr_trnheader(FILE *fp, int indent, char *title, t_trnheader *sh); -/* Print the header of a trn file to fp */ - -gmx_bool is_trn(FILE *fp); -/* Return true when the file is a trn file. File will be rewound - * afterwards. - */ - void fwrite_trn(t_fileio *fio, int step, real t, real lambda, rvec *box, int natoms, rvec *x, rvec *v, rvec *f); /* Write a trn frame to file fp, box, x, v, f may be NULL */