Changeset 1729
- Timestamp:
- 02/11/11 14:49:48 (7 months ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
configure.ac (modified) (1 diff)
-
include/napi5.h (modified) (1 diff)
-
src/napi.c (modified) (4 diffs)
-
src/napi5.c (modified) (36 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/configure.ac
r1684 r1729 574 574 EXTRA_LDPATH="$EXTRA_LDPATH $HDF5_LDFLAGS" 575 575 HDF5_LDFLAGS="$HDF5_LDFLAGS -lhdf5 -lz" 576 HDF5_CPPFLAGS="-I$H5ROOT/include -DHDF5 -DH5 Acreate_vers=2 -DH5Aiterate_vers=2 -DH5Dcreate_vers=2 -DH5Dopen_vers=2 -DH5Eclear_vers=2 -DH5Eprint_vers=2 -DH5Epush_vers=2 -DH5Eset_auto_vers=2 -DH5Eget_auto_vers=2 -DH5Ewalk_vers=2 -DH5Gcreate_vers=2 -DH5Gopen_vers=2 -DH5Pget_filter_vers=2 -DH5Pget_filter_by_id_vers=2 -DH5Pinsert_vers=2 -DH5Pregister_vers=2 -DH5Rget_obj_type_vers=2 -DH5Tarray_create_vers=2 -DH5Tcommit_vers=2 -DH5Tget_array_dims_vers=2 -DH5Topen_vers=2"576 HDF5_CPPFLAGS="-I$H5ROOT/include -DHDF5 -DH5_NO_DEPRECATED_SYMBOLS -DH5Acreate_vers=2 -DH5Aiterate_vers=2 -DH5Dcreate_vers=2 -DH5Dopen_vers=2 -DH5Eclear_vers=2 -DH5Eprint_vers=2 -DH5Epush_vers=2 -DH5Eset_auto_vers=2 -DH5Eget_auto_vers=2 -DH5Ewalk_vers=2 -DH5Gcreate_vers=2 -DH5Gopen_vers=2 -DH5Pget_filter_vers=2 -DH5Pget_filter_by_id_vers=2 -DH5Pinsert_vers=2 -DH5Pregister_vers=2 -DH5Rget_obj_type_vers=2 -DH5Tarray_create_vers=2 -DH5Tcommit_vers=2 -DH5Tget_array_dims_vers=2 -DH5Topen_vers=2" 577 577 # HDF5_CPPFLAGS="-I$H5ROOT/include -DHDF5 -DH5_NO_DEPRECATED_SYMBOLS -DH5Acreate_vers=2 -DH5Aiterate_vers=2 -DH5Dcreate_vers=2 -DH5Dopen_vers=2 -DH5Eclear_vers=2 -DH5Eprint_vers=2 -DH5Epush_vers=2 -DH5Eset_auto_vers=2 -DH5Eget_auto_vers=2 -DH5Ewalk_vers=2 -DH5Gcreate_vers=2 -DH5Gopen_vers=2 -DH5Pget_filter_vers=2 -DH5Pget_filter_by_id_vers=2 -DH5Pinsert_vers=2 -DH5Pregister_vers=2 -DH5Rget_obj_type_vers=2 -DH5Tarray_create_vers=2 -DH5Tcommit_vers=2 -DH5Tget_array_dims_vers=2 -DH5Topen_vers=2" 578 578 ;; -
trunk/include/napi5.h
r1677 r1729 46 46 void NX5assignFunctions(pNexusFunction fHandle); 47 47 48 herr_t nxgroup_info(hid_t loc_id, const char *name, void *op_data);49 48 herr_t attr_info(hid_t loc_id, const char *name, const H5A_info_t *unused, void *opdata); 50 herr_t group_info(hid_t loc_id, const char *name, void *opdata); 49 herr_t group_info(hid_t loc_id, const char *name, const H5L_info_t *unused, void *opdata); 50 herr_t nxgroup_info(hid_t loc_id, const char *name, const H5L_info_t *unused, void *op_data); 51 51 52 52 #endif /* NAPI5_H */ -
trunk/src/napi.c
r1728 r1729 685 685 return status; 686 686 } 687 status = NXopenpath(fid, expath);687 status = NXopenpath(fid, expath); 688 688 NXgetgroupID(fid,&breakID); 689 689 setCloseID(fileStack,breakID); … … 1570 1570 necessary. This can happen with paths like ../ 1571 1571 */ 1572 if(strlen(name) < 1) 1573 { 1572 if (strlen(name) < 1) { 1574 1573 return NX_OK; 1575 1574 } 1576 1575 1577 1576 NXinitgroupdir(hfil); 1578 while(NXgetnextentry(hfil,name2,xclass,&datatype) != NX_EOD) 1579 {1580 1577 1578 while(NXgetnextentry(hfil, name2, xclass, &datatype) != NX_EOD) 1579 { 1581 1580 if(strcmp(name2,name) == 0) 1582 1581 { … … 1584 1583 { 1585 1584 return NXopendata(hfil,name); 1586 } 1587 else 1588 { 1585 } else { 1589 1586 return NXopengroup(hfil,name,xclass); 1590 1587 } … … 1617 1614 if(strcmp(name2,name) == 0) 1618 1615 { 1619 if(strcmp(xclass,"SDS") == 0) 1620 { 1616 if(strcmp(xclass,"SDS") == 0) { 1621 1617 return NX_EOD; 1622 1618 } -
trunk/src/napi5.c
r1728 r1729 403 403 } 404 404 /*------------------------------------------------------------------------*/ 405 NXstatus NX5opengroup (NXhandle fid, CONSTCHAR *name, CONSTCHAR *nxclass)405 NXstatus NX5opengroup(NXhandle fid, CONSTCHAR *name, CONSTCHAR *nxclass) 406 406 { 407 407 … … 413 413 414 414 pFile = NXI5assert (fid); 415 if (pFile->iCurrentG == 0) 416 { 415 if (pFile->iCurrentG == 0) { 417 416 strcpy(pBuffer,name); 418 } 419 else 420 { 417 } else { 421 418 sprintf(pBuffer,"%s/%s",pFile->name_tmp,name); 422 419 } 423 iRet = H5Gopen(pFile->iFID, (const char *)pBuffer, H5P_DEFAULT);420 iRet = H5Gopen(pFile->iFID, (const char *)pBuffer, H5P_DEFAULT); 424 421 if (iRet < 0) { 425 422 sprintf (pBuffer, "ERROR: group %s does not exist", pFile->name_tmp); … … 446 443 } 447 444 /* check contents of group attribute */ 448 attr1 = H5Aopen_ name(pFile->iCurrentG, "NX_class");445 attr1 = H5Aopen_by_name(pFile->iCurrentG, ".", "NX_class", H5P_DEFAULT, H5P_DEFAULT); 449 446 if (attr1 < 0) 450 447 { … … 952 949 H5Tset_size(aid1,datalen); 953 950 } 954 iRet = H5Aopen_ name(vid, name);951 iRet = H5Aopen_by_name(vid, ".", name, H5P_DEFAULT, H5P_DEFAULT); 955 952 if (iRet>0) { 956 953 H5Aclose(iRet); … … 1144 1141 return NX_ERROR; 1145 1142 } 1146 status = H5Aopen_ name(dataID,name);1143 status = H5Aopen_by_name(dataID,".", name, H5P_DEFAULT, H5P_DEFAULT); 1147 1144 if(status > 0) 1148 1145 { … … 1179 1176 char linkTarget[1024]; 1180 1177 int type = NX_CHAR; 1178 hid_t targetid; 1181 1179 1182 1180 pFile = NXI5assert (fid); … … 1202 1200 } 1203 1201 1204 H5Glink(pFile->iFID, H5G_LINK_HARD, sLink->targetPath, linkTarget); 1202 //targetid = H5Oopen(pFile->iFID, sLink->targetPath, H5P_DEFAULT); 1203 H5Lcreate_hard(pFile->iFID, sLink->targetPath, H5L_SAME_LOC, linkTarget, H5P_DEFAULT, H5P_DEFAULT); 1204 //H5Oclose(targetid); 1205 1205 1206 1206 return NX5settargetattribute(pFile,sLink); … … 1214 1214 int type = NX_CHAR; 1215 1215 char *itemName = NULL; 1216 hid_t targetid; 1216 1217 1217 1218 pFile = NXI5assert (fid); … … 1247 1248 } 1248 1249 1249 H5Glink(pFile->iFID, H5G_LINK_HARD, sLink->targetPath, linkTarget); 1250 //targetid = H5Oopen(pFile->iFID, sLink->targetPath, H5P_DEFAULT); 1251 H5Lcreate_hard(pFile->iFID, sLink->targetPath, H5L_SAME_LOC, linkTarget, H5P_DEFAULT, H5P_DEFAULT); 1252 //H5Oclose(targetid); 1250 1253 1251 1254 return NX5settargetattribute(pFile,sLink); … … 1283 1286 /* Operator function. */ 1284 1287 1285 herr_t nxgroup_info(hid_t loc_id, const char *name, void *op_data) 1286 { 1287 H5G_stat_t statbuf; 1288 pinfo self; 1289 1290 self = (pinfo)op_data; 1291 H5Gget_objinfo(loc_id, name, 0, &statbuf); 1292 switch (statbuf.type) 1293 { 1294 case H5G_GROUP: 1288 herr_t nxgroup_info(hid_t loc_id, const char *name, const H5L_info_t *statbuf, void *op_data) 1289 { 1290 pinfo self = (pinfo) op_data; 1291 H5O_info_t object_info; 1292 H5Oget_info_by_name(loc_id, name, &object_info, H5P_DEFAULT); 1293 switch ((object_info).type) { 1294 case H5O_TYPE_GROUP: 1295 1295 self->iname = strdup(name); 1296 self->type = H5 G_GROUP;1296 self->type = H5O_TYPE_GROUP; 1297 1297 break; 1298 case H5 G_DATASET:1298 case H5O_TYPE_DATASET: 1299 1299 self->iname = strdup(name); 1300 self->type = H5 G_DATASET;1300 self->type = H5O_TYPE_DATASET; 1301 1301 break; 1302 1302 default: 1303 // TODO defaults to group. not what we would want? 1303 1304 self->type=0; 1304 1305 break; … … 1310 1311 /* Operator function. */ 1311 1312 1312 herr_t group_info1(hid_t loc_id, const char *name, void *opdata) 1313 { 1314 H5G_stat_t statbuf; 1313 herr_t group_info1(hid_t loc_id, const char *name, const H5L_info_t *statbuf, void *opdata) 1314 { 1315 1315 int iNX = *((int*)opdata); 1316 H5Gget_objinfo(loc_id, name, 0, &statbuf); 1317 1318 switch (statbuf.type) 1319 { 1320 case H5G_GROUP: 1316 H5O_info_t object_info; 1317 H5Oget_info_by_name(loc_id, name, &object_info, H5P_DEFAULT); 1318 switch ((object_info).type) { 1319 case H5O_TYPE_GROUP: 1321 1320 iNX++; 1322 1321 *((int*)opdata)=iNX; 1323 1322 break; 1324 case H5 G_DATASET:1323 case H5O_TYPE_DATASET: 1325 1324 iNX++; 1326 1325 *((int*)opdata)=iNX; … … 1334 1333 /*-------------------------------------------------------------------------*/ 1335 1334 1336 NXstatus NX5getgroupinfo_recurse (NXhandle fid, int *iN, NXname pName, NXname pClass)1335 NXstatus NX5getgroupinfo_recurse(NXhandle fid, int *iN, NXname pName, NXname pClass) 1337 1336 { 1338 1337 pNexusFile5 pFile; 1339 hid_t atype, attr_id ;1338 hid_t atype, attr_id, grp; 1340 1339 char data[64]; 1341 1340 … … 1346 1345 strcpy (pClass, "NXroot"); 1347 1346 pFile->iNX=0; 1348 H5Giterate(pFile->iFID,"/",0,group_info1,&pFile->iNX); 1347 grp = H5Gopen(pFile->iFID,"/",H5P_DEFAULT); 1348 H5Literate(grp, H5_INDEX_NAME, H5_ITER_INC, 0, group_info1, &pFile->iNX); 1349 H5Gclose(grp); 1349 1350 *iN=pFile->iNX; 1350 1351 } 1351 1352 else { 1352 1353 strcpy (pName,pFile->name_ref); 1353 attr_id = H5Aopen_ name(pFile->iCurrentG,"NX_class");1354 attr_id = H5Aopen_by_name(pFile->iCurrentG,".", "NX_class", H5P_DEFAULT, H5P_DEFAULT); 1354 1355 if (attr_id<0) { 1355 1356 strcpy(pClass, NX_UNKNOWN_GROUP); … … 1360 1361 strcpy(pClass,data); 1361 1362 pFile->iNX=0; 1362 H5Giterate(pFile->iFID,pFile->name_ref,0,group_info1, &pFile->iNX); 1363 grp = H5Gopen(pFile->iFID,pFile->name_ref,H5P_DEFAULT); 1364 H5Literate(grp, H5_INDEX_NAME, H5_ITER_INC, 0, group_info1, &pFile->iNX); 1365 H5Gclose(grp); 1363 1366 *iN=pFile->iNX; 1364 1367 H5Aclose(attr_id); … … 1371 1374 { 1372 1375 int count = 0, type; 1373 hsize_t numobj, i;1376 H5G_info_t numobj; 1374 1377 1375 1378 herr_t status; 1376 1379 1377 status = H5Gget_ num_objs(loc_id, &numobj);1380 status = H5Gget_info(loc_id, &numobj); 1378 1381 if(status < 0) { 1379 1382 NXReportError("Internal error, failed to retrive no of objects"); … … 1381 1384 } 1382 1385 1383 for(i = 0; i < numobj; i++){ 1384 type = H5Gget_objtype_by_idx(loc_id,i); 1385 if(type == H5G_GROUP || type == H5G_DATASET){ 1386 count++; 1387 } 1388 } 1386 count = numobj.nlinks; 1389 1387 return count; 1390 1388 } … … 1395 1393 hid_t atype, attr_id, gid; 1396 1394 char data[64]; 1397 1395 1398 1396 pFile = NXI5assert (fid); 1399 1397 /* check if there is a group open */ … … 1407 1405 else { 1408 1406 strcpy (pName,pFile->name_ref); 1409 attr_id = H5Aopen_ name(pFile->iCurrentG,"NX_class");1407 attr_id = H5Aopen_by_name(pFile->iCurrentG,".", "NX_class", H5P_DEFAULT, H5P_DEFAULT); 1410 1408 if (attr_id<0) { 1411 1409 strcpy(pClass, NX_UNKNOWN_GROUP); … … 1574 1572 /*-------------------------------------------------------------------------*/ 1575 1573 1576 NXstatus NX5getnextentry (NXhandle fid,NXname name, NXname nxclass, int *datatype)1574 NXstatus NX5getnextentry(NXhandle fid, NXname name, NXname nxclass, int *datatype) 1577 1575 { 1578 1576 pNexusFile5 pFile; … … 1580 1578 herr_t iRet; 1581 1579 int iPtype, i; 1582 intidx;1580 hsize_t idx; 1583 1581 H5T_class_t tclass; 1584 1582 char data[128]; … … 1599 1597 strcpy(pFile->name_ref,"/"); 1600 1598 } 1601 iRet=H5Giterate(pFile->iFID,pFile->name_ref,&idx,nxgroup_info,&op_data); 1599 grp = H5Gopen(pFile->iFID, pFile->name_ref, H5P_DEFAULT); 1600 // index can be wrong here 1601 iRet=H5Literate(grp, H5_INDEX_NAME, H5_ITER_INC, &idx, nxgroup_info, &op_data); 1602 H5Gclose(grp); 1602 1603 strcpy(nxclass, NX_UNKNOWN_GROUP); 1603 1604 … … 1607 1608 */ 1608 1609 if (pFile->iCurrentG == 0) { 1610 // if pFile->iCurrentG == 0 would not pFile->name_ref be "/" already, so we could skip that if statement ? 1609 1611 pFile->iNX=0; 1610 iRet_iNX = H5Giterate(pFile->iFID,"/",0,group_info1,&pFile->iNX); 1612 grp = H5Gopen(pFile->iFID, "/", H5P_DEFAULT); 1613 iRet_iNX=H5Literate(grp, H5_INDEX_NAME, H5_ITER_INC, 0, group_info1, &pFile->iNX); 1614 H5Gclose(grp); 1611 1615 } else { 1612 1616 pFile->iNX=0; 1613 iRet_iNX = H5Giterate(pFile->iFID,pFile->name_ref,0,group_info1, &pFile->iNX); 1617 grp = H5Gopen(pFile->iFID, pFile->name_ref, H5P_DEFAULT); 1618 // index can be wrong here 1619 iRet_iNX=H5Literate(grp, H5_INDEX_NAME, H5_ITER_INC, 0, group_info1, &pFile->iNX); 1620 H5Gclose(grp); 1614 1621 } 1615 1622 if (idx == pFile->iNX) { 1623 // why 2? 1616 1624 iRet_iNX = 2; 1617 1625 } … … 1627 1635 return NX_EOD; 1628 1636 } 1629 if (op_data.type == H5G_GROUP) 1630 { 1637 if (op_data.type == H5O_TYPE_GROUP) { 1631 1638 /* 1632 1639 open group and find class name attribute … … 1641 1648 grp = H5Gopen(pFile->iFID,ph_name, H5P_DEFAULT); 1642 1649 if (grp < 0) { 1643 sprintf (pBuffer, "ERROR: group %s does not exist", ph_name);1644 NXReportError( pBuffer);1650 sprintf(pBuffer, "ERROR: group %s does not exist", ph_name); 1651 NXReportError(pBuffer); 1645 1652 return NX_ERROR; 1646 1653 } 1647 attr1 = H5Aopen_ name(grp, "NX_class");1654 attr1 = H5Aopen_by_name(grp,".", "NX_class", H5P_DEFAULT, H5P_DEFAULT); 1648 1655 if (attr1 < 0) { 1649 1656 strcpy(nxclass, NX_UNKNOWN_GROUP); … … 1658 1665 } 1659 1666 H5Gclose(grp); 1660 } else if (op_data.type==H5G_DATASET) 1661 { 1667 } else if (op_data.type==H5O_TYPE_DATASET) { 1662 1668 /* 1663 1669 open dataset and find type … … 1675 1681 } 1676 1682 return NX_OK; 1677 } 1678 else 1679 { 1683 } else { 1680 1684 /* 1681 1685 we are at the end of the search: clear the data structure and reset … … 1692 1696 free(op_data.iname); 1693 1697 } 1694 NXReportError( 1695 "ERROR: Iteration (directory) was not successful"); 1698 NXReportError("ERROR: iterating through group not successful"); 1696 1699 return NX_ERROR; 1697 1700 } … … 1901 1904 hsize_t idx, intern_idx=-1; 1902 1905 int vid; 1906 H5O_info_t oinfo; 1903 1907 1904 1908 pFile = NXI5assert (fileid); … … 1909 1913 idx=pFile->iAtt5.iCurrentIDX; 1910 1914 iRet=0; 1911 // TODO replace 1912 intern_idx=H5Aget_num_attrs(vid); 1915 1916 H5Oget_info(vid, &oinfo); 1917 intern_idx=oinfo.num_attrs; 1913 1918 if(intern_idx == idx) { 1914 1919 killAttVID(pFile,vid); … … 1917 1922 1918 1923 if (intern_idx > idx) { 1919 /* iRet=H5Aiterate(vid,&idx,attr_info,&iname); */1920 1924 iRet=H5Aiterate(vid,H5_INDEX_CRT_ORDER,H5_ITER_INC,&idx,attr_info,&iname); 1921 1925 } else { … … 1943 1947 strcpy(pName,"What is this?"); 1944 1948 } 1945 pFile->iCurrentA = H5Aopen_ name(vid, pName);1949 pFile->iCurrentA = H5Aopen_by_name(vid, ".", pName, H5P_DEFAULT, H5P_DEFAULT); 1946 1950 atype = H5Aget_type(pFile->iCurrentA); 1947 1951 aspace = H5Aget_space(pFile->iCurrentA); … … 1962 1966 H5Aclose(pFile->iCurrentA); 1963 1967 1964 intern_idx=H5Aget_num_attrs(vid); 1968 H5Oget_info(vid, &oinfo); 1969 intern_idx=oinfo.num_attrs; 1965 1970 1966 1971 killAttVID(pFile,vid); … … 1983 1988 1984 1989 vid = getAttVID(pFile); 1985 iNew = H5Aopen_ name(vid, name);1990 iNew = H5Aopen_by_name(vid, ".", name, H5P_DEFAULT, H5P_DEFAULT); 1986 1991 if (iNew < 0) { 1987 1992 sprintf (pBuffer, "ERROR: attribute \"%s\" not found", name); … … 2028 2033 pNexusFile5 pFile; 2029 2034 char *iname = NULL; 2030 unsigned int idx;2035 hid_t idx; 2031 2036 int vid; 2037 H5O_info_t oinfo; 2032 2038 2033 2039 pFile = NXI5assert (fid); … … 2037 2043 vid = getAttVID(pFile); 2038 2044 2039 idx=H5Aget_num_attrs(vid); 2045 H5Oget_info(vid, &oinfo); 2046 idx=oinfo.num_attrs; 2040 2047 if (idx > 0) { 2041 2048 if(pFile->iCurrentG > 0 && pFile->iCurrentD == 0){ … … 2162 2169 fHandle->nxinitattrdir=NX5initattrdir; 2163 2170 fHandle->nxprintlink=NX5printlink; 2164 fHandle->nxnativeexternallink=NX5nativeexternallink; 2171 // fHandle->nxnativeexternallink=NX5nativeexternallink; 2172 fHandle->nxnativeexternallink=NULL; 2165 2173 } 2166 2174
Note: See TracChangeset
for help on using the changeset viewer.
