00001 #include <stddef.h>
00002 #include <errno.h>
00003
00004 #include "netcdf.h"
00005 #include "ncfortran.h"
00006 #include "fort-lib.h"
00007
00008
00009
00010
00011
00012 NF_INTEGER*
00013 c2f_dimids(int ncid, int varid, const int* cdimids, NF_INTEGER* fdimids)
00014 {
00015 int i;
00016 int ndims;
00017
00018 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
00019 return NULL;
00020
00021 for (i = 0; i < ndims; ++i)
00022 fdimids[ndims - 1 - i] = cdimids[i] + 1;
00023
00024 return fdimids;
00025 }
00026
00027
00028
00029
00030
00031 int*
00032 f2c_dimids(int ndims, const NF_INTEGER* fdimids, int* cdimids)
00033 {
00034 int i;
00035
00036 for (i = 0; i < ndims; ++i)
00037 cdimids[i] = fdimids[ndims - 1 - i] - 1;
00038
00039 return cdimids;
00040 }
00041
00042
00043
00044
00045
00046 size_t*
00047 f2c_coords(int ncid, int varid, const NF_INTEGER* fcoords,
00048 size_t* ccoords)
00049 {
00050 int i;
00051 int ndims;
00052
00053 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
00054 return NULL;
00055
00056 for (i = 0; i < ndims; ++i)
00057 ccoords[i] = fcoords[ndims - 1 - i] - 1;
00058
00059 return ccoords;
00060 }
00061
00062
00063
00064
00065
00066 size_t*
00067 f2c_counts(int ncid, int varid, const NF_INTEGER* fcounts,
00068 size_t* ccounts)
00069 {
00070 int i;
00071 int ndims;
00072
00073 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
00074 return NULL;
00075
00076 for (i = 0; i < ndims; ++i)
00077 ccounts[i] = fcounts[ndims - 1 - i];
00078
00079 return ccounts;
00080 }
00081
00082
00083
00084
00085
00086
00087
00088 ptrdiff_t*
00089 f2c_strides(int ncid, int varid, const NF_INTEGER* fstrides,
00090 ptrdiff_t* cstrides)
00091 {
00092 int i;
00093 int ndims;
00094
00095 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
00096 return NULL;
00097
00098 for (i = 0; i < ndims; ++i)
00099 cstrides[i] = fstrides[ndims - 1 - i];
00100
00101 return cstrides;
00102 }
00103
00104
00105
00106
00107
00108 ptrdiff_t*
00109 f2c_maps(int ncid, int varid, const NF_INTEGER* fmaps, ptrdiff_t* cmaps)
00110 {
00111 return f2c_strides(ncid, varid, fmaps, cmaps);
00112 }