mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-06 14:56:51 +08:00
ac90ad84f6
H5Dopen(grp, dataset) functions. Tested on SUN Sparc (baldric)
151 lines
3.4 KiB
C
151 lines
3.4 KiB
C
/*
|
|
* This example creates a group in the file and dataset in the group.
|
|
* Hard link to the group object is created and the dataset is accessed
|
|
* under different names.
|
|
* Iterator function is used to find the object names in the root group.
|
|
*/
|
|
|
|
|
|
#include "hdf5.h"
|
|
|
|
|
|
#define FILE "group.h5"
|
|
#define RANK 2
|
|
|
|
|
|
herr_t file_info(hid_t loc_id, const char *name, void *opdata);
|
|
/* Operator function */
|
|
int
|
|
main(void)
|
|
{
|
|
|
|
hid_t file;
|
|
hid_t grp;
|
|
hid_t dataset, dataspace;
|
|
hid_t plist;
|
|
|
|
herr_t status;
|
|
hsize_t dims[2];
|
|
hsize_t cdims[2];
|
|
|
|
int idx;
|
|
|
|
/*
|
|
* Create a file.
|
|
*/
|
|
file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
|
|
|
/*
|
|
* Create a group in the file.
|
|
*/
|
|
grp = H5Gcreate(file, "/Data", 0);
|
|
|
|
/*
|
|
* Create dataset "Compressed Data" in the group using absolute
|
|
* name. Dataset creation property list is modified to use
|
|
* GZIP compression with the compression effort set to 6.
|
|
* Note that compression can be used only when dataset is chunked.
|
|
*/
|
|
dims[0] = 1000;
|
|
dims[1] = 20;
|
|
cdims[0] = 20;
|
|
cdims[1] = 20;
|
|
dataspace = H5Screate_simple(RANK, dims, NULL);
|
|
plist = H5Pcreate(H5P_DATASET_CREATE);
|
|
H5Pset_chunk(plist, 2, cdims);
|
|
H5Pset_deflate( plist, 6);
|
|
dataset = H5Dcreate(file, "/Data/Compressed_Data", H5T_NATIVE_INT,
|
|
dataspace, plist);
|
|
|
|
/*
|
|
* Close the dataset and the file.
|
|
*/
|
|
H5Sclose(dataspace);
|
|
H5Dclose(dataset);
|
|
H5Fclose(file);
|
|
|
|
/*
|
|
* Now reopen the file and group in the file.
|
|
*/
|
|
file = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
|
|
grp = H5Gopen(file, "Data");
|
|
|
|
/*
|
|
* Access "Compressed_Data" dataset in the group.
|
|
*/
|
|
dataset = H5Dopen(grp, "Compressed_Data");
|
|
if( dataset < 0) printf(" Dataset is not found. \n");
|
|
printf("\"/Data/Compressed_Data\" dataset is open \n");
|
|
|
|
/*
|
|
* Close the dataset.
|
|
*/
|
|
status = H5Dclose(dataset);
|
|
|
|
/*
|
|
* Create hard link to the Data group.
|
|
*/
|
|
status = H5Glink(file, H5G_LINK_HARD, "Data", "Data_new");
|
|
|
|
/*
|
|
* We can access "Compressed_Data" dataset using created
|
|
* hard link "Data_new".
|
|
*/
|
|
dataset = H5Dopen(file, "/Data_new/Compressed_Data");
|
|
if( dataset < 0) printf(" Dataset is not found. \n");
|
|
printf("\"/Data_new/Compressed_Data\" dataset is open \n");
|
|
|
|
/*
|
|
* Close the dataset.
|
|
*/
|
|
status = H5Dclose(dataset);
|
|
|
|
/*
|
|
* Use iterator to see the names of the objects in the file
|
|
* root directory.
|
|
*/
|
|
idx = H5Giterate(file, "/", NULL, file_info, NULL);
|
|
|
|
/*
|
|
* Unlink name "Data" and use iterator to see the names
|
|
* of the objects in the file root direvtory.
|
|
*/
|
|
if (H5Gunlink(file, "Data") < 0)
|
|
printf(" H5Gunlink failed \n");
|
|
else
|
|
printf("\"Data\" is unlinked \n");
|
|
|
|
idx = H5Giterate(file, "/", NULL, file_info, NULL);
|
|
|
|
|
|
/*
|
|
* Close the file.
|
|
*/
|
|
|
|
status = H5Fclose(file);
|
|
|
|
return 0;
|
|
}
|
|
/*
|
|
* Operator function.
|
|
*/
|
|
herr_t
|
|
file_info(hid_t loc_id, const char *name, void *opdata)
|
|
{
|
|
hid_t grp;
|
|
/*
|
|
* Open the group using its name.
|
|
*/
|
|
grp = H5Gopen(loc_id, name);
|
|
|
|
/*
|
|
* Display group name.
|
|
*/
|
|
printf("\n");
|
|
printf("Name : ");
|
|
puts(name);
|
|
|
|
H5Gclose(grp);
|
|
return 0;
|
|
}
|