[409] | 1 | /*! \file |
---|
| 2 | Functions for Compound Types |
---|
| 3 | |
---|
| 4 | Copyright 2011 University Corporation for Atmospheric |
---|
| 5 | Research/Unidata. See \ref copyright file for more info. */ |
---|
| 6 | |
---|
| 7 | #include "ncdispatch.h" |
---|
| 8 | |
---|
| 9 | /** \name Compound Types |
---|
| 10 | Functions to create and learn about compound types. */ |
---|
| 11 | /*! \{ */ /* All these functions are part of this named group... */ |
---|
| 12 | |
---|
| 13 | |
---|
| 14 | /** \ingroup user_types |
---|
| 15 | |
---|
| 16 | Create a compound type. Provide an ncid, a name, and a total size (in |
---|
| 17 | bytes) of one element of the completed compound type. |
---|
| 18 | |
---|
| 19 | After calling this function, fill out the type with repeated calls to |
---|
| 20 | nc_insert_compound(). Call nc_insert_compound() once for each field |
---|
| 21 | you wish to insert into the compound type. |
---|
| 22 | |
---|
| 23 | \param ncid \ref ncid |
---|
| 24 | \param size The size, in bytes, of the compound type. |
---|
| 25 | \param name \ref object_name of the created type. |
---|
| 26 | \param typeidp The type ID of the new type is copied here. |
---|
| 27 | |
---|
| 28 | \returns ::NC_NOERR No error. |
---|
| 29 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 30 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 31 | \returns ::NC_ENAMEINUSE That name is in use. |
---|
| 32 | \returns ::NC_EMAXNAME Name exceeds max length NC_MAX_NAME. |
---|
| 33 | \returns ::NC_EBADNAME Name contains illegal characters. |
---|
| 34 | \returns ::NC_ESTRICTNC3 Attempting a netCDF-4 operation on a netCDF-3 file. |
---|
| 35 | \returns ::NC_ENOTNC4 This file was created with the strict netcdf-3 flag, therefore netcdf-4 operations are not allowed. (see nc_open). |
---|
| 36 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 37 | \returns ::NC_EPERM Attempt to write to a read-only file. |
---|
| 38 | \returns ::NC_ENOTINDEFINE Not in define mode. |
---|
| 39 | |
---|
| 40 | \section Example |
---|
| 41 | |
---|
| 42 | \code |
---|
| 43 | struct s1 |
---|
| 44 | { |
---|
| 45 | int i1; |
---|
| 46 | int i2; |
---|
| 47 | }; |
---|
| 48 | struct s1 data[DIM_LEN], data_in[DIM_LEN]; |
---|
| 49 | |
---|
| 50 | if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; |
---|
| 51 | if (nc_def_compound(ncid, sizeof(struct s1), SVC_REC, &typeid)) ERR; |
---|
| 52 | if (nc_insert_compound(ncid, typeid, BATTLES_WITH_KLINGONS, |
---|
| 53 | HOFFSET(struct s1, i1), NC_INT)) ERR; |
---|
| 54 | if (nc_insert_compound(ncid, typeid, DATES_WITH_ALIENS, |
---|
| 55 | HOFFSET(struct s1, i2), NC_INT)) ERR; |
---|
| 56 | if (nc_def_dim(ncid, STARDATE, DIM_LEN, &dimid)) ERR; |
---|
| 57 | if (nc_def_var(ncid, SERVICE_RECORD, typeid, 1, dimids, &varid)) ERR; |
---|
| 58 | if (nc_put_var(ncid, varid, data)) ERR; |
---|
| 59 | if (nc_close(ncid)) ERR; |
---|
| 60 | \endcode |
---|
| 61 | */ |
---|
| 62 | int |
---|
| 63 | nc_def_compound(int ncid, size_t size, const char *name, |
---|
| 64 | nc_type *typeidp) |
---|
| 65 | { |
---|
| 66 | NC* ncp; |
---|
| 67 | int stat = NC_check_id(ncid,&ncp); |
---|
| 68 | if(stat != NC_NOERR) return stat; |
---|
| 69 | return ncp->dispatch->def_compound(ncid,size,name,typeidp); |
---|
| 70 | } |
---|
| 71 | |
---|
| 72 | /** \ingroup user_types |
---|
| 73 | Insert a named field into a compound type. |
---|
| 74 | |
---|
| 75 | \param ncid \ref ncid |
---|
| 76 | |
---|
| 77 | \param xtype The typeid for this compound type, as returned by |
---|
| 78 | nc_def_compound(), or nc_inq_var(). |
---|
| 79 | |
---|
| 80 | \param name The \ref object_name of the new field. |
---|
| 81 | |
---|
| 82 | \param offset Offset in byte from the beginning of the compound type |
---|
| 83 | for this field. |
---|
| 84 | |
---|
| 85 | \param field_typeid The type of the field to be inserted. |
---|
| 86 | |
---|
| 87 | \returns ::NC_NOERR No error. |
---|
| 88 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 89 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 90 | \returns ::NC_ENAMEINUSE That name is in use. |
---|
| 91 | \returns ::NC_EMAXNAME Name exceeds max length NC_MAX_NAME. |
---|
| 92 | \returns ::NC_EBADNAME Name contains illegal characters. |
---|
| 93 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 94 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 95 | \returns ::NC_EPERM Attempt to write to a read-only file. |
---|
| 96 | \returns ::NC_ENOTINDEFINE Not in define mode. |
---|
| 97 | */ |
---|
| 98 | int |
---|
| 99 | nc_insert_compound(int ncid, nc_type xtype, const char *name, |
---|
| 100 | size_t offset, nc_type field_typeid) |
---|
| 101 | { |
---|
| 102 | NC *ncp; |
---|
| 103 | int stat = NC_check_id(ncid, &ncp); |
---|
| 104 | if(stat != NC_NOERR) return stat; |
---|
| 105 | return ncp->dispatch->insert_compound(ncid, xtype, name, |
---|
| 106 | offset, field_typeid); |
---|
| 107 | } |
---|
| 108 | |
---|
| 109 | /** \ingroup user_types |
---|
| 110 | Insert a named array field into a compound type. |
---|
| 111 | |
---|
| 112 | \param ncid \ref ncid |
---|
| 113 | |
---|
| 114 | \param xtype The typeid for this compound type, as returned by |
---|
| 115 | nc_def_compound(), or nc_inq_var(). |
---|
| 116 | |
---|
| 117 | \param name The \ref object_name of the new field. |
---|
| 118 | |
---|
| 119 | \param offset Offset in byte from the beginning of the compound type |
---|
| 120 | for this field. |
---|
| 121 | |
---|
| 122 | \param field_typeid The type of the field to be inserted. |
---|
| 123 | |
---|
| 124 | \param ndims Number of dimensions in array. |
---|
| 125 | |
---|
| 126 | \param dim_sizes Array of dimension sizes. |
---|
| 127 | |
---|
| 128 | \returns ::NC_NOERR No error. |
---|
| 129 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 130 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 131 | \returns ::NC_ENAMEINUSE That name is in use. |
---|
| 132 | \returns ::NC_EMAXNAME Name exceeds max length NC_MAX_NAME. |
---|
| 133 | \returns ::NC_EBADNAME Name contains illegal characters. |
---|
| 134 | \returns ::NC_ESTRICTNC3 Attempting a netCDF-4 operation on a netCDF-3 file. |
---|
| 135 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 136 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 137 | \returns ::NC_EPERM Attempt to write to a read-only file. |
---|
| 138 | \returns ::NC_ENOTINDEFINE Not in define mode. |
---|
| 139 | */ |
---|
| 140 | int |
---|
| 141 | nc_insert_array_compound(int ncid, nc_type xtype, const char *name, |
---|
| 142 | size_t offset, nc_type field_typeid, |
---|
| 143 | int ndims, const int *dim_sizes) |
---|
| 144 | { |
---|
| 145 | NC* ncp; |
---|
| 146 | int stat = NC_check_id(ncid,&ncp); |
---|
| 147 | if(stat != NC_NOERR) return stat; |
---|
| 148 | return ncp->dispatch->insert_array_compound(ncid,xtype,name,offset,field_typeid,ndims,dim_sizes); |
---|
| 149 | } |
---|
| 150 | |
---|
| 151 | /** \ingroup user_types |
---|
| 152 | Learn about a compound type. Get the number of fields, len, and |
---|
| 153 | name of a compound type. |
---|
| 154 | |
---|
| 155 | \param ncid \ref ncid |
---|
| 156 | |
---|
| 157 | \param xtype The typeid for this compound type, as returned by |
---|
| 158 | nc_def_compound(), or nc_inq_var(). |
---|
| 159 | |
---|
| 160 | \param name Returned \ref object_name of compound type. \ref |
---|
| 161 | ignored_if_null. |
---|
| 162 | |
---|
| 163 | \param sizep Returned size of compound type in bytes. \ref ignored_if_null. |
---|
| 164 | |
---|
| 165 | \param nfieldsp The number of fields in the compound type will be |
---|
| 166 | placed here. \ref ignored_if_null. |
---|
| 167 | |
---|
| 168 | \returns ::NC_NOERR No error. |
---|
| 169 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 170 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 171 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 172 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 173 | */ |
---|
| 174 | int |
---|
| 175 | nc_inq_compound(int ncid, nc_type xtype, char *name, |
---|
| 176 | size_t *sizep, size_t *nfieldsp) |
---|
| 177 | { |
---|
| 178 | int class = 0; |
---|
| 179 | int stat = nc_inq_user_type(ncid,xtype,name,sizep,NULL,nfieldsp,&class); |
---|
| 180 | if(stat != NC_NOERR) return stat; |
---|
| 181 | if(class != NC_COMPOUND) stat = NC_EBADTYPE; |
---|
| 182 | return stat; |
---|
| 183 | } |
---|
| 184 | |
---|
| 185 | /** \ingroup user_types |
---|
| 186 | Learn the name of a compound type. |
---|
| 187 | |
---|
| 188 | \param ncid \ref ncid |
---|
| 189 | |
---|
| 190 | \param xtype The typeid for this compound type, as returned by |
---|
| 191 | nc_def_compound(), or nc_inq_var(). |
---|
| 192 | |
---|
| 193 | \param name Returned \ref object_name of compound type. \ref |
---|
| 194 | ignored_if_null. |
---|
| 195 | |
---|
| 196 | \returns ::NC_NOERR No error. |
---|
| 197 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 198 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 199 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 200 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 201 | */ |
---|
| 202 | int |
---|
| 203 | nc_inq_compound_name(int ncid, nc_type xtype, char *name) |
---|
| 204 | { |
---|
| 205 | return nc_inq_compound(ncid,xtype,name,NULL,NULL); |
---|
| 206 | } |
---|
| 207 | |
---|
| 208 | /** \ingroup user_types |
---|
| 209 | Learn the size of a compound type. |
---|
| 210 | |
---|
| 211 | \param ncid \ref ncid |
---|
| 212 | |
---|
| 213 | \param xtype The typeid for this compound type, as returned by |
---|
| 214 | nc_def_compound(), or nc_inq_var(). |
---|
| 215 | |
---|
| 216 | \param sizep Returned size of compound type in bytes. \ref |
---|
| 217 | ignored_if_null. |
---|
| 218 | |
---|
| 219 | \returns ::NC_NOERR No error. |
---|
| 220 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 221 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 222 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 223 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 224 | */ |
---|
| 225 | int |
---|
| 226 | nc_inq_compound_size(int ncid, nc_type xtype, size_t *sizep) |
---|
| 227 | { |
---|
| 228 | return nc_inq_compound(ncid,xtype,NULL,sizep,NULL); |
---|
| 229 | } |
---|
| 230 | |
---|
| 231 | /** \ingroup user_types |
---|
| 232 | Learn the number of fields in a compound type. |
---|
| 233 | |
---|
| 234 | \param ncid \ref ncid |
---|
| 235 | |
---|
| 236 | \param xtype The typeid for this compound type, as returned by |
---|
| 237 | nc_def_compound(), or nc_inq_var(). |
---|
| 238 | |
---|
| 239 | \param nfieldsp The number of fields in the compound type will be |
---|
| 240 | placed here. \ref ignored_if_null. |
---|
| 241 | |
---|
| 242 | \returns ::NC_NOERR No error. |
---|
| 243 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 244 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 245 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 246 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 247 | */ |
---|
| 248 | int |
---|
| 249 | nc_inq_compound_nfields(int ncid, nc_type xtype, size_t *nfieldsp) |
---|
| 250 | { |
---|
| 251 | return nc_inq_compound(ncid,xtype,NULL,NULL,nfieldsp); |
---|
| 252 | } |
---|
| 253 | |
---|
| 254 | /** \ingroup user_types |
---|
| 255 | Get information about one of the fields of a compound type. |
---|
| 256 | |
---|
| 257 | \param ncid \ref ncid |
---|
| 258 | |
---|
| 259 | \param xtype The typeid for this compound type, as returned by |
---|
| 260 | nc_def_compound(), or nc_inq_var(). |
---|
| 261 | |
---|
| 262 | \param fieldid A zero-based index number specifying a field in the |
---|
| 263 | compound type. |
---|
| 264 | |
---|
| 265 | \param name Returned \ref object_name of the field. \ref |
---|
| 266 | ignored_if_null. |
---|
| 267 | |
---|
| 268 | \param offsetp A pointer which will get the offset of the field. \ref |
---|
| 269 | ignored_if_null. |
---|
| 270 | |
---|
| 271 | \param field_typeidp A pointer which will get the typeid of the |
---|
| 272 | field. \ref ignored_if_null. |
---|
| 273 | |
---|
| 274 | \param ndimsp A pointer which will get the number of dimensions of the |
---|
| 275 | field. \ref ignored_if_null. |
---|
| 276 | |
---|
| 277 | \param dim_sizesp A pointer which will get the dimension sizes of the |
---|
| 278 | field. \ref ignored_if_null. |
---|
| 279 | |
---|
| 280 | \returns ::NC_NOERR No error. |
---|
| 281 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 282 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 283 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 284 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 285 | */ |
---|
| 286 | int |
---|
| 287 | nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, |
---|
| 288 | char *name, size_t *offsetp, |
---|
| 289 | nc_type *field_typeidp, int *ndimsp, |
---|
| 290 | int *dim_sizesp) |
---|
| 291 | { |
---|
| 292 | NC* ncp; |
---|
| 293 | int stat = NC_check_id(ncid,&ncp); |
---|
| 294 | if(stat != NC_NOERR) return stat; |
---|
| 295 | return ncp->dispatch->inq_compound_field(ncid, xtype, fieldid, |
---|
| 296 | name, offsetp, field_typeidp, |
---|
| 297 | ndimsp, dim_sizesp); |
---|
| 298 | } |
---|
| 299 | |
---|
| 300 | /** \ingroup user_types |
---|
| 301 | Get information about one of the fields of a compound type. |
---|
| 302 | |
---|
| 303 | \param ncid \ref ncid |
---|
| 304 | |
---|
| 305 | \param xtype The typeid for this compound type, as returned by |
---|
| 306 | nc_def_compound(), or nc_inq_var(). |
---|
| 307 | |
---|
| 308 | \param fieldid A zero-based index number specifying a field in the |
---|
| 309 | compound type. |
---|
| 310 | |
---|
| 311 | \param name Returned \ref object_name of the field. \ref |
---|
| 312 | ignored_if_null. |
---|
| 313 | |
---|
| 314 | \returns ::NC_NOERR No error. |
---|
| 315 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 316 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 317 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 318 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 319 | */ |
---|
| 320 | int |
---|
| 321 | nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, |
---|
| 322 | char *name) |
---|
| 323 | { |
---|
| 324 | NC* ncp; |
---|
| 325 | int stat = NC_check_id(ncid,&ncp); |
---|
| 326 | if(stat != NC_NOERR) return stat; |
---|
| 327 | return ncp->dispatch->inq_compound_field(ncid, xtype, fieldid, |
---|
| 328 | name, NULL, NULL, NULL, |
---|
| 329 | NULL); |
---|
| 330 | } |
---|
| 331 | |
---|
| 332 | /** \ingroup user_types |
---|
| 333 | Get information about one of the fields of a compound type. |
---|
| 334 | |
---|
| 335 | \param ncid \ref ncid |
---|
| 336 | |
---|
| 337 | \param xtype The typeid for this compound type, as returned by |
---|
| 338 | nc_def_compound(), or nc_inq_var(). |
---|
| 339 | |
---|
| 340 | \param fieldid A zero-based index number specifying a field in the |
---|
| 341 | compound type. |
---|
| 342 | |
---|
| 343 | \param offsetp A pointer which will get the offset of the field. \ref |
---|
| 344 | ignored_if_null. |
---|
| 345 | |
---|
| 346 | \returns ::NC_NOERR No error. |
---|
| 347 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 348 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 349 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 350 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 351 | */ |
---|
| 352 | int |
---|
| 353 | nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, |
---|
| 354 | size_t *offsetp) |
---|
| 355 | { |
---|
| 356 | NC* ncp; |
---|
| 357 | int stat = NC_check_id(ncid,&ncp); |
---|
| 358 | if(stat != NC_NOERR) return stat; |
---|
| 359 | return ncp->dispatch->inq_compound_field(ncid,xtype,fieldid,NULL,offsetp,NULL,NULL,NULL); |
---|
| 360 | } |
---|
| 361 | |
---|
| 362 | /** \ingroup user_types |
---|
| 363 | Get information about one of the fields of a compound type. |
---|
| 364 | |
---|
| 365 | \param ncid \ref ncid |
---|
| 366 | |
---|
| 367 | \param xtype The typeid for this compound type, as returned by |
---|
| 368 | nc_def_compound(), or nc_inq_var(). |
---|
| 369 | |
---|
| 370 | \param fieldid A zero-based index number specifying a field in the |
---|
| 371 | compound type. |
---|
| 372 | |
---|
| 373 | \param field_typeidp A pointer which will get the typeid of the |
---|
| 374 | field. \ref ignored_if_null. |
---|
| 375 | |
---|
| 376 | \returns ::NC_NOERR No error. |
---|
| 377 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 378 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 379 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 380 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 381 | */ |
---|
| 382 | int |
---|
| 383 | nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, |
---|
| 384 | nc_type *field_typeidp) |
---|
| 385 | { |
---|
| 386 | NC* ncp; |
---|
| 387 | int stat = NC_check_id(ncid,&ncp); |
---|
| 388 | if(stat != NC_NOERR) return stat; |
---|
| 389 | return ncp->dispatch->inq_compound_field(ncid,xtype,fieldid,NULL,NULL,field_typeidp,NULL,NULL); |
---|
| 390 | } |
---|
| 391 | |
---|
| 392 | /** \ingroup user_types |
---|
| 393 | Get information about one of the fields of a compound type. |
---|
| 394 | |
---|
| 395 | \param ncid \ref ncid |
---|
| 396 | |
---|
| 397 | \param xtype The typeid for this compound type, as returned by |
---|
| 398 | nc_def_compound(), or nc_inq_var(). |
---|
| 399 | |
---|
| 400 | \param fieldid A zero-based index number specifying a field in the |
---|
| 401 | compound type. |
---|
| 402 | |
---|
| 403 | \param ndimsp A pointer which will get the number of dimensions of the |
---|
| 404 | field. \ref ignored_if_null. |
---|
| 405 | |
---|
| 406 | \returns ::NC_NOERR No error. |
---|
| 407 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 408 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 409 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 410 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 411 | */ |
---|
| 412 | int |
---|
| 413 | nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, |
---|
| 414 | int *ndimsp) |
---|
| 415 | { |
---|
| 416 | NC* ncp; |
---|
| 417 | int stat = NC_check_id(ncid,&ncp); |
---|
| 418 | if(stat != NC_NOERR) return stat; |
---|
| 419 | return ncp->dispatch->inq_compound_field(ncid,xtype,fieldid,NULL,NULL,NULL,ndimsp,NULL); |
---|
| 420 | } |
---|
| 421 | |
---|
| 422 | /** \ingroup user_types |
---|
| 423 | Get information about one of the fields of a compound type. |
---|
| 424 | |
---|
| 425 | \param ncid \ref ncid |
---|
| 426 | |
---|
| 427 | \param xtype The typeid for this compound type, as returned by |
---|
| 428 | nc_def_compound(), or nc_inq_var(). |
---|
| 429 | |
---|
| 430 | \param fieldid A zero-based index number specifying a field in the |
---|
| 431 | compound type. |
---|
| 432 | |
---|
| 433 | \param dim_sizesp A pointer which will get the dimension sizes of the |
---|
| 434 | field. \ref ignored_if_null. |
---|
| 435 | |
---|
| 436 | \returns ::NC_NOERR No error. |
---|
| 437 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 438 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 439 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 440 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 441 | */ |
---|
| 442 | int |
---|
| 443 | nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid, |
---|
| 444 | int *dim_sizesp) |
---|
| 445 | { |
---|
| 446 | NC *ncp; |
---|
| 447 | int stat = NC_check_id(ncid, &ncp); |
---|
| 448 | if(stat != NC_NOERR) return stat; |
---|
| 449 | return ncp->dispatch->inq_compound_field(ncid, xtype, fieldid, |
---|
| 450 | NULL, NULL, NULL, NULL, |
---|
| 451 | dim_sizesp); |
---|
| 452 | } |
---|
| 453 | |
---|
| 454 | /** \ingroup user_types |
---|
| 455 | Learn the Index of a Named Field in a Compound Type. Get the index |
---|
| 456 | * of a field in a compound type from the name. |
---|
| 457 | |
---|
| 458 | \param ncid \ref ncid |
---|
| 459 | |
---|
| 460 | \param xtype The typeid for this compound type, as returned by |
---|
| 461 | nc_def_compound(), or nc_inq_var(). |
---|
| 462 | |
---|
| 463 | \param name \ref object_name of the field. \ref ignored_if_null. |
---|
| 464 | |
---|
| 465 | \param fieldidp A pointer which will get the index of the named |
---|
| 466 | field. \ref ignored_if_null. |
---|
| 467 | |
---|
| 468 | \returns ::NC_NOERR No error. |
---|
| 469 | \returns ::NC_EBADID Bad \ref ncid. |
---|
| 470 | \returns ::NC_EBADTYPE Bad type id. |
---|
| 471 | \returns ::NC_ENOTNC4 Not an netCDF-4 file, or classic model enabled. |
---|
| 472 | \returns ::NC_EHDFERR An error was reported by the HDF5 layer. |
---|
| 473 | */ |
---|
| 474 | int |
---|
| 475 | nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name, |
---|
| 476 | int *fieldidp) |
---|
| 477 | { |
---|
| 478 | NC* ncp; |
---|
| 479 | int stat = NC_check_id(ncid,&ncp); |
---|
| 480 | if(stat != NC_NOERR) return stat; |
---|
| 481 | return ncp->dispatch->inq_compound_fieldindex(ncid,xtype,name,fieldidp); |
---|
| 482 | } |
---|
| 483 | /*! \} */ /* End of named group ...*/ |
---|
| 484 | |
---|
| 485 | |
---|
| 486 | |
---|
| 487 | |
---|
| 488 | |
---|
| 489 | |
---|