NetCDF-Fortran  4.4.2
ncfortran.h
1 /*
2  * This file contains `cfortran.h' definitions that are specific to the
3  * netCDF-3 package.
4  */
5 
6 
7 #ifndef UD_NCFORTRAN_H
8 #define UD_NCFORTRAN_H
9 
10 #include "netcdf_f.h"
11 #include "cfortran.h"
12 #include "nfconfig.inc"
13 
14 /*
15  * The type of a Fortran INTEGER:
16  */
17 #if NF_INT_IS_C_INT
18 # define NF_INTEGER int
19 # define NF_INT INT
20 #elif NF_INT_IS_C_LONG
21 # define NF_INTEGER long
22 # define NF_INT LONG
23 #else
24 # include "NF_INT_IS_C_... not defined"
25 #endif
26 
27 /*
28  * Input, Fortran INTEGER converted to C "int" (helper macro):
29  */
30 #define FINT2CINT_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
31 #define FINT2CINT_cfSEP(T, B) SIMPLE_cfSEP(T,B)
32 #define FINT2CINT_cfN( T,A) const NF_INTEGER *A
33 #define FINT2CINT_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
34 #define FINT2CINT_cfT(M,I,A,B,D) (int)*A
35 
36 
37 /*
38  * Input, Fortran INTEGER converted to C "size_t":
39  */
40 #define FINT2CSIZET_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
41 #define FINT2CSIZET_cfSEP(T, B) SIMPLE_cfSEP(T,B)
42 #define FINT2CSIZET_cfN( T,A) const NF_INTEGER *A
43 #define FINT2CSIZET_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
44 #define FINT2CSIZET_cfT(M,I,A,B,D) (size_t)*A
45 
46 
47 /*
48  * Input/Output, I/O size hint:
49  */
50 #define PCHUNKSIZEHINT_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
51 #define PCHUNKSIZEHINT_cfTYPE NF_INTEGER
52 #define PCHUNKSIZEHINT_cfSTR(N,T,A,B,C,D,E) \
53  _(CFARGS,N)(T,PCHUNKSIZEHINT,A,B,C,D,E)
54 #define PCHUNKSIZEHINT_cfH(S,U,B)
55 #define PCHUNKSIZEHINT_cfQ(B) size_t B;
56 #define PCHUNKSIZEHINT_cfT(M,I,A,B,D) ((void*)(B=*A), &B)
57 #define PCHUNKSIZEHINT_cfR(A,B,D) *A=B;
58 
59 
60 /*
61  * Output, C "int" converted to Fortran INTEGER (helper macro):
62  */
63 #define PCINT2FINT_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
64 #define PCINT2FINT_cfTYPE NF_INTEGER
65 #define PCINT2FINT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PCINT2FINT,A,B,C,D,E)
66 #define PCINT2FINT_cfH(S,U,B)
67 #define PCINT2FINT_cfQ(B) int B;
68 #define PCINT2FINT_cfT(M,I,A,B,D) &B
69 #define PCINT2FINT_cfR(A,B,D) *A=B;
70 
71 
72 /*
73  * Input, Fortran index converted to C index:
74  */
75 #define FNDX2CNDX_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
76 #define FNDX2CNDX_cfSEP(T, B) SIMPLE_cfSEP(T,B)
77 #define FNDX2CNDX_cfN( T,A) const NF_INTEGER *A
78 #define FNDX2CNDX_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
79 #define FNDX2CNDX_cfT(M,I,A,B,D) (*A-1)
80 
81 
82 /*
83  * Output, C index converted to Fortran index:
84  */
85 #define PCNDX2FNDX_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
86 #define PCNDX2FNDX_cfTYPE NF_INTEGER
87 #define PCNDX2FNDX_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PCNDX2FNDX,A,B,C,D,E)
88 #define PCNDX2FNDX_cfH(S,U,B)
89 #define PCNDX2FNDX_cfQ(B) int B;
90 #define PCNDX2FNDX_cfT(M,I,A,B,D) &B
91 #define PCNDX2FNDX_cfR(A,B,D) *A=B+1;
92 
93 
94 /*******************************************************************************
95  * Character buffer:
96  */
97 
98 #define CBUF_cfINT(N,A,B,X,Y,Z) STRING_cfINT(N,A,B,X,Y,Z)
99 #define CBUF_cfSEP(T, B) STRING_cfSEP(T,B)
100 #define CBUF_cfN( T,A) STRING_cfN(T,A)
101 #define CBUF_cfSTR(N,T,A,B,C,D,E) STRING_cfSTR(N,T,A,B,C,D,E)
102 #if defined(vmsFortran)
103 # define CBUF_cfT(M,I,A,B,D) A->dsc$a_pointer
104 #elif defined(CRAYFortran)
105 # define CBUF_cfT(M,I,A,B,D) _fcdtocp(A)
106 #else
107 # define CBUF_cfT(M,I,A,B,D) A
108 #endif
109 
110 
111 /*******************************************************************************
112  * netCDf attributes:
113  */
114 
115 #define TEXTATT STRING
116 #define PTEXTATT PSTRING
117 
118 #define INT1ATT INT1VARV
119 #define PINT1ATT PINT1VARV
120 
121 #define INT2ATT INT2VARV
122 #define PINT2ATT PINT2VARV
123 
124 #define INTATT INTVARV
125 #define PINTATT PINTVARV
126 
127 #define REALATT REALVARV
128 #define PREALATT PREALVARV
129 
130 #define DOUBLEATT DOUBLEVARV
131 #define PDOUBLEATT PDOUBLEVARV
132 
133 
134 /*
135  * Input, attribute ID:
136  */
137 #define ATTID FNDX2CNDX
138 
139 
140 /*
141  * Output, attribute ID:
142  */
143 #define PATTID PCNDX2FNDX
144 
145 
146 /*******************************************************************************
147  * netCDf type:
148  */
149 
150 
151 /*
152  * Input, netCDF type:
153  */
154 #define TYPE_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
155 #define TYPE_cfSEP(T, B) SIMPLE_cfSEP(T,B)
156 #define TYPE_cfN( T,A) NF_INTEGER *A
157 #define TYPE_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
158 #define TYPE_cfT(M,I,A,B,D) ((nc_type)*A)
159 
160 
161 /*
162  * Output, netCDF type:
163  */
164 #define PTYPE_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
165 #define PTYPE_cfTYPE NF_INTEGER
166 #define PTYPE_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PTYPE,A,B,C,D,E)
167 #define PTYPE_cfH(S,U,B)
168 #define PTYPE_cfQ(B) nc_type B;
169 #define PTYPE_cfT(M,I,A,B,D) &B
170 #define PTYPE_cfR(A,B,D) *A=B;
171 
172 
173 /*******************************************************************************
174  * netCDf number-of-<whatever>:
175  */
176 
177 
178 /*
179  * Input, number-of-dimensions:
180  */
181 #define NDIMS_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
182 #define NDIMS_cfSEP(T, B) SIMPLE_cfSEP(T,B)
183 #define NDIMS_cfN( T,A) NF_INTEGER *fndims
184 #define NDIMS_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
185 #define NDIMS_cfT(M,I,A,B,D) ((int)*fndims)
186 
187 
188 /*
189  * Output number-of-dimensions:
190  */
191 #define PNDIMS PCINT2FINT
192 
193 
194 /*
195  * Input number-of-variables:
196  */
197 #define NVARS FINT2CINT
198 
199 
200 /*
201  * Output number-of-variables:
202  */
203 #define PNVARS PNDIMS
204 
205 
206 /*
207  * Input number-of-attributes:
208  */
209 #define NATTS FINT2CINT
210 
211 
212 /*
213  * Output number-of-attributes:
214  */
215 #define PNATTS PNDIMS
216 
217 /*
218  * Output format version number
219  */
220 #define PFORMAT PNDIMS
221 
222 
223 /*******************************************************************************
224  * netCDf variables:
225  */
226 
227 
228 /*
229  * Input, CHARACTER*(*) variable:
230  */
231 #define TEXTVAR STRING
232 
233 
234 /*
235  * Output, CHARACTER*(*) variable:
236  */
237 #define PTEXTVAR PSTRING
238 
239 
240 /*
241  * Input, CHARACTER*(*) variable array:
242  */
243 #define TEXTVARV STRING
244 
245 
246 /*
247  * Output, CHARACTER*(*) variable array:
248  */
249 #define PTEXTVARV PSTRING
250 
251 
252 /*
253  * Input, INTEGER*1 variable:
254  */
255 #define INT1VAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
256 #define INT1VAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
257 #if NF_INT1_IS_C_SIGNED_CHAR
258 # define INT1VAR_cfN( T,A) const signed char *A
259 #elif NF_INT1_IS_C_SHORT
260 # define INT1VAR_cfN( T,A) const short *A
261 #elif NF_INT1_IS_C_INT
262 # define INT1VAR_cfN( T,A) const int *A
263 #elif NF_INT1_IS_C_LONG
264 # define INT1VAR_cfN( T,A) const long *A
265 #endif
266 #define INT1VAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
267 #define INT1VAR_cfT(M,I,A,B,D) A
268 
269 
270 /*
271  * Output, INTEGER*1 variable:
272  */
273 #define PINT1VAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
274 #define PINT1VAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
275 #if NF_INT1_IS_C_SIGNED_CHAR
276 # define PINT1VAR_cfN( T,A) signed char *A
277 #elif NF_INT1_IS_C_SHORT
278 # define PINT1VAR_cfN( T,A) short *A
279 #elif NF_INT1_IS_C_INT
280 # define PINT1VAR_cfN( T,A) int *A
281 #elif NF_INT1_IS_C_LONG
282 # define PINT1VAR_cfN( T,A) long *A
283 #endif
284 #define PINT1VAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
285 #define PINT1VAR_cfT(M,I,A,B,D) A
286 
287 
288 /*
289  * Input, INTEGER*1 variable array:
290  */
291 #define INT1VARV INT1VAR
292 
293 
294 /*
295  * Output, INTEGER*1 variable array:
296  */
297 #define PINT1VARV PINT1VAR
298 
299 
300 /*
301  * Input, INTEGER*2 variable:
302  */
303 #define INT2VAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
304 #define INT2VAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
305 #if NF_INT2_IS_C_SHORT
306 # define INT2VAR_cfN( T,A) const short *A
307 #elif NF_INT2_IS_C_INT
308 # define INT2VAR_cfN( T,A) const int *A
309 #elif NF_INT2_IS_C_LONG
310 # define INT2VAR_cfN( T,A) const long *A
311 #endif
312 #define INT2VAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
313 #define INT2VAR_cfT(M,I,A,B,D) A
314 
315 
316 /*
317  * Output, INTEGER*2 variable:
318  */
319 #define PINT2VAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
320 #define PINT2VAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
321 #if NF_INT2_IS_C_SHORT
322 # define PINT2VAR_cfN( T,A) short *A
323 #elif NF_INT2_IS_C_INT
324 # define PINT2VAR_cfN( T,A) int *A
325 #elif NF_INT2_IS_C_LONG
326 # define PINT2VAR_cfN( T,A) long *A
327 #endif
328 #define PINT2VAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
329 #define PINT2VAR_cfT(M,I,A,B,D) A
330 
331 
332 /*
333  * Input, INTEGER*2 variable array:
334  */
335 #define INT2VARV INT2VAR
336 
337 
338 /*
339  * Output, INTEGER*2 variable array:
340  */
341 #define PINT2VARV PINT2VAR
342 
343 
344 /*
345  * Input, INTEGER variable:
346  */
347 #define INTVAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
348 #define INTVAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
349 #define INTVAR_cfN( T,A) const NF_INTEGER *A
350 #define INTVAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
351 #define INTVAR_cfT(M,I,A,B,D) A
352 
353 
354 /*
355  * Output, INTEGER variable:
356  */
357 #define PINTVAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
358 #define PINTVAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
359 #define PINTVAR_cfN( T,A) NF_INTEGER *A
360 #define PINTVAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
361 #define PINTVAR_cfT(M,I,A,B,D) A
362 
363 
364 /*
365  * Input, INTEGER variable array:
366  */
367 #define INTVARV INTVAR
368 
369 
370 /*
371  * Output, INTEGER variable array:
372  */
373 #define PINTVARV PINTVAR
374 
375 
376 /*
377  * Input, REAL variable:
378  */
379 #define REALVAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
380 #define REALVAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
381 #if NF_REAL_IS_C_DOUBLE
382 # define REALVAR_cfN( T,A) const double *A
383 #else
384 # define REALVAR_cfN( T,A) const float *A
385 #endif
386 #define REALVAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
387 #define REALVAR_cfT(M,I,A,B,D) A
388 
389 
390 /*
391  * Output, REAL variable:
392  */
393 #define PREALVAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
394 #define PREALVAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
395 #if NF_REAL_IS_C_DOUBLE
396 # define PREALVAR_cfN( T,A) double *A
397 #else
398 # define PREALVAR_cfN( T,A) float *A
399 #endif
400 #define PREALVAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
401 #define PREALVAR_cfT(M,I,A,B,D) A
402 
403 
404 /*
405  * Input, REAL variable array:
406  */
407 #define REALVARV REALVAR
408 
409 
410 /*
411  * Output, REAL variable array:
412  */
413 #define PREALVARV PREALVAR
414 
415 
416 /*
417  * Input, DOUBLEPRECISION variable:
418  */
419 #define DOUBLEVAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
420 #define DOUBLEVAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
421 #define DOUBLEVAR_cfN( T,A) const double *A
422 #define DOUBLEVAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
423 #define DOUBLEVAR_cfT(M,I,A,B,D) A
424 
425 
426 /*
427  * Output, DOUBLEPRECISION variable:
428  */
429 #define PDOUBLEVAR_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
430 #define PDOUBLEVAR_cfSEP(T, B) SIMPLE_cfSEP(T,B)
431 #define PDOUBLEVAR_cfN( T,A) double *A
432 #define PDOUBLEVAR_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
433 #define PDOUBLEVAR_cfT(M,I,A,B,D) A
434 
435 
436 /*
437  * Input, DOUBLEPRECISION variable array:
438  */
439 #define DOUBLEVARV DOUBLEVAR
440 
441 
442 /*
443  * Output, DOUBLEPRECISION variable array:
444  */
445 #define PDOUBLEVARV PDOUBLEVAR
446 
447 
448 /*******************************************************************************
449  * Miscellaneious netCDF stuff:
450  */
451 
452 
453 /*
454  * Output, `size_t' variable:
455  */
456 #define PSIZET_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
457 #define PSIZET_cfTYPE NF_INTEGER
458 #define PSIZET_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PSIZET,A,B,C,D,E)
459 #define PSIZET_cfH(S,U,B)
460 #define PSIZET_cfQ(B) size_t B;
461 #define PSIZET_cfT(M,I,A,B,D) &B
462 #define PSIZET_cfR(A,B,D) *A=B;
463 
464 
465 /*
466  * Input dimension-ID:
467  */
468 #define DIMID FNDX2CNDX
469 
470 
471 /*
472  * Output, dimension-ID:
473  */
474 #define PDIMID_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
475 #define PDIMID_cfTYPE NF_INTEGER
476 #define PDIMID_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PDIMID,A,B,C,D,E)
477 #define PDIMID_cfH(S,U,B)
478 #define PDIMID_cfQ(B) int B = -1;
479 #define PDIMID_cfT(M,I,A,B,D) &B
480 #define PDIMID_cfR(A,B,D) *A=(B == -1 ? -1 : B+1);
481 
482 
483 /*
484  * Input, dimension-ID vector:
485  */
486 #define DIMIDS_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
487 #define DIMIDSVVVVVVV_cfTYPE NF_INTEGER
488 #define DIMIDS_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DIMIDS,A,B,C,D,E)
489 #define DIMIDS_cfH(S,U,B)
490 #define DIMIDS_cfQ(B) int B[NC_MAX_DIMS];
491 #define DIMIDS_cfT(M,I,A,B,D) f2c_dimids(*fndims, A, B)
492 #define DIMIDS_cfR(A,B,D)
493 
494 
495 /*
496  * Output, dimension-ID vector:
497  */
498 #define PDIMIDS_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
499 #define PDIMIDS_cfTYPE NF_INTEGER
500 #define PDIMIDS_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PDIMIDS,A,B,C,D,E)
501 #define PDIMIDS_cfH(S,U,B)
502 #define PDIMIDS_cfQ(B) int B[NC_MAX_DIMS];
503 #define PDIMIDS_cfT(M,I,A,B,D) B
504 #define PDIMIDS_cfR(A,B,D) c2f_dimids(*fncid, *fvarid-1, B, A);
505 
506 /*
507  * Input, chunksizes vector:
508  */
509 #define CHUNKSIZES_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
510 #define CHUNKSIZESVVVVVVV_cfTYPE NF_INTEGER
511 #define CHUNKSIZES_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,CHUNKSIZES,A,B,C,D,E)
512 #define CHUNKSIZES_cfH(S,U,B)
513 #define CHUNKSIZES_cfQ(B) int B[NC_MAX_DIMS];
514 #define CHUNKSIZES_cfT(M,I,A,B,D) f2c_chunksizes(*fncid, *fvarid-1, A, B)
515 #define CHUNKSIZES_cfR(A,B,D)
516 
517 
518 /*
519  * Output, chunksizes vector:
520  */
521 #define PCHUNKSIZES_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z)
522 #define PCHUNKSIZES_cfTYPE NF_INTEGER
523 #define PCHUNKSIZES_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PCHUNKSIZES,A,B,C,D,E)
524 #define PCHUNKSIZES_cfH(S,U,B)
525 #define PCHUNKSIZES_cfQ(B) int B[NC_MAX_DIMS];
526 #define PCHUNKSIZES_cfT(M,I,A,B,D) B
527 #define PCHUNKSIZES_cfR(A,B,D) c2f_chunksizes(*fncid, *fvarid-1, B, A);
528 
529 
530 /*
531  * Input, netCDF dataset ID:
532  */
533 #define NCID_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
534 #define NCID_cfSEP(T, B) SIMPLE_cfSEP(T,B)
535 #define NCID_cfN( T,A) NF_INTEGER *fncid
536 #define NCID_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
537 #define NCID_cfT(M,I,A,B,D) *fncid
538 
539 
540 /*
541  * Two, input, netCDF dataset IDs:
542  */
543 #define NCID1 FINT2CINT
544 #define NCID2 FINT2CINT
545 
546 
547 /*
548  * Output, netCDF dataset ID:
549  */
550 #define PNCID PCINT2FINT
551 
552 
553 /*
554  * Input, netCDF variable ID:
555  */
556 #define VARID_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
557 #define VARID_cfSEP(T, B) SIMPLE_cfSEP(T,B)
558 #define VARID_cfN( T,A) NF_INTEGER *fvarid
559 #define VARID_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
560 #define VARID_cfT(M,I,A,B,D) (*fvarid-1)
561 
562 
563 /*
564  * Two, input, netCDF variable IDs:
565  */
566 #define VARID1_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
567 #define VARID1_cfSEP(T, B) SIMPLE_cfSEP(T,B)
568 #define VARID1_cfN( T,A) NF_INTEGER *fvarid1
569 #define VARID1_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
570 #define VARID1_cfT(M,I,A,B,D) (*fvarid1-1)
571 
572 #define VARID2_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
573 #define VARID2_cfSEP(T, B) SIMPLE_cfSEP(T,B)
574 #define VARID2_cfN( T,A) NF_INTEGER *fvarid2
575 #define VARID2_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
576 #define VARID2_cfT(M,I,A,B,D) (*fvarid2-1)
577 
578 
579 /*
580  * Output, netCDF variable ID:
581  */
582 #define PVARID PCNDX2FNDX
583 
584 /*
585  * Input, netCDF field index:
586  */
587 #define FIELDIDX_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
588 #define FIELDIDX_cfSEP(T, B) SIMPLE_cfSEP(T,B)
589 #define FIELDIDX_cfN( T,A) NF_INTEGER *ffieldidx
590 #define FIELDIDX_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
591 #define FIELDIDX_cfT(M,I,A,B,D) (*ffieldidx-1)
592 
593 /*
594  * Input, co-ordinate vector:
595  */
596 #define COORDS_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
597 #define COORDSVVVVVVV_cfTYPE NF_INTEGER
598 #define COORDS_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,COORDS,A,B,C,D,E)
599 #define COORDS_cfH(S,U,B)
600 #define COORDS_cfQ(B) size_t B[NC_MAX_DIMS];
601 #define COORDS_cfT(M,I,A,B,D) f2c_coords(*fncid, *fvarid-1, A, B)
602 #define COORDS_cfR(A,B,D)
603 
604 
605 /*
606  * Input count:
607  */
608 #define COUNT_cfINT(N,A,B,X,Y,Z) SIMPLE_cfINT(N,A,B,X,Y,Z)
609 #define COUNT_cfSEP(T, B) SIMPLE_cfSEP(T,B)
610 #define COUNT_cfN( T,A) const NF_INTEGER *A
611 #define COUNT_cfSTR(N,T,A,B,C,D,E) SIMPLE_cfSTR(N,T,A,B,C,D,E)
612 #define COUNT_cfT(M,I,A,B,D) (size_t)*A
613 
614 
615 /*
616  * Output count:
617  */
618 #define PCOUNT PSIZET
619 
620 
621 /*
622  * Input, count vector:
623  */
624 #define COUNTS_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
625 #define COUNTSVVVVVVV_cfTYPE NF_INTEGER
626 #define COUNTS_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,COUNTS,A,B,C,D,E)
627 #define COUNTS_cfH(S,U,B)
628 #define COUNTS_cfQ(B) size_t B[NC_MAX_DIMS];
629 #define COUNTS_cfT(M,I,A,B,D) f2c_counts(*fncid, *fvarid-1, A, B)
630 #define COUNTS_cfR(A,B,D)
631 
632 
633 /*
634  * Input, stride vector:
635  */
636 #define STRIDES_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
637 #define STRIDESVVVVVVV_cfTYPE NF_INTEGER
638 #define STRIDES_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,STRIDES,A,B,C,D,E)
639 #define STRIDES_cfH(S,U,B)
640 #define STRIDES_cfQ(B) ptrdiff_t B[NC_MAX_DIMS];
641 #define STRIDES_cfT(M,I,A,B,D) f2c_strides(*fncid, *fvarid-1, A, B)
642 #define STRIDES_cfR(A,B,D)
643 
644 
645 /*
646  * Input, mapping vector:
647  */
648 #define MAPS_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z)
649 #define MAPSVVVVVVV_cfTYPE NF_INTEGER
650 #define MAPS_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,MAPS,A,B,C,D,E)
651 #define MAPS_cfH(S,U,B)
652 #define MAPS_cfQ(B) ptrdiff_t B[NC_MAX_DIMS];
653 #define MAPS_cfT(M,I,A,B,D) f2c_maps(*fncid, *fvarid-1, A, B)
654 #define MAPS_cfR(A,B,D)
655 
656 
657 /*******************************************************************************
658  * The following is for f2c-support only.
659  */
660 
661 #if defined(f2cFortran) && !defined(pgiFortran) && !defined(gFortran)
662 
663 /*
664  * The f2c(1) utility on BSD/OS and Linux systems adds an additional
665  * underscore suffix (besides the usual one) to global names that have
666  * an embedded underscore. For example, `nfclose' becomes `nfclose_',
667  * but `nf_close' becomes `nf_close__. Consequently, we have to modify
668  * some names.
669  */
670 #ifdef LOGGING
671 #define nf_set_log_level nf_set_log_level_
672 #endif /* LOGGING */
673 #define nf_inq_libvers nf_inq_libvers_
674 #define nf_strerror nf_strerror_
675 #define nf_issyserr nf_issyserr_
676 #define nf_create nf_create_
677 #define nf_open nf_open_
678 #define nf_set_fill nf_set_fill_
679 #define nf_set_default_format nf_set_default_format_
680 #define nf_redef nf_redef_
681 #define nf_enddef nf_enddef_
682 #define nf_sync nf_sync_
683 #define nf_abort nf_abort_
684 #define nf_close nf_close_
685 #define nf_delete nf_delete_
686 #define nf_inq nf_inq_
687 #define nf_inq_ndims nf_inq_ndims_
688 #define nf_inq_nvars nf_inq_nvars_
689 #define nf_inq_natts nf_inq_natts_
690 #define nf_inq_unlimdim nf_inq_unlimdim_
691 #define nf_inq_format nf_inq_format_
692 #define nf_def_dim nf_def_dim_
693 #define nf_inq_dimid nf_inq_dimid_
694 #define nf_inq_dim nf_inq_dim_
695 #define nf_inq_dimname nf_inq_dimname_
696 #define nf_inq_dimlen nf_inq_dimlen_
697 #define nf_rename_dim nf_rename_dim_
698 #define nf_inq_att nf_inq_att_
699 #define nf_inq_attid nf_inq_attid_
700 #define nf_inq_atttype nf_inq_atttype_
701 #define nf_inq_attlen nf_inq_attlen_
702 #define nf_inq_attname nf_inq_attname_
703 #define nf_copy_att nf_copy_att_
704 #define nf_rename_att nf_rename_att_
705 #define nf_del_att nf_del_att_
706 #define nf_put_att_text nf_put_att_text_
707 #define nf_get_att_text nf_get_att_text_
708 #define nf_put_att_int1 nf_put_att_int1_
709 #define nf_get_att_int1 nf_get_att_int1_
710 #define nf_put_att_int2 nf_put_att_int2_
711 #define nf_get_att_int2 nf_get_att_int2_
712 #define nf_put_att_int nf_put_att_int_
713 #define nf_get_att_int nf_get_att_int_
714 #define nf_put_att_real nf_put_att_real_
715 #define nf_get_att_real nf_get_att_real_
716 #define nf_put_att_double nf_put_att_double_
717 #define nf_get_att_double nf_get_att_double_
718 #define nf_def_var nf_def_var_
719 #define nf_inq_var nf_inq_var_
720 #define nf_inq_varid nf_inq_varid_
721 #define nf_inq_varname nf_inq_varname_
722 #define nf_inq_vartype nf_inq_vartype_
723 #define nf_inq_varndims nf_inq_varndims_
724 #define nf_inq_vardimid nf_inq_vardimid_
725 #define nf_inq_varnatts nf_inq_varnatts_
726 #define nf_rename_var nf_rename_var_
727 #define nf_copy_var nf_copy_var_
728 #define nf_put_var_text nf_put_var_text_
729 #define nf_get_var_text nf_get_var_text_
730 #define nf_put_var_int1 nf_put_var_int1_
731 #define nf_get_var_int1 nf_get_var_int1_
732 #define nf_put_var_int2 nf_put_var_int2_
733 #define nf_get_var_int2 nf_get_var_int2_
734 #define nf_put_var_int nf_put_var_int_
735 #define nf_get_var_int nf_get_var_int_
736 #define nf_put_var_real nf_put_var_real_
737 #define nf_get_var_real nf_get_var_real_
738 #define nf_put_var_double nf_put_var_double_
739 #define nf_get_var_double nf_get_var_double_
740 #define nf_put_var1_text nf_put_var1_text_
741 #define nf_get_var1_text nf_get_var1_text_
742 #define nf_put_var1_int1 nf_put_var1_int1_
743 #define nf_get_var1_int1 nf_get_var1_int1_
744 #define nf_put_var1_int2 nf_put_var1_int2_
745 #define nf_get_var1_int2 nf_get_var1_int2_
746 #define nf_put_var1_int nf_put_var1_int_
747 #define nf_get_var1_int nf_get_var1_int_
748 #define nf_put_var1_real nf_put_var1_real_
749 #define nf_get_var1_real nf_get_var1_real_
750 #define nf_put_var1_double nf_put_var1_double_
751 #define nf_get_var1_double nf_get_var1_double_
752 #define nf_put_vara_text nf_put_vara_text_
753 #define nf_get_vara_text nf_get_vara_text_
754 #define nf_put_vara_int1 nf_put_vara_int1_
755 #define nf_get_vara_int1 nf_get_vara_int1_
756 #define nf_put_vara_int2 nf_put_vara_int2_
757 #define nf_get_vara_int2 nf_get_vara_int2_
758 #define nf_put_vara_int nf_put_vara_int_
759 #define nf_get_vara_int nf_get_vara_int_
760 #define nf_put_vara_real nf_put_vara_real_
761 #define nf_get_vara_real nf_get_vara_real_
762 #define nf_put_vara_double nf_put_vara_double_
763 #define nf_get_vara_double nf_get_vara_double_
764 #define nf_put_vars_text nf_put_vars_text_
765 #define nf_get_vars_text nf_get_vars_text_
766 #define nf_put_vars_int1 nf_put_vars_int1_
767 #define nf_get_vars_int1 nf_get_vars_int1_
768 #define nf_put_vars_int2 nf_put_vars_int2_
769 #define nf_get_vars_int2 nf_get_vars_int2_
770 #define nf_put_vars_int nf_put_vars_int_
771 #define nf_get_vars_int nf_get_vars_int_
772 #define nf_put_vars_real nf_put_vars_real_
773 #define nf_get_vars_real nf_get_vars_real_
774 #define nf_put_vars_double nf_put_vars_double_
775 #define nf_get_vars_double nf_get_vars_double_
776 #define nf_put_varm_text nf_put_varm_text_
777 #define nf_get_varm_text nf_get_varm_text_
778 #define nf_put_varm_int1 nf_put_varm_int1_
779 #define nf_get_varm_int1 nf_get_varm_int1_
780 #define nf_put_varm_int2 nf_put_varm_int2_
781 #define nf_get_varm_int2 nf_get_varm_int2_
782 #define nf_put_varm_int nf_put_varm_int_
783 #define nf_get_varm_int nf_get_varm_int_
784 #define nf_put_varm_real nf_put_varm_real_
785 #define nf_get_varm_real nf_get_varm_real_
786 #define nf_put_varm_double nf_put_varm_double_
787 #define nf_get_varm_double nf_get_varm_double_
788 #define nf__create nf__create_
789 #define nf__create_mp nf__create_mp_
790 #define nf__enddef nf__enddef_
791 #define nf__open nf__open_
792 #define nf__open_mp nf__open_mp_
793 #define nf_delete_mp nf_delete_mp_
794 #define nf_inq_base_pe nf_inq_base_pe_
795 #define nf_set_base_pe nf_set_base_pe_
796 
797 #ifdef USE_NETCDF4
798 #define nf_create_par nf_create_par_
799 #define nf_open_par nf_open_par_
800 #define nf_var_par_access nf_var_par_access_
801 #define nf_inq_ncid nf_inq_ncid_
802 #define nf_inq_grps nf_inq_grps_
803 #define nf_inq_grpname nf_inq_grpname_
804 #define nf_inq_grp_parent nf_inq_grp_parent_
805 #define nf_inq_grp_ncid nf_inq_grp_ncid_
806 #define nf_inq_varids nf_inq_varids_
807 #define nf_inq_dimids nf_inq_dimids_
808 #define nf_inq_typeids nf_inq_typeids_
809 #define nf_inq_typeid nf_inq_typeid_
810 #define nf_def_grp nf_def_grp_
811 #define nf_def_compound nf_def_compound_
812 #define nf_insert_compound nf_insert_compound_
813 #define nf_insert_array_compound nf_insert_array_compound_
814 #define nf_inq_type nf_inq_type_
815 #define nf_inq_compound nf_inq_compound_
816 #define nf_inq_compound_name nf_inq_compound_name_
817 #define nf_inq_compound_size nf_inq_compound_size_
818 #define nf_inq_compound_nfields nf_inq_compound_nfields_
819 #define nf_inq_compound_field nf_inq_compound_field_
820 #define nf_inq_compound_fieldname nf_inq_compound_fieldname_
821 #define nf_inq_compound_fieldindex nf_inq_compound_fieldindex_
822 #define nf_inq_compound_fieldtype nf_inq_compound_fieldtype_
823 #define nf_inq_compound_fieldndims nf_inq_compound_fieldndims_
824 #define nf_inq_compound_fielddim_sizes nf_inq_compound_fielddim_sizes_
825 #define nf_def_vlen nf_def_vlen_
826 #define nf_inq_vlen nf_inq_vlen_
827 #define nf_free_vlen nf_free_vlen_
828 #define nf_inq_user_type nf_inq_user_type_
829 #define nf_put_att nf_put_att_
830 #define nf_get_att nf_get_att_
831 #define nf_def_enum nf_def_enum_
832 #define nf_insert_enum nf_insert_enum_
833 #define nf_inq_enum nf_inq_enum_
834 #define nf_inq_enum_member nf_inq_enum_member_
835 #define nf_inq_enum_ident nf_inq_enum_ident_
836 #define nf_def_opaque nf_def_opaque_
837 #define nf_inq_opaque nf_inq_opaque_
838 #define nf_put_var nf_put_var_
839 #define nf_put_var1 nf_put_var1_
840 #define nf_put_vara nf_put_vara_
841 #define nf_put_vars nf_put_vars_
842 #define nf_put_varm nf_put_varm_
843 #define nf_get_var nf_get_var_
844 #define nf_get_var1 nf_get_var1_
845 #define nf_get_vara nf_get_vara_
846 #define nf_get_vars nf_get_vars_
847 #define nf_get_varm nf_get_varm_
848 #define nf_put_var_int64 nf_put_var_int64_
849 #define nf_put_var1_int64 nf_put_var1_int64_
850 #define nf_put_vara_int64 nf_put_vara_int64_
851 #define nf_put_vars_int64 nf_put_vars_int64_
852 #define nf_put_varm_int64 nf_put_varm_int64_
853 #define nf_get_var_int64 nf_get_var_int64_
854 #define nf_get_var1_int64 nf_get_var1_int64_
855 #define nf_get_vara_int64 nf_get_vara_int64_
856 #define nf_get_vars_int64 nf_get_vars_int64_
857 #define nf_get_varm_int64 nf_get_varm_int64_
858 #define nf_def_var_chunking nf_def_var_chunking_
859 #define nf_def_var_deflate nf_def_var_deflate_
860 #define nf_def_var_szip nf_def_var_szip_
861 #define nf_def_var_fletcher32 nf_def_var_fletcher32_
862 #define nf_inq_var_chunking nf_inq_var_chunking_
863 #define nf_inq_var_deflate nf_inq_var_deflate_
864 #define nf_inq_var_szip nf_inq_var_szip_
865 #define nf_inq_var_fletcher32 nf_inq_var_fletcher32_
866 #define nf_def_var_endian nf_def_var_endian_
867 #define nf_inq_var_endian nf_inq_var_endian_
868 #define nf_def_var_fill nf_def_var_fill_
869 #define nf_inq_var_fill nf_inq_var_fill_
870 #define nf_get_vlen_element nf_get_vlen_element_
871 #define nf_inq_compound_fieldoffset nf_inq_compound_fieldoffset_
872 #define nf_inq_grp_full nf_inq_grp_full_
873 #define nf_inq_grpname_full nf_inq_grpname_full_
874 #define nf_inq_grpname_len nf_inq_grpname_len_
875 #define nf_put_vlen_element nf_put_vlen_element_
876 #define nf_inq_grp_full_ncid nf_inq_grp_full_ncid_
877 #define nf_set_chunk_cache nf_set_chunk_cache_
878 #define nf_get_chunk_cache nf_get_chunk_cache_
879 #define nf_set_var_chunk_cache nf_set_var_chunk_cache_
880 #define nf_get_var_chunk_cache nf_get_var_chunk_cache_
881 #define nf_free_string nf_free_string_
882 #define nf_free_vlens nf_free_vlens_
883 
884 #endif /* USE_NETCDF4 */
885 
886 #endif /* f2cFortran */
887 
888 #if defined(DLL_NETCDF) /* define when library is a DLL */
889 # if defined(NC_DLL_EXPORT) /* define when building the library */
890 # define extern extern __declspec(dllexport)
891 # else
892 # define extern extern __declspec(dllimport)
893 # endif
894 #endif /* defined(DLL_NETCDF) */
895 
896 #endif /* header-file lockout */

Return to the Main Unidata NetCDF page.
Generated on Wed Aug 19 2015 17:51:09 for NetCDF-Fortran. NetCDF is a Unidata library.