Given an ncid and a typeid, get the information about a type. This function will work on any type, including atomic and any user defined type, whether compound, opaque, enumeration, or variable length array.
For even more information about a user defined type nc_inq_user_type.
nc_inq_type(int ncid, nc_type xtype, char *name, size_t *sizep);
ncid
xtype
name
sizep
NC_NOERR
NC_EBADTYPEID
NC_ENOTNC4
NC_ESTRICTNC3
NC_EBADGRPID
NC_EBADID
NC_EHDFERR
This example is from the test program tst_enums.c, and it uses all the possible inquiry functions on an enum type.
/* Check it out. */ if (nc_inq_user_type(ncid, typeids[0], name_in, &base_size_in, &base_nc_type_in, &nfields_in, &class_in)) ERR; if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int) || base_nc_type_in != NC_INT || nfields_in != NUM_MEMBERS || class_in != NC_ENUM) ERR; if (nc_inq_type(ncid, typeids[0], name_in, &base_size_in)) ERR; if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int)) ERR; if (nc_inq_enum(ncid, typeids[0], name_in, &base_nc_type, &base_size_in, &num_members)) ERR; if (strcmp(name_in, TYPE_NAME) || base_nc_type != NC_INT || num_members != NUM_MEMBERS) ERR; for (i = 0; i < NUM_MEMBERS; i++) { if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; if (strcmp(name_in, member_name[i]) || value_in != member_value[i]) ERR; if (nc_inq_enum_ident(ncid, typeid, member_value[i], name_in)) ERR; if (strcmp(name_in, member_name[i])) ERR; } if (nc_close(ncid)) ERR;