1 /*
2    get.h -- Prototypes for `get.c'.
3 
4    Copyright (C) 1994-95  K. Scott Hunziker.
5    Copyright (C) 1990-94  The Boeing Company.
6 
7    See the file COPYING for license, warranty, and permission details.
8  */
9 
10 /* $Id: get.h,v 1.1.1.1 1996/04/17 05:56:18 ksh Exp $ */
11 
12 #ifndef GET_H
13 #define GET_H	1
14 
15 #include "entity.h"
16 
17 #if BINARY_FORMAT == IEEE_LITTLE_ENDIAN
18 
19 #define READ_INTS( ptr, n, s ) \
20   ( errno = 0, \
21     ( fread_int_reverse( (char *) (ptr), n, s ) < (n) ) ? \
22          ( READ_WARN( s ), 0 ) : 1 )
23 
24 #define READ_DOUBLES( ptr, n, s ) \
25   ( errno = 0, \
26     ( fread_double_reverse( (char *) (ptr), n, s ) < (n) ) ? \
27          ( READ_WARN( s ), 0 ) : 1 )
28 
29 #elif BINARY_FORMAT == CRAY_FLOAT
30 
31 #define READ_INTS( ptr, n, s ) \
32   ( errno = 0, \
33     ( fread_int_cray( (char *) (ptr), n, s ) < (n) ) ? \
34          ( READ_WARN( s ), 0 ) : 1 )
35 
36 #define READ_DOUBLES( ptr, n, s ) \
37   ( errno = 0, \
38     ( fread_double_cray( (char *) (ptr), n, s ) < (n) ) ? \
39          ( READ_WARN( s ), 0 ) : 1 )
40 
41 extern size_t PROTO (fread_int_cray,
42 		       (char *ptr, size_t n, FILE * stream));
43 extern size_t PROTO (fread_double_cray,
44 		       (char *ptr, size_t n, FILE * stream));
45 extern size_t PROTO (fread_int_cray_reverse,
46 		       (char *ptr, size_t n, FILE * stream));
47 extern size_t PROTO (fread_double_cray_reverse,
48 		       (char *ptr, size_t n, FILE * stream));
49 
50 #else
51 
52 #define READ_INTS( ptr, n, s ) \
53   ( errno = 0, \
54     ( fread( ptr, 4, n, s ) < (n) ) ? \
55          ( READ_WARN( s ), 0 ) : 1 )
56 
57 #define READ_DOUBLES( ptr, n, s ) \
58   ( errno = 0, \
59     ( fread( ptr, 8, n, s ) < (n) ) ? \
60          ( READ_WARN( s ), 0 ) : 1 )
61 
62 #endif
63 
64 #define READ_INT( ptr, s )	READ_INTS( ptr, 1, s )
65 #define READ_DOUBLE( ptr, s )	READ_DOUBLES( ptr, 1, s )
66 
67 extern ENTITY *PROTO (bi_get, (int n, ENTITY * fname));
68 extern ENTITY *PROTO (get_entity, (FILE * stream));
69 
70 extern size_t PROTO (fread_int,
71 		       (char *ptr, size_t n, FILE * stream));
72 extern size_t PROTO (fread_double,
73 		       (char *ptr, size_t n, FILE * stream));
74 extern size_t PROTO (fread_int_reverse,
75 		       (char *ptr, size_t n, FILE * stream));
76 extern size_t PROTO (fread_double_reverse,
77 		       (char *ptr, size_t n, FILE * stream));
78 
79 #endif /* GET_H */
80