The following inquiry functions provide information about user defined types.
/* Find out about a user defined type. */ EXTERNL int nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size, nc_type *base_nc_typep, size_t *nfieldsp, int *classp); /* Get information about an enum type: it's name, base type and the * number of members defined. */ EXTERNL int nc_inq_enum(int ncid, nc_type xtype, char *name, nc_type *base_nc_typep, size_t *base_sizep, size_t *num_membersp); /* Get information about an enum member: a name and value. Name size * will be <= NC_MAX_NAME. */ EXTERNL int nc_inq_enum_member(int ncid, nc_type xtype, int idx, char *name, void *value); /* Get enum name from enum value. Name size will be <= NC_MAX_NAME. */ EXTERNL int nc_inq_enum_name(int ncid, nc_type xtype, long long value, char *name); /* Get information about an opaque type. */ EXTERNL int nc_inq_opaque(int ncid, nc_type xtype, char *name, size_t *sizep); /* Get the name and size of a type. */ EXTERNL int nc_inq_type(int ncid, nc_type xtype, char *name, size_t *size); /* Get the name, size, and number of fields in a compound type. */ EXTERNL int nc_inq_compound(int ncid, nc_type xtype, char *name, size_t *size, size_t *nfieldsp); /* Get the name of a compound type. */ EXTERNL int nc_inq_compound_name(int ncid, nc_type xtype, char *name); /* Get the size of a compound type. */ EXTERNL int nc_inq_compound_size(int ncid, nc_type xtype, size_t *size); /* Get the number of fields in this compound type. */ EXTERNL int nc_inq_compound_nfields(int ncid, nc_type xtype, size_t *nfieldsp); /* Given the xtype and the fieldid, get all info about it. */ EXTERNL int nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, char *name, size_t *offsetp, nc_type *field_typeidp, int *ndimsp, int *dim_sizesp); /* Given the typeid and the fieldid, get the name. */ EXTERNL int nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, char *name); /* Given the xtype and the name, get the fieldid. */ EXTERNL int nc_inq_compound_fieldindex(int ncid, nc_type xtype, char *name, int *fieldidp); /* Given the xtype and fieldid, get the offset. */ EXTERNL int nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, size_t *offsetp); /* Given the xtype and the fieldid, get the type of that field. */ EXTERNL int nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, nc_type *field_typeidp); /* Given the xtype and the fieldid, get the number of dimensions for * that field (scalars are 0). */ EXTERNL int nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, int *ndimsp); /* Given the xtype and the fieldid, get the sizes of dimensions for * that field. User must have allocated storage for the dim_sizes. */ EXTERNL int nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid, int *dim_sizes); /* Find out about a vlen. */ EXTERNL int nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t *datum_sizep, nc_type *base_nc_typep);