4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
12 * Copyright (c) 1991-2001
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License
18 * as published by the Free Software Foundation; either version 2
19 * of the License, or (at your option) any later version.
21 * If you want to redistribute modifications, please consider that
22 * scientific software is very special. Version control is crucial -
23 * bugs must be traceable. We will be happy to consider code for
24 * inclusion in the official distribution, but derived work must not
25 * be called official GROMACS. Details are found in the README & COPYING
26 * files - if they are missing, get the official version at www.gromacs.org.
28 * To help us fund GROMACS development, we humbly ask that you cite
29 * the papers on the package - you can find them in the top README file.
31 * Do check out http://www.gromacs.org , or mail us at gromacs@gromacs.org .
34 * Good ROcking Metal Altar for Chronical Sinners
40 static char *SRCID_binio_h = "$Id$";
46 #ident "@(#) binio.h 1.5 11/23/92"
47 #endif /* HAVE_IDENT */
54 * Module to binary write and read.
59 * @ @ @ @@@ @@ @@@ @@ @@ @@@ @@ @@ @@ @@
60 * @ @ @ @ @ @@ @ @@ @ @ @@ @ @ @@
61 * @ @ @ @ @ @ @ @ @ @ @ @ @
62 * @@ @@ @@@@@ @ @ @ @ @ @ @ @
63 * @ @ @ @ @ @ @ @ @ @ @ @
64 * @ @ @ @@ @ @ @ @ @ @ @ @@
65 * @ @ @@@ @@ @@@@ @@@ @@@ @@@@@ @@@ @@@ @@ @
70 * Use this module only to write and read simple types or array(s)
71 * of simple types. STRUCTURES ARE DEFINITELY NOT ALLOWED.
74 #define nblockwrite(fp,nelem,data) \
75 _blockwrite(fp,nelem,sizeof(*data),(data),#data,__FILE__,__LINE__)
76 #define blockwrite(fp,data) \
77 _blockwrite(fp,1,sizeof(data),&(data),#data,__FILE__,__LINE__)
78 #define cblockwrite(fp,ptr,nchars) \
79 _blockwrite(fp,1,(nchars),(ptr),#ptr,__FILE__,__LINE__)
80 #define nblockread(fp,nelem,data) \
81 _blockread(fp,nelem,sizeof(*data),(data),#data,__FILE__,__LINE__)
82 #define blockread(fp,data) \
83 _blockread(fp,1,sizeof(data),&(data),#data,__FILE__,__LINE__)
84 #define cblockread(fp,ptr,nchars) \
85 _blockread(fp,1,(nchars),(ptr),#ptr,__FILE__,__LINE__)
87 #define patch(fp,fpos,write) \
93 if ((result=fseek(fp,fpos,SEEK_SET))!=0) \
94 fatal_error(errno,"could not seek to position %d from file %s, " \
95 "line %d, result=%d",(fpos),__FILE__,__LINE__,result); \
97 if ((result=fseek(fp,fhere,SEEK_SET))!=0) \
98 fatal_error(errno,"could not seek back to %d from file %s, line %d," \
99 " result=%d",fhere,__FILE__,__LINE__,result); \
103 extern void _blockwrite(FILE *fp,int nelem,int size,void *data,
104 char *what,char *file,int line);
106 extern void _blockread(FILE *fp,int nelem,int size,void *data,
107 char *what,char *file,int line);
109 #endif /* _binio_h */