00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 #ifndef __CIFINT_H_
00049 #define __CIFINT_H_
00050
00051 #ifndef __STDC__
00052 # define const
00053 #endif
00054
00055 #define IO_ERROR { \
00056 if (feof(fd)) return (CIF_BADFORM); \
00057 else return (CIF_SYSERR); \
00058 }
00059
00060
00061 #define NO 0
00062 #define YES 1
00063
00064
00065 #define NOT_A_CIF 0
00066 #define ASCII_CIF 1
00067 #define BINARY_CIF 2
00068
00069
00070
00071
00072
00073
00074 #define ASCII_CIF_FORMAT 0
00075 #define BINARY_CIF_FORMAT 1
00076
00077
00078
00079 #define CIF_FT_SIZE 10
00080 #define CIF_BUFSIZE 8192
00081 #define SEPARATOR '\036'
00082 #define BINARY_HDR_LEN 7
00083
00084
00085 #define CO_ATTR_IMPTYPE 0x01
00086 #define CO_ATTR_CHAR 0x02
00087 #define CO_ATTR_DIM 0x04
00088 #define CO_ATTR_SAVE 0x08
00089 #define CO_ATTR_DATA 0x10
00090 #define CO_ATTR_EQUIV 0x20
00091 #define CO_ATTR_AUTO 0x40
00092 #define CO_ATTR_PE_RESIDENT 0x80
00093 #define CO_ATTR_POINTEE 0x100
00094 #define CO_ATTR_ARRAY_DEC 0x200
00095 #define CO_ATTR_GEOM_DEC 0x400
00096
00097
00098 #define F90_CO_ATTR_IMPTYPE 0x01
00099 #define F90_CO_ATTR_POINTEE 0x02
00100 #define F90_CO_ATTR_DEF_TYPE 0x04
00101 #define F90_CO_ATTR_STAR_TYPE 0x08
00102 #define F90_CO_ATTR_KIND_TYPE 0x10
00103
00104 #define F90_CO_ATTR_SAVE 0x20
00105 #define F90_CO_ATTR_DATA 0x40
00106 #define F90_CO_ATTR_EQUIV 0x80
00107
00108 #define F90_CO_ATTR_ARRAY_DEC 0x100
00109 #define F90_CO_ATTR_GEOM_DEC 0x200
00110 #define F90_CO_ATTR_PE_RESIDENT 0x400
00111
00112 #define F90_CO_ATTR_ALLOCATABLE 0x800
00113 #define F90_CO_ATTR_INTENTIN 0x1000
00114 #define F90_CO_ATTR_INTENTOUT 0x2000
00115 #define F90_CO_ATTR_INTENTINOUT 0x4000
00116 #define F90_CO_ATTR_OPTIONAL 0x8000
00117 #define F90_CO_ATTR_POINTER 0x10000
00118 #define F90_CO_ATTR_PRIVATE 0x20000
00119 #define F90_CO_ATTR_TARGET 0x40000
00120 #define F90_CO_ATTR_LOCAL_NAME 0x80000
00121
00122
00123 #define SC_ATTR_IMPNONE 0x01
00124 #define SC_ATTR_IO 0x02
00125 #define SC_ATTR_CALL 0x04
00126 #define SC_ATTR_CMIC 0x08
00127
00128
00129 #define EN_ATTR_IMPTYPE 0x01
00130 #define EN_ATTR_CHAR 0x02
00131 #define EN_ATTR_DIM 0x04
00132 #define EN_ATTR_INTRIN 0x08
00133 #define EN_ATTR_EXTERN 0x10
00134 #define EN_ATTR_STMTF 0x20
00135 #define EN_ATTR_RECUR 0x40
00136
00137
00138
00139 #define F90_EN_ATTR_DEFINED 0x01
00140 #define F90_EN_ATTR_INT_BLOCK 0x02
00141 #define F90_EN_ATTR_ALT_ENTRY 0x04
00142 #define F90_EN_ATTR_USE 0x04
00143 #define F90_EN_ATTR_REFERENCED 0x08
00144 #define F90_EN_ATTR_OPTIONAL 0x10
00145 #define F90_EN_ATTR_PRIVATE 0x20
00146 #define F90_EN_ATTR_RECUR 0x40
00147
00148
00149 #define CIF_MEM_BUMP 50
00150 struct _Cif_Mem_Area {
00151 short used;
00152 int nme;
00153 int mused;
00154 int msize;
00155 char *mbp;
00156 };
00157 #ifdef DEFGLOBAL
00158 int _Cif_memasize;
00159 struct _Cif_Mem_Area *_Cif_memarea;
00160 #else
00161 extern int _Cif_memasize;
00162 extern struct _Cif_Mem_Area *_Cif_memarea;
00163 #endif
00164
00165
00166 struct _Cif_File_Tbl {
00167 short form;
00168 short ifull;
00169 short seek;
00170 short mode;
00171 int fme;
00172 int lme;
00173 char rmask[CIF_MAXRECORD];
00174 FILE *fd;
00175 char *ip;
00176 char optype;
00177 int lang;
00178 int version;
00179 int return_version;
00180 int srcfid;
00181 char *filename;
00182 int tmp_cif;
00183
00184 };
00185
00186 #ifdef DEFGLOBAL
00187 struct _Cif_File_Tbl _Cif_filetbl [CIF_FT_SIZE];
00188 #else
00189 extern struct _Cif_File_Tbl _Cif_filetbl [CIF_FT_SIZE];
00190 #endif
00191
00192 #if CIF_VERSION != 1
00193
00194
00195
00196
00197
00198
00199 extern struct Cif_generic *_cif_map_buffer;
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209 extern int _cif_version;
00210 #endif
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220 extern const short _Cif_structsize[CIF_MAXRECORD][_CIF_INT_VERSION + 1];
00221 extern const short _Cif_shortsize[CIF_MAXRECORD][_CIF_INT_VERSION + 1];
00222
00223
00224
00225
00226
00227
00228 extern const int _Cif_f90_to_f77_dtypes[];
00229
00230
00231 int _Cif_binary_map_version (int rtype, struct Cif_generic *map_buffer, struct Cif_generic *cr);
00232 extern int _Cif_Open (char *, char *, int *, int);
00233 extern int Cif_Open_V2 (char *filename, char *optype, int *rtypes, int version);
00234 extern int _Cif_binread (int, int, struct Cif_generic *, FILE *);
00235 extern int _Cif_mementry (unsigned int);
00236 extern int _Cif_memtbl ();
00237 extern char * (*_Cif_space[])();
00238
00239 #endif