15 #include "ncfortran.h"
22 c2f_dimids(
int ncid,
int varid,
const int* cdimids, NF_INTEGER* fdimids)
27 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
30 for (i = 0; i < ndims; ++i)
31 fdimids[ndims - 1 - i] = cdimids[i] + 1;
40 f2c_dimids(
int ndims,
const NF_INTEGER* fdimids,
int* cdimids)
44 for (i = 0; i < ndims; ++i)
45 cdimids[i] = fdimids[ndims - 1 - i] - 1;
52 c2f_chunksizes(
int ncid,
int varid,
const int *cchunksizes, NF_INTEGER *fchunksizes)
57 if (nc_inq_varndims(ncid, varid, &ndims))
60 for (i = 0; i < ndims; ++i)
61 fchunksizes[ndims - 1 - i] = cchunksizes[i];
68 f2c_chunksizes(
int ncid,
int varid,
const NF_INTEGER *fchunksizes,
int *cchunksizes)
73 if (nc_inq_varndims(ncid, varid, &ndims))
76 for (i = 0; i < ndims; ++i)
77 cchunksizes[i] = fchunksizes[ndims - 1 - i];
86 f2c_coords(
int ncid,
int varid,
const NF_INTEGER* fcoords,
92 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
95 for (i = 0; i < ndims; ++i)
96 ccoords[i] = fcoords[ndims - 1 - i] - 1;
106 f2c_counts(
int ncid,
int varid,
const NF_INTEGER* fcounts,
112 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
115 for (i = 0; i < ndims; ++i)
116 ccounts[i] = fcounts[ndims - 1 - i];
128 f2c_strides(
int ncid,
int varid,
const NF_INTEGER* fstrides,
134 if (nc_inq_varndims(ncid, varid, &ndims) != 0)
137 for (i = 0; i < ndims; ++i)
138 cstrides[i] = fstrides[ndims - 1 - i];
148 f2c_maps(
int ncid,
int varid,
const NF_INTEGER* fmaps, ptrdiff_t* cmaps)
150 return f2c_strides(ncid, varid, fmaps, cmaps);
159 nc_inq_varids_f(
int ncid,
int *nvars,
int *fvarids)
162 int i, ret = NC_NOERR;
165 if ((ret = nc_inq_varids(ncid, &nvars1, NULL)))
167 if (!(varids = malloc(nvars1 *
sizeof(
int))))
169 if ((ret = nc_inq_varids(ncid, NULL, varids)))
173 for (i = 0; i < nvars1; i++)
174 fvarids[i] = varids[i] + 1;
188 nc_inq_dimids_f(
int ncid,
int *ndims,
int *fdimids,
int parent)
191 int i, ret = NC_NOERR;
194 if ((ret = nc_inq_dimids(ncid, &ndims1, NULL, parent)))
196 if (!(dimids = malloc(ndims1 *
sizeof(
int))))
198 if ((ret = nc_inq_dimids(ncid, NULL, dimids, parent)))
202 for (i = 0; i < ndims1; i++)
203 fdimids[i] = dimids[i] + 1;
216 nc_insert_array_compound_f(
int ncid,
int typeid,
char *name,
217 size_t offset, nc_type field_typeid,
218 int ndims,
int *dim_sizesp)
227 if (!(dim_sizes_f = malloc(ndims *
sizeof(
int))))
231 for (i = 0; i < ndims; i++)
232 dim_sizes_f[i] = dim_sizesp[ndims - i - 1];
235 ret = nc_insert_array_compound(ncid,
typeid, name, offset, field_typeid,
244 nc_inq_compound_field_f(
int ncid, nc_type xtype,
int fieldid,
char *name,
245 size_t *offsetp, nc_type *field_typeidp,
int *ndimsp,
252 if ((ret = nc_inq_compound_field(ncid, xtype, fieldid, NULL, NULL,
253 NULL, &ndims, NULL)))
257 if ((ret = nc_inq_compound_field(ncid, xtype, fieldid, name, offsetp,
258 field_typeidp, ndimsp, dim_sizesp)))
265 for (f = dim_sizesp, b = &dim_sizesp[ndims - 1]; f < b; f++, b--)