diff options
Diffstat (limited to 'examples/h5_select.c')
-rw-r--r-- | examples/h5_select.c | 286 |
1 files changed, 144 insertions, 142 deletions
diff --git a/examples/h5_select.c b/examples/h5_select.c index 1ad3c04..fe4850b 100644 --- a/examples/h5_select.c +++ b/examples/h5_select.c @@ -31,8 +31,7 @@ #define NPOINTS 4 /* Number of points that will be selected and overwritten */ -int -main (void) +int main (void) { hid_t file, dataset; /* File and dataset identifiers */ @@ -56,151 +55,154 @@ main (void) int matrix[MSPACE_DIM1][MSPACE_DIM2]; int vector[MSPACE1_DIM]; int values[] = {53, 59, 61, 67}; /* New values to be written */ -/* - * Buffers' initialization. - */ -vector[0] = vector[MSPACE1_DIM - 1] = -1; -for (i = 1; i < MSPACE1_DIM - 1; i++) vector[i] = i; - -for (i = 0; i < MSPACE_DIM1; i++) { - for (j = 0; j < MSPACE_DIM2; j++) - matrix[i][j] = 0; -} -/* - * Create a file. - */ -file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); -/* - * Create dataspace for the dataset in the file. - */ -fid = H5Screate_simple(FSPACE_RANK, fdim, NULL); - -/* - * Create dataset and write it into the file. - */ -dataset = H5Dcreate(file, "Matrix in file", H5T_NATIVE_INT, fid, H5P_DEFAULT); -ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, matrix); - -/* - * Select hyperslab for the dataset in the file, using 3x2 blocks, (4,3) stride - * (2,4) count starting at the position (0,1). - */ -start[0] = 0; start[1] = 1; -stride[0] = 4; stride[1] = 3; -count[0] = 2; count[1] = 4; -block[0] = 3; block[1] = 2; -ret = H5Sselect_hyperslab(fid, H5S_SELECT_SET, start, stride, count, block); - -/* - * Create dataspace for the first dataset. - */ -mid1 = H5Screate_simple(MSPACE1_RANK, dim1, NULL); - -/* - * Select hyperslab. - * We will use 48 elements of the vector buffer starting at the second element. - * Selected elements are 1 2 3 . . . 48 - */ -start[0] = 1; -stride[0] = 1; -count[0] = 48; -block[0] = 1; -ret = H5Sselect_hyperslab(mid1, H5S_SELECT_SET, start, stride, count, block); + /* + * Buffers' initialization. + */ + vector[0] = vector[MSPACE1_DIM - 1] = -1; + for (i = 1; i < MSPACE1_DIM - 1; i++) vector[i] = i; + + for (i = 0; i < MSPACE_DIM1; i++) { + for (j = 0; j < MSPACE_DIM2; j++) + matrix[i][j] = 0; + } + + /* + * Create a file. + */ + file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + /* + * Create dataspace for the dataset in the file. + */ + fid = H5Screate_simple(FSPACE_RANK, fdim, NULL); + + /* + * Create dataset and write it into the file. + */ + dataset = H5Dcreate(file, "Matrix in file", H5T_NATIVE_INT, fid, H5P_DEFAULT); + ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, matrix); + + /* + * Select hyperslab for the dataset in the file, using 3x2 blocks, + * (4,3) stride and (2,4) count starting at the position (0,1). + */ + start[0] = 0; start[1] = 1; + stride[0] = 4; stride[1] = 3; + count[0] = 2; count[1] = 4; + block[0] = 3; block[1] = 2; + ret = H5Sselect_hyperslab(fid, H5S_SELECT_SET, start, stride, count, block); + + /* + * Create dataspace for the first dataset. + */ + mid1 = H5Screate_simple(MSPACE1_RANK, dim1, NULL); + + /* + * Select hyperslab. + * We will use 48 elements of the vector buffer starting at the second element. + * Selected elements are 1 2 3 . . . 48 + */ + start[0] = 1; + stride[0] = 1; + count[0] = 48; + block[0] = 1; + ret = H5Sselect_hyperslab(mid1, H5S_SELECT_SET, start, stride, count, block); -/* - * Write selection from the vector buffer to the dataset in the file. - * - * File dataset should look like this: - * 0 1 2 0 3 4 0 5 6 0 7 8 - * 0 9 10 0 11 12 0 13 14 0 15 16 - * 0 17 18 0 19 20 0 21 22 0 23 24 - * 0 0 0 0 0 0 0 0 0 0 0 0 - * 0 25 26 0 27 28 0 29 30 0 31 32 - * 0 33 34 0 35 36 0 37 38 0 39 40 - * 0 41 42 0 43 44 0 45 46 0 47 48 - * 0 0 0 0 0 0 0 0 0 0 0 0 - */ -ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid1, fid, H5P_DEFAULT, vector); - -/* - * Reset the selection for the file dataspace fid. - */ -ret = H5Sselect_none(fid); - -/* - * Create dataspace for the second dataset. - */ -mid2 = H5Screate_simple(MSPACE2_RANK, dim2, NULL); - -/* - * Select sequence of NPOINTS points in the file dataspace. - */ -coord[0][0] = 0; coord[0][1] = 0; -coord[1][0] = 3; coord[1][1] = 3; -coord[2][0] = 3; coord[2][1] = 5; -coord[3][0] = 5; coord[3][1] = 6; - -ret = H5Sselect_elements(fid, H5S_SELECT_SET, NPOINTS, - (const hssize_t **)coord); - -/* - * Write new selection of points to the dataset. - */ -ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid2, fid, H5P_DEFAULT, values); - -/* - * File dataset should look like this: - * 53 1 2 0 3 4 0 5 6 0 7 8 - * 0 9 10 0 11 12 0 13 14 0 15 16 - * 0 17 18 0 19 20 0 21 22 0 23 24 - * 0 0 0 59 0 61 0 0 0 0 0 0 - * 0 25 26 0 27 28 0 29 30 0 31 32 - * 0 33 34 0 35 36 67 37 38 0 39 40 - * 0 41 42 0 43 44 0 45 46 0 47 48 - * 0 0 0 0 0 0 0 0 0 0 0 0 - * - */ + /* + * Write selection from the vector buffer to the dataset in the file. + * + * File dataset should look like this: + * 0 1 2 0 3 4 0 5 6 0 7 8 + * 0 9 10 0 11 12 0 13 14 0 15 16 + * 0 17 18 0 19 20 0 21 22 0 23 24 + * 0 0 0 0 0 0 0 0 0 0 0 0 + * 0 25 26 0 27 28 0 29 30 0 31 32 + * 0 33 34 0 35 36 0 37 38 0 39 40 + * 0 41 42 0 43 44 0 45 46 0 47 48 + * 0 0 0 0 0 0 0 0 0 0 0 0 + */ + ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid1, fid, H5P_DEFAULT, vector); + + /* + * Reset the selection for the file dataspace fid. + */ + ret = H5Sselect_none(fid); + + /* + * Create dataspace for the second dataset. + */ + mid2 = H5Screate_simple(MSPACE2_RANK, dim2, NULL); + + /* + * Select sequence of NPOINTS points in the file dataspace. + */ + coord[0][0] = 0; coord[0][1] = 0; + coord[1][0] = 3; coord[1][1] = 3; + coord[2][0] = 3; coord[2][1] = 5; + coord[3][0] = 5; coord[3][1] = 6; + + ret = H5Sselect_elements(fid, H5S_SELECT_SET, NPOINTS, + (const hssize_t **)coord); + + /* + * Write new selection of points to the dataset. + */ + ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid2, fid, H5P_DEFAULT, values); + + /* + * File dataset should look like this: + * 53 1 2 0 3 4 0 5 6 0 7 8 + * 0 9 10 0 11 12 0 13 14 0 15 16 + * 0 17 18 0 19 20 0 21 22 0 23 24 + * 0 0 0 59 0 61 0 0 0 0 0 0 + * 0 25 26 0 27 28 0 29 30 0 31 32 + * 0 33 34 0 35 36 67 37 38 0 39 40 + * 0 41 42 0 43 44 0 45 46 0 47 48 + * 0 0 0 0 0 0 0 0 0 0 0 0 + * + */ -/* - * Close memory file and memory dataspaces. - */ -ret = H5Sclose(mid1); -ret = H5Sclose(mid2); -ret = H5Sclose(fid); + /* + * Close memory file and memory dataspaces. + */ + ret = H5Sclose(mid1); + ret = H5Sclose(mid2); + ret = H5Sclose(fid); -/* - * Close dataset. - */ -ret = H5Dclose(dataset); - -/* - * Close the file. - */ -ret = H5Fclose(file); -/* - * Open the file. - */ -file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); - -/* - * Open the dataset. - */ -dataset = dataset = H5Dopen(file,"Matrix in file"); - -/* - * Read data back to the buffer matrix. - */ -ret = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, + /* + * Close dataset. + */ + ret = H5Dclose(dataset); + + /* + * Close the file. + */ + ret = H5Fclose(file); + + /* + * Open the file. + */ + file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + + /* + * Open the dataset. + */ + dataset = dataset = H5Dopen(file,"Matrix in file"); + + /* + * Read data back to the buffer matrix. + */ + ret = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, matrix); -/* - * Display the result. - */ -for (i=0; i < MSPACE_DIM1; i++) { - for(j=0; j < MSPACE_DIM2; j++) printf("%3d ", matrix[i][j]); - printf("\n"); -} + /* + * Display the result. + */ + for (i=0; i < MSPACE_DIM1; i++) { + for(j=0; j < MSPACE_DIM2; j++) printf("%3d ", matrix[i][j]); + printf("\n"); + } -return 0; + return 0; } |