/************************************************************ This example shows how to create and extend an unlimited dataset with gzip compression. The program first writes integers to a gzip compressed dataset with dataspace dimensions of DIM0xDIM1, then closes the file. Next, it reopens the file, reads back the data, outputs it to the screen, extends the dataset, and writes new data to the extended portions of the dataset. Finally it reopens the file again, reads back the data, and outputs it to the screen. This file is intended for use with HDF5 Library version 1.6 ************************************************************/ #include "hdf5.h" #include #include #define FILE "h5ex_d_unlimgzip.h5" #define DATASET "DS1" #define DIM0 4 #define DIM1 7 #define EDIM0 6 #define EDIM1 10 #define CHUNK0 4 #define CHUNK1 4 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}, extdims[2] = {EDIM0, EDIM1}, maxdims[2], chunk[2] = {CHUNK0, CHUNK1}, start[2], count[2]; size_t nelmts; unsigned int flags, filter_info; int wdata[DIM0][DIM1], /* Write buffer */ wdata2[EDIM0][EDIM1], /* Write buffer for extension */ **rdata, /* Read buffer */ ndims, i, j; /* * Check if gzip compression is available and can be used for both * compression and decompression. 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_DEFLATE); if (!avail) { printf ("gzip filter not available.\n"); return 1; } status = H5Zget_filter_info (H5Z_FILTER_DEFLATE, &filter_info); if ( !(filter_info & H5Z_FILTER_CONFIG_ENCODE_ENABLED) || !(filter_info & H5Z_FILTER_CONFIG_DECODE_ENABLED) ) { printf ("gzip filter not available for encoding and decoding.\n"); return 1; } /* * Initialize data. */ for (i=0; i