-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Most of this will vanish when all examples are ported to C++. Update #318
- Loading branch information
1 parent
96ebc09
commit 52e4de9
Showing
187 changed files
with
16,600 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#----------------------------------------------------------------------------- | ||
# Define Sources, one file per application | ||
#----------------------------------------------------------------------------- | ||
set (examples | ||
h5ex_d_alloc.c | ||
h5ex_d_checksum.c | ||
h5ex_d_chunk.c | ||
h5ex_d_compact.c | ||
h5ex_d_extern.c | ||
h5ex_d_fillval.c | ||
h5ex_d_gzip.c | ||
h5ex_d_hyper.c | ||
h5ex_d_nbit.c | ||
h5ex_d_rdwr.c | ||
h5ex_d_soint.c | ||
h5ex_d_transform.c | ||
h5ex_d_unlimmod.c | ||
h5ex_d_shuffle.c | ||
h5ex_d_sofloat.c | ||
h5ex_d_unlimadd.c | ||
h5ex_d_unlimgzip.c | ||
) | ||
if (HDF5_ENABLE_SZIP_SUPPORT) | ||
set (examples ${examples} h5ex_d_szip.c) | ||
endif () |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
/************************************************************ | ||
This example shows how to set the space allocation time | ||
for a dataset. The program first creates two datasets, | ||
one with the default allocation time (late) and one with | ||
early allocation time, and displays whether each has been | ||
allocated and their allocation size. Next, it writes data | ||
to the datasets, and again displays whether each has been | ||
allocated and their allocation size. | ||
This file is intended for use with HDF5 Library version 1.8 | ||
************************************************************/ | ||
|
||
#include "hdf5.h" | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
|
||
#define FILE "h5ex_d_alloc.h5" | ||
#define DATASET1 "DS1" | ||
#define DATASET2 "DS2" | ||
#define DIM0 4 | ||
#define DIM1 7 | ||
#define FILLVAL 99 | ||
|
||
int | ||
main (void) | ||
{ | ||
hid_t file, space, dset1, dset2, dcpl; | ||
/* Handles */ | ||
herr_t status; | ||
H5D_space_status_t space_status; | ||
hsize_t dims[2] = {DIM0, DIM1}, | ||
storage_size; | ||
int wdata[DIM0][DIM1], /* Write buffer */ | ||
i, j; | ||
|
||
/* | ||
* Initialize data. | ||
*/ | ||
for (i=0; i<DIM0; i++) | ||
for (j=0; j<DIM1; j++) | ||
wdata[i][j] = i * j - j; | ||
|
||
/* | ||
* Create a new file using the default properties. | ||
*/ | ||
file = H5Fcreate (FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); | ||
|
||
/* | ||
* Create dataspace. Setting maximum size to NULL sets the maximum | ||
* size to be the current size. | ||
*/ | ||
space = H5Screate_simple (2, dims, NULL); | ||
|
||
/* | ||
* Create the dataset creation property list, and set the chunk | ||
* size. | ||
*/ | ||
dcpl = H5Pcreate (H5P_DATASET_CREATE); | ||
|
||
/* | ||
* Set the allocation time to "early". This way we can be sure | ||
* that reading from the dataset immediately after creation will | ||
* return the fill value. | ||
*/ | ||
status = H5Pset_alloc_time (dcpl, H5D_ALLOC_TIME_EARLY); | ||
|
||
printf ("Creating datasets...\n"); | ||
printf ("%s has allocation time H5D_ALLOC_TIME_LATE\n", DATASET1); | ||
printf ("%s has allocation time H5D_ALLOC_TIME_EARLY\n\n", DATASET2); | ||
|
||
/* | ||
* Create the dataset using the dataset creation property list. | ||
*/ | ||
dset1 = H5Dcreate (file, DATASET1, H5T_STD_I32LE, space, H5P_DEFAULT, | ||
H5P_DEFAULT, H5P_DEFAULT); | ||
dset2 = H5Dcreate (file, DATASET2, H5T_STD_I32LE, space, H5P_DEFAULT, dcpl, | ||
H5P_DEFAULT); | ||
|
||
/* | ||
* Retrieve and print space status and storage size for dset1. | ||
*/ | ||
status = H5Dget_space_status (dset1, &space_status); | ||
storage_size = H5Dget_storage_size (dset1); | ||
printf ("Space for %s has%sbeen allocated.\n", DATASET1, | ||
space_status == H5D_SPACE_STATUS_ALLOCATED ? " " : " not "); | ||
printf ("Storage size for %s is: %ld bytes.\n", DATASET1, | ||
(long) storage_size); | ||
|
||
/* | ||
* Retrieve and print space status and storage size for dset2. | ||
*/ | ||
status = H5Dget_space_status (dset2, &space_status); | ||
storage_size = H5Dget_storage_size (dset2); | ||
printf ("Space for %s has%sbeen allocated.\n", DATASET2, | ||
space_status == H5D_SPACE_STATUS_ALLOCATED ? " " : " not "); | ||
printf ("Storage size for %s is: %ld bytes.\n", DATASET2, | ||
(long) storage_size); | ||
|
||
printf ("\nWriting data...\n\n"); | ||
|
||
/* | ||
* Write the data to the datasets. | ||
*/ | ||
status = H5Dwrite (dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, | ||
wdata[0]); | ||
status = H5Dwrite (dset2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, | ||
wdata[0]); | ||
|
||
/* | ||
* Retrieve and print space status and storage size for dset1. | ||
*/ | ||
status = H5Dget_space_status (dset1, &space_status); | ||
storage_size = H5Dget_storage_size (dset1); | ||
printf ("Space for %s has%sbeen allocated.\n", DATASET1, | ||
space_status == H5D_SPACE_STATUS_ALLOCATED ? " " : " not "); | ||
printf ("Storage size for %s is: %ld bytes.\n", DATASET1, | ||
(long) storage_size); | ||
|
||
/* | ||
* Retrieve and print space status and storage size for dset2. | ||
*/ | ||
status = H5Dget_space_status (dset2, &space_status); | ||
storage_size = H5Dget_storage_size (dset2); | ||
printf ("Space for %s has%sbeen allocated.\n", DATASET2, | ||
space_status == H5D_SPACE_STATUS_ALLOCATED ? " " : " not "); | ||
printf ("Storage size for %s is: %ld bytes.\n", DATASET2, | ||
(long) storage_size); | ||
|
||
/* | ||
* Close and release resources. | ||
*/ | ||
status = H5Pclose (dcpl); | ||
status = H5Dclose (dset1); | ||
status = H5Dclose (dset2); | ||
status = H5Sclose (space); | ||
status = H5Fclose (file); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,197 @@ | ||
/************************************************************ | ||
This example shows how to read and write data to a dataset | ||
using the Fletcher32 checksum filter. The program first | ||
checks if the Fletcher32 filter is available, then if it | ||
is it writes integers to a dataset using Fletcher32, then | ||
closes the file. Next, it reopens the file, reads back | ||
the data, checks if the filter detected an error and | ||
outputs the type of filter and the maximum value in the | ||
dataset to the screen. | ||
This file is intended for use with HDF5 Library version 1.8 | ||
************************************************************/ | ||
|
||
#include "hdf5.h" | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
|
||
#define FILE "h5ex_d_checksum.h5" | ||
#define DATASET "DS1" | ||
#define DIM0 32 | ||
#define DIM1 64 | ||
#define CHUNK0 4 | ||
#define CHUNK1 8 | ||
|
||
int | ||
main (void) | ||
{ | ||
hid_t file, space, dset, dcpl; | ||
/* Handles */ | ||
herr_t status; | ||
htri_t avail; | ||
H5Z_filter_t filter_type; | ||
hsize_t dims[2] = {DIM0, DIM1}, | ||
chunk[2] = {CHUNK0, CHUNK1}; | ||
size_t nelmts; | ||
unsigned int flags, | ||
filter_info; | ||
int wdata[DIM0][DIM1], /* Write buffer */ | ||
rdata[DIM0][DIM1], /* Read buffer */ | ||
max, | ||
i, j; | ||
|
||
/* | ||
* Check if the Fletcher32 filter is available and can be used for | ||
* both encoding and decoding. Normally we do not perform error | ||
* checking in these examples for the sake of clarity, but in this | ||
* case we will make an exception because this filter is an | ||
* optional part of the hdf5 library. | ||
*/ | ||
avail = H5Zfilter_avail(H5Z_FILTER_FLETCHER32); | ||
if (!avail) { | ||
printf ("Fletcher32 filter not available.\n"); | ||
return 1; | ||
} | ||
status = H5Zget_filter_info (H5Z_FILTER_FLETCHER32, &filter_info); | ||
if ( !(filter_info & H5Z_FILTER_CONFIG_ENCODE_ENABLED) || | ||
!(filter_info & H5Z_FILTER_CONFIG_DECODE_ENABLED) ) { | ||
printf ("Fletcher32 filter not available for encoding and decoding.\n"); | ||
return 1; | ||
} | ||
|
||
/* | ||
* Initialize data. | ||
*/ | ||
for (i=0; i<DIM0; i++) | ||
for (j=0; j<DIM1; j++) | ||
wdata[i][j] = i * j - j; | ||
|
||
/* | ||
* Create a new file using the default properties. | ||
*/ | ||
file = H5Fcreate (FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); | ||
|
||
/* | ||
* Create dataspace. Setting maximum size to NULL sets the maximum | ||
* size to be the current size. | ||
*/ | ||
space = H5Screate_simple (2, dims, NULL); | ||
|
||
/* | ||
* Create the dataset creation property list, add the Fletcher32 filter | ||
* and set the chunk size. | ||
*/ | ||
dcpl = H5Pcreate (H5P_DATASET_CREATE); | ||
status = H5Pset_fletcher32 (dcpl); | ||
status = H5Pset_chunk (dcpl, 2, chunk); | ||
|
||
/* | ||
* Create the dataset. | ||
*/ | ||
dset = H5Dcreate (file, DATASET, H5T_STD_I32LE, space, H5P_DEFAULT, dcpl, | ||
H5P_DEFAULT); | ||
|
||
/* | ||
* Write the data to the dataset. | ||
*/ | ||
status = H5Dwrite (dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, | ||
wdata[0]); | ||
|
||
/* | ||
* Close and release resources. | ||
*/ | ||
status = H5Pclose (dcpl); | ||
status = H5Dclose (dset); | ||
status = H5Sclose (space); | ||
status = H5Fclose (file); | ||
|
||
|
||
/* | ||
* Now we begin the read section of this example. | ||
*/ | ||
|
||
/* | ||
* Open file and dataset using the default properties. | ||
*/ | ||
file = H5Fopen (FILE, H5F_ACC_RDONLY, H5P_DEFAULT); | ||
dset = H5Dopen (file, DATASET, H5P_DEFAULT); | ||
|
||
/* | ||
* Retrieve dataset creation property list. | ||
*/ | ||
dcpl = H5Dget_create_plist (dset); | ||
|
||
/* | ||
* Retrieve and print the filter type. Here we only retrieve the | ||
* first filter because we know that we only added one filter. | ||
*/ | ||
nelmts = 0; | ||
filter_type = H5Pget_filter (dcpl, 0, &flags, &nelmts, NULL, 0, NULL, | ||
&filter_info); | ||
printf ("Filter type is: "); | ||
switch (filter_type) { | ||
case H5Z_FILTER_DEFLATE: | ||
printf ("H5Z_FILTER_DEFLATE\n"); | ||
break; | ||
case H5Z_FILTER_SHUFFLE: | ||
printf ("H5Z_FILTER_SHUFFLE\n"); | ||
break; | ||
case H5Z_FILTER_FLETCHER32: | ||
printf ("H5Z_FILTER_FLETCHER32\n"); | ||
break; | ||
case H5Z_FILTER_SZIP: | ||
printf ("H5Z_FILTER_SZIP\n"); | ||
break; | ||
case H5Z_FILTER_NBIT: | ||
printf ("H5Z_FILTER_NBIT\n"); | ||
break; | ||
case H5Z_FILTER_SCALEOFFSET: | ||
printf ("H5Z_FILTER_SCALEOFFSET\n"); | ||
} | ||
|
||
/* | ||
* Read the data using the default properties. | ||
*/ | ||
status = H5Dread (dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, | ||
rdata[0]); | ||
|
||
/* | ||
* Check if the read was successful. Normally we do not perform | ||
* error checking in these examples for the sake of clarity, but in | ||
* this case we will make an exception because this is how the | ||
* fletcher32 checksum filter reports data errors. | ||
*/ | ||
if (status<0) { | ||
fprintf (stderr, "Dataset read failed!\n"); | ||
status = H5Pclose (dcpl); | ||
status = H5Dclose (dset); | ||
status = H5Fclose (file); | ||
return 2; | ||
} | ||
|
||
/* | ||
* Find the maximum value in the dataset, to verify that it was | ||
* read correctly. | ||
*/ | ||
max = rdata[0][0]; | ||
for (i=0; i<DIM0; i++) | ||
for (j=0; j<DIM1; j++) | ||
if (max < rdata[i][j]) | ||
max = rdata[i][j]; | ||
|
||
/* | ||
* Print the maximum value. | ||
*/ | ||
printf ("Maximum value in %s is: %d\n", DATASET, max); | ||
|
||
/* | ||
* Close and release resources. | ||
*/ | ||
status = H5Pclose (dcpl); | ||
status = H5Dclose (dset); | ||
status = H5Fclose (file); | ||
|
||
return 0; | ||
} |
Oops, something went wrong.