15 #include "nc4internal.h"
16 #include "nc4dispatch.h"
33 NC4_inq_unlimdim(
int ncid,
int *unlimdimidp)
35 NC_GRP_INFO_T *grp, *g;
42 LOG((2,
"%s: called", __func__));
44 if ((retval = nc4_find_grp_h5(ncid, &grp, &h5)))
53 for (g = grp; g && !found; g = g->parent)
55 for(i=0;i<ncindexsize(grp->dim);i++)
57 dim = (NC_DIM_INFO_T*)ncindexith(grp->dim,i);
58 if(dim == NULL)
continue;
61 *unlimdimidp = dim->hdr.id;
86 NC4_inq_dimid(
int ncid,
const char *name,
int *idp)
89 NC_GRP_INFO_T *grp = NULL;
90 NC_GRP_INFO_T *g = NULL;
91 NC_FILE_INFO_T *h5 = NULL;
92 NC_DIM_INFO_T *dim = NULL;
97 LOG((2,
"%s: ncid 0x%x name %s", __func__, ncid, name));
106 if (name[0] !=
'/' && strstr(name,
"/"))
110 if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5)))
112 assert(h5 && nc && grp);
115 if ((retval = nc4_normalize_name(name, norm_name)))
121 int rootncid = (grp->nc4_info->root_grp->hdr.id | grp->nc4_info->controller->ext_ncid);
123 char* lastname = strrchr(norm_name,
'/');
124 if(lastname == norm_name)
127 if((retval = NC4_inq_grp_full_ncid(rootncid,norm_name,&parent)))
130 if((retval=nc4_find_nc4_grp(parent,&grp)))
133 dim = (NC_DIM_INFO_T*)ncindexlookup(grp->dim,lastname);
141 for (g = grp; g ; g = g->parent) {
142 dim = (NC_DIM_INFO_T*)ncindexlookup(g->dim,norm_name);
143 if(dim != NULL) {found = 1;
break;}
173 NC4_inq_unlimdims(
int ncid,
int *nunlimdimsp,
int *unlimdimidsp)
183 LOG((2,
"%s: ncid 0x%x", __func__, ncid));
186 if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5)))
188 assert(h5 && nc && grp);
193 for(i=0;i<ncindexsize(grp->dim);i++)
195 dim = (NC_DIM_INFO_T*)ncindexith(grp->dim,i);
196 if(dim == NULL)
continue;
200 unlimdimidsp[num_unlim] = dim->hdr.id;
208 *nunlimdimsp = num_unlim;