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