[svn-r3196]
Purpose:
Adding Tutorial to development branch (R 1.4)
Platforms tested:
IE 5
This commit is contained in:
119
doc/html/Tutor/examples/h5_mount.c
Normal file
119
doc/html/Tutor/examples/h5_mount.c
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* This program shows the concept of "mounting files".
|
||||
* Program creates one file with group G in it, and another
|
||||
* file with dataset D. Then second file is mounted in the first one
|
||||
* under the "mounting point" G. Dataset D is accessed in the first file
|
||||
* under name /G/D and data is printed out.
|
||||
*/
|
||||
|
||||
#include<hdf5.h>
|
||||
|
||||
#define FILE1 "mount1.h5"
|
||||
#define FILE2 "mount2.h5"
|
||||
|
||||
#define RANK 2
|
||||
#define NX 4
|
||||
#define NY 5
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
hid_t fid1, fid2, gid; /* Files and group identifiers */
|
||||
hid_t did, tid, sid; /* Dataset and datatype identifiers */
|
||||
|
||||
herr_t status;
|
||||
hsize_t dims[] = {NX,NY}; /* Dataset dimensions */
|
||||
|
||||
int i, j;
|
||||
int bm[NX][NY], bm_out[NX][NY]; /* Data buffers */
|
||||
|
||||
/*
|
||||
* Initialization of buffer matrix "bm"
|
||||
*/
|
||||
for(i =0; i<NX; i++) {
|
||||
for(j = 0; j<NY; j++)
|
||||
bm[i][j] = i + j;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create first file and a group in it.
|
||||
*/
|
||||
fid1 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
||||
gid = H5Gcreate(fid1, "/G", 0);
|
||||
|
||||
/*
|
||||
* Close group and file
|
||||
*/
|
||||
H5Gclose(gid);
|
||||
H5Fclose(fid1);
|
||||
|
||||
/*
|
||||
* Create second file and dataset "D" in it.
|
||||
*/
|
||||
fid2 = H5Fcreate(FILE2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
||||
dims[0] = NX;
|
||||
dims[1] = NY;
|
||||
sid = H5Screate_simple(RANK, dims, NULL);
|
||||
did = H5Dcreate(fid2, "D", H5T_NATIVE_INT, sid, H5P_DEFAULT);
|
||||
|
||||
/*
|
||||
* Write data to the dataset.
|
||||
*/
|
||||
status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, bm);
|
||||
|
||||
/*
|
||||
* Close all identifiers.
|
||||
*/
|
||||
H5Sclose(sid);
|
||||
H5Dclose(did);
|
||||
H5Fclose(fid2);
|
||||
|
||||
/*
|
||||
* Reopen both files
|
||||
*/
|
||||
fid1 = H5Fopen(FILE1, H5F_ACC_RDONLY, H5P_DEFAULT);
|
||||
fid2 = H5Fopen(FILE2, H5F_ACC_RDONLY, H5P_DEFAULT);
|
||||
|
||||
/*
|
||||
* Mount second file under G in the first file.
|
||||
*/
|
||||
H5Fmount(fid1, "/G", fid2, H5P_DEFAULT);
|
||||
|
||||
/*
|
||||
* Access dataset D in the first file under /G/D name.
|
||||
*/
|
||||
did = H5Dopen(fid1,"/G/D");
|
||||
tid = H5Dget_type(did);
|
||||
status = H5Dread(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, bm_out);
|
||||
|
||||
/*
|
||||
* Print out the data.
|
||||
*/
|
||||
for(i=0; i<NX; i++){
|
||||
for(j=0; j<NY; j++)
|
||||
printf(" %d", bm_out[i][j]);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Close all identifers
|
||||
*/
|
||||
H5Tclose(tid);
|
||||
H5Dclose(did);
|
||||
|
||||
/*
|
||||
* Unmounting second file
|
||||
*/
|
||||
H5Funmount(fid1, "/G");
|
||||
|
||||
/*
|
||||
* Close both files
|
||||
*/
|
||||
H5Fclose(fid1);
|
||||
H5Fclose(fid2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user