summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2012-12-12 04:00:34 (GMT)
committerScot Breitenfeld <brtnfld@hdfgroup.org>2012-12-12 04:00:34 (GMT)
commit7155aa6f1dbf1d01765f5a61dbbeb13098f548f6 (patch)
tree56a909cc236f4a761c7f1e8538de9c9a53918188 /examples
parent3079b8dde8eabe7b130473a859a3f0abddd46c2d (diff)
downloadhdf5-7155aa6f1dbf1d01765f5a61dbbeb13098f548f6.zip
hdf5-7155aa6f1dbf1d01765f5a61dbbeb13098f548f6.tar.gz
hdf5-7155aa6f1dbf1d01765f5a61dbbeb13098f548f6.tar.bz2
[svn-r23091] Changed C examples to reflect changes in documentation via Barbara;
mainly program additions from tutorial. Tested: jam (gnu compilers)
Diffstat (limited to 'examples')
-rw-r--r--examples/CMakeLists.txt14
-rw-r--r--examples/Makefile.am22
-rw-r--r--examples/Makefile.in22
-rw-r--r--examples/h5_cmprss.c125
-rw-r--r--examples/h5_crtatt.c63
-rw-r--r--examples/h5_crtdat.c51
-rw-r--r--examples/h5_crtgrp.c40
-rw-r--r--examples/h5_crtgrpar.c48
-rw-r--r--examples/h5_crtgrpd.c91
-rw-r--r--examples/h5_extend.c146
-rw-r--r--examples/h5_rdwt.c53
-rw-r--r--examples/h5_subset.c153
-rw-r--r--examples/run-c-ex.sh.in20
13 files changed, 843 insertions, 5 deletions
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index b23c6f8..d7fc67a 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -10,6 +10,15 @@ ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS})
# Define Sources
#-----------------------------------------------------------------------------
SET (examples
+ h5_crtdat
+ h5_rdwt
+ h5_crtatt
+ h5_crtgrp
+ h5_crtgrpar
+ h5_crtgrpd
+ h5_cmprss
+ h5_extend
+ h5_subset
h5_write
h5_read
h5_extend_write
@@ -51,11 +60,15 @@ IF (BUILD_TESTING)
-E remove
Attributes.h5
btrees_file.h5
+ cmprss.h5
default_file.h5
+ dset.h5
+ extend.h5
extlink_prefix_source.h5
extlink_source.h5
extlink_target.h5
group.h5
+ groups.h5
hard_link.h5
mount1.h5
mount2.h5
@@ -71,6 +84,7 @@ IF (BUILD_TESTING)
separate_indexes_file.h5
small_lists_file.h5
soft_link.h5
+ subset.h5
unix2win.h5
)
IF (NOT "${last_test}" STREQUAL "")
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 58f50e7..d8eac95 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -29,7 +29,9 @@ endif
# Don't tell automake about them, because if it knew they were programs,
# it would try to compile them instead of using the h5cc script.
# Use the boilerplate in config/examples.am instead.
-EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound \
+EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound \
+ h5_crtgrpd h5_subset h5_cmprss h5_rdwt h5_crtgrpar h5_extend \
+ h5_crtatt h5_crtgrp h5_crtdat \
h5_group h5_select h5_attribute h5_mount h5_reference h5_drivers \
h5_ref2reg h5_extlink h5_elink_unix2win h5_shared_mesg
TEST_SCRIPT=testh5cc.sh
@@ -37,6 +39,8 @@ TEST_SCRIPT=testh5cc.sh
# Install files
# List all file that should be installed in examples directory
INSTALL_FILES = h5_write.c h5_read.c h5_extend_write.c h5_chunk_read.c \
+ h5_crtgrpd.c h5_subset.c h5_cmprss.c h5_rdwt.c h5_crtgrpar.c \
+ h5_extend.c h5_crtatt.c h5_crtgrp.c h5_crtdat.c \
h5_compound.c h5_group.c h5_select.c h5_attribute.c h5_mount.c \
h5_reference.c h5_drivers.c h5_extlink.c h5_elink_unix2win.c \
h5_ref2reg.c h5_shared_mesg.c ph5example.c
@@ -55,9 +59,14 @@ $(EXTRA_PROG): $(H5CC)
$(H5CC) $(H5CCFLAGS) $(CFLAGS) -o $@ $(srcdir)/$@.c;
endif
-# Two of the examples depend on files created by other examples.
+# Some examples depend on files created by other examples.
h5_read.chkexe_: h5_write.chkexe_
h5_chunk_read.chkexe_: h5_extend_write.chkexe_
+h5_crtgrpd.chkexe_: h5_crtgrpar.chkexe_
+# h5_rdwt and h5_crtatt both modify the same file created by
+# h5_crtdat. Serialize them.
+h5_rdwt.chkexe_: h5_crtdat.chkexe_
+h5_crtatt.chkexe_: h5_rdwt.chkexe_
# The external link examples demonstrate how to use paths; they need
# directories to be created to do this.
@@ -82,6 +91,15 @@ EXAMPLETOPDIR=${DESTDIR}$(exec_prefix)/share/hdf5_examples
# library above.
h5_chunk_read: $(srcdir)/h5_chunk_read.c
h5_compound: $(srcdir)/h5_compound.c
+h5_crtgrpd: $(srcdir)/h5_crtgrpd.c
+h5_subset: $(srcdir)/h5_subset.c
+h5_cmprss: $(srcdir)/h5_cmprss.c
+h5_rdwt: $(srcdir)/h5_rdwt.c
+h5_crtgrpar: $(srcdir)/h5_crtgrpar.c
+h5_extend: $(srcdir)/h5_extend.c
+h5_crtatt: $(srcdir)/h5_crtatt.c
+h5_crtgrp: $(srcdir)/h5_crtgrp.c
+h5_crtdat: $(srcdir)/h5_crtdat.c
h5_extend_write: $(srcdir)/h5_extend_write.c
h5_group: $(srcdir)/h5_group.c
h5_write: $(srcdir)/h5_write.c
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 04c010d..b6dfab5 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -394,7 +394,9 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog $(EXTLINK_DIRS) *.h5
# Don't tell automake about them, because if it knew they were programs,
# it would try to compile them instead of using the h5cc script.
# Use the boilerplate in config/examples.am instead.
-EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound \
+EXAMPLE_PROG = h5_write h5_read h5_extend_write h5_chunk_read h5_compound \
+ h5_crtgrpd h5_subset h5_cmprss h5_rdwt h5_crtgrpar h5_extend \
+ h5_crtatt h5_crtgrp h5_crtdat \
h5_group h5_select h5_attribute h5_mount h5_reference h5_drivers \
h5_ref2reg h5_extlink h5_elink_unix2win h5_shared_mesg
@@ -403,6 +405,8 @@ TEST_SCRIPT = testh5cc.sh
# Install files
# List all file that should be installed in examples directory
INSTALL_FILES = h5_write.c h5_read.c h5_extend_write.c h5_chunk_read.c \
+ h5_crtgrpd.c h5_subset.c h5_cmprss.c h5_rdwt.c h5_crtgrpar.c \
+ h5_extend.c h5_crtatt.c h5_crtgrp.c h5_crtdat.c \
h5_compound.c h5_group.c h5_select.c h5_attribute.c h5_mount.c \
h5_reference.c h5_drivers.c h5_extlink.c h5_elink_unix2win.c \
h5_ref2reg.c h5_shared_mesg.c ph5example.c
@@ -668,9 +672,14 @@ help:
@BUILD_PARALLEL_CONDITIONAL_FALSE@$(EXTRA_PROG): $(H5CC)
@BUILD_PARALLEL_CONDITIONAL_FALSE@ $(H5CC) $(H5CCFLAGS) $(CFLAGS) -o $@ $(srcdir)/$@.c;
-# Two of the examples depend on files created by other examples.
+# Some examples depend on files created by other examples.
h5_read.chkexe_: h5_write.chkexe_
h5_chunk_read.chkexe_: h5_extend_write.chkexe_
+h5_crtgrpd.chkexe_: h5_crtgrpar.chkexe_
+# h5_rdwt and h5_crtatt both modify the same file created by
+# h5_crtdat. Serialize them.
+h5_rdwt.chkexe_: h5_crtdat.chkexe_
+h5_crtatt.chkexe_: h5_rdwt.chkexe_
$(EXTLINK_DIRS):
echo $(mkdir_p) $@
@@ -684,6 +693,15 @@ $(EXTLINK_DIRS):
# library above.
h5_chunk_read: $(srcdir)/h5_chunk_read.c
h5_compound: $(srcdir)/h5_compound.c
+h5_crtgrpd: $(srcdir)/h5_crtgrpd.c
+h5_subset: $(srcdir)/h5_subset.c
+h5_cmprss: $(srcdir)/h5_cmprss.c
+h5_rdwt: $(srcdir)/h5_rdwt.c
+h5_crtgrpar: $(srcdir)/h5_crtgrpar.c
+h5_extend: $(srcdir)/h5_extend.c
+h5_crtatt: $(srcdir)/h5_crtatt.c
+h5_crtgrp: $(srcdir)/h5_crtgrp.c
+h5_crtdat: $(srcdir)/h5_crtdat.c
h5_extend_write: $(srcdir)/h5_extend_write.c
h5_group: $(srcdir)/h5_group.c
h5_write: $(srcdir)/h5_write.c
diff --git a/examples/h5_cmprss.c b/examples/h5_cmprss.c
new file mode 100644
index 0000000..efaf953
--- /dev/null
+++ b/examples/h5_cmprss.c
@@ -0,0 +1,125 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to create a compressed dataset.
+ * It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+
+#define FILE "cmprss.h5"
+#define RANK 2
+#define DIM0 100
+#define DIM1 20
+
+int main () {
+
+ hid_t file_id, dataset_id, dataspace_id; /* identifiers */
+ hid_t plist_id;
+
+ size_t nelmts;
+ unsigned flags, filter_info;
+ H5Z_filter_t filter_type;
+
+ herr_t status;
+ hsize_t dims[2];
+ hsize_t cdims[2];
+
+ int idx;
+ int i,j, numfilt;
+ int buf[DIM0][DIM1];
+ int rbuf [DIM0][DIM1];
+
+ /* Uncomment these variables to use SZIP compression
+ unsigned szip_options_mask;
+ unsigned szip_pixels_per_block;
+ */
+
+ /* Create a file. */
+ file_id = H5Fcreate (FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+
+ /* Create dataset "Compressed Data" in the group using absolute name. */
+ dims[0] = DIM0;
+ dims[1] = DIM1;
+ dataspace_id = H5Screate_simple (RANK, dims, NULL);
+
+ plist_id = H5Pcreate (H5P_DATASET_CREATE);
+
+ /* Dataset must be chunked for compression */
+ cdims[0] = 20;
+ cdims[1] = 20;
+ status = H5Pset_chunk (plist_id, 2, cdims);
+
+ /* Set ZLIB / DEFLATE Compression using compression level 6.
+ * To use SZIP Compression comment out these lines.
+ */
+ status = H5Pset_deflate (plist_id, 6);
+
+ /* Uncomment these lines to set SZIP Compression
+ szip_options_mask = H5_SZIP_NN_OPTION_MASK;
+ szip_pixels_per_block = 16;
+ status = H5Pset_szip (plist_id, szip_options_mask, szip_pixels_per_block);
+ */
+
+ dataset_id = H5Dcreate (file_id, "Compressed_Data", H5T_STD_I32BE,
+ dataspace_id, H5P_DEFAULT, plist_id, H5P_DEFAULT);
+
+ for (i = 0; i< DIM0; i++)
+ for (j=0; j<DIM1; j++)
+ buf[i][j] = i+j;
+
+ status = H5Dwrite (dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+
+ status = H5Sclose (dataspace_id);
+ status = H5Dclose (dataset_id);
+ status = H5Pclose (plist_id);
+ status = H5Fclose (file_id);
+
+ /* Now reopen the file and dataset in the file. */
+ file_id = H5Fopen (FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+ dataset_id = H5Dopen (file_id, "Compressed_Data", H5P_DEFAULT);
+
+ /* Retrieve filter information. */
+ plist_id = H5Dget_create_plist (dataset_id);
+
+ numfilt = H5Pget_nfilters (plist_id);
+ printf ("Number of filters associated with dataset: %i\n", numfilt);
+
+ for (i=0; i<numfilt; i++) {
+ nelmts = 0;
+ filter_type = H5Pget_filter (plist_id, 0, &flags, &nelmts, NULL, 0, NULL,
+ &filter_info);
+ printf ("Filter Type: ");
+ switch (filter_type) {
+ case H5Z_FILTER_DEFLATE:
+ printf ("H5Z_FILTER_DEFLATE\n");
+ break;
+ case H5Z_FILTER_SZIP:
+ printf ("H5Z_FILTER_SZIP\n");
+ break;
+ default:
+ printf ("Other filter type included.\n");
+ }
+ }
+
+ status = H5Dread (dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, rbuf);
+
+ status = H5Dclose (dataset_id);
+ status = H5Pclose (plist_id);
+ status = H5Fclose (file_id);
+}
diff --git a/examples/h5_crtatt.c b/examples/h5_crtatt.c
new file mode 100644
index 0000000..17b61cb
--- /dev/null
+++ b/examples/h5_crtatt.c
@@ -0,0 +1,63 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to create an attribute attached to a
+ * dataset. It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+#define FILE "dset.h5"
+
+int main() {
+
+ hid_t file_id, dataset_id, attribute_id, dataspace_id; /* identifiers */
+ hsize_t dims;
+ int attr_data[2];
+ herr_t status;
+
+ /* Initialize the attribute data. */
+ attr_data[0] = 100;
+ attr_data[1] = 200;
+
+ /* Open an existing file. */
+ file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+
+ /* Open an existing dataset. */
+ dataset_id = H5Dopen(file_id, "/dset", H5P_DEFAULT);
+
+ /* Create the data space for the attribute. */
+ dims = 2;
+ dataspace_id = H5Screate_simple(1, &dims, NULL);
+
+ /* Create a dataset attribute. */
+ attribute_id = H5Acreate (dataset_id, "Units", H5T_STD_I32BE, dataspace_id,
+ H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Write the attribute data. */
+ status = H5Awrite(attribute_id, H5T_NATIVE_INT, attr_data);
+
+ /* Close the attribute. */
+ status = H5Aclose(attribute_id);
+
+ /* Close the dataspace. */
+ status = H5Sclose(dataspace_id);
+
+ /* Close to the dataset. */
+ status = H5Dclose(dataset_id);
+
+ /* Close the file. */
+ status = H5Fclose(file_id);
+}
diff --git a/examples/h5_crtdat.c b/examples/h5_crtdat.c
new file mode 100644
index 0000000..4dbc7a1
--- /dev/null
+++ b/examples/h5_crtdat.c
@@ -0,0 +1,51 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to create a dataset that is a 4 x 6
+ * array. It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+#define FILE "dset.h5"
+
+int main() {
+
+ hid_t file_id, dataset_id, dataspace_id; /* identifiers */
+ hsize_t dims[2];
+ herr_t status;
+
+ /* Create a new file using default properties. */
+ file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create the data space for the dataset. */
+ dims[0] = 4;
+ dims[1] = 6;
+ dataspace_id = H5Screate_simple(2, dims, NULL);
+
+ /* Create the dataset. */
+ dataset_id = H5Dcreate(file_id, "/dset", H5T_STD_I32BE, dataspace_id,
+ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* End access to the dataset and release resources used by it. */
+ status = H5Dclose(dataset_id);
+
+ /* Terminate access to the data space. */
+ status = H5Sclose(dataspace_id);
+
+ /* Close the file. */
+ status = H5Fclose(file_id);
+}
+
diff --git a/examples/h5_crtgrp.c b/examples/h5_crtgrp.c
new file mode 100644
index 0000000..e81425d
--- /dev/null
+++ b/examples/h5_crtgrp.c
@@ -0,0 +1,40 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to create and close a group.
+ * It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+#define FILE "group.h5"
+
+int main() {
+
+ hid_t file_id, group_id; /* identifiers */
+ herr_t status;
+
+ /* Create a new file using default properties. */
+ file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create a group named "/MyGroup" in the file. */
+ group_id = H5Gcreate(file_id, "/MyGroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Close the group. */
+ status = H5Gclose(group_id);
+
+ /* Terminate access to the file. */
+ status = H5Fclose(file_id);
+}
diff --git a/examples/h5_crtgrpar.c b/examples/h5_crtgrpar.c
new file mode 100644
index 0000000..bc532f8
--- /dev/null
+++ b/examples/h5_crtgrpar.c
@@ -0,0 +1,48 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates the creation of groups using absolute and
+ * relative names. It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+#define FILE "groups.h5"
+
+int main() {
+
+ hid_t file_id, group1_id, group2_id, group3_id; /* identifiers */
+ herr_t status;
+
+ /* Create a new file using default properties. */
+ file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create group "MyGroup" in the root group using absolute name. */
+ group1_id = H5Gcreate(file_id, "/MyGroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create group "Group_A" in group "MyGroup" using absolute name. */
+ group2_id = H5Gcreate(file_id, "/MyGroup/Group_A", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create group "Group_B" in group "MyGroup" using relative name. */
+ group3_id = H5Gcreate(group1_id, "Group_B", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Close groups. */
+ status = H5Gclose(group1_id);
+ status = H5Gclose(group2_id);
+ status = H5Gclose(group3_id);
+
+ /* Close the file. */
+ status = H5Fclose(file_id);
+}
diff --git a/examples/h5_crtgrpd.c b/examples/h5_crtgrpd.c
new file mode 100644
index 0000000..acf9115
--- /dev/null
+++ b/examples/h5_crtgrpd.c
@@ -0,0 +1,91 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to create a dataset in a group.
+ * It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+#define FILE "groups.h5"
+
+int main() {
+
+ hid_t file_id, group_id, dataset_id, dataspace_id; /* identifiers */
+ hsize_t dims[2];
+ herr_t status;
+ int i, j, dset1_data[3][3], dset2_data[2][10];
+
+ /* Initialize the first dataset. */
+ for (i = 0; i < 3; i++)
+ for (j = 0; j < 3; j++)
+ dset1_data[i][j] = j + 1;
+
+ /* Initialize the second dataset. */
+ for (i = 0; i < 2; i++)
+ for (j = 0; j < 10; j++)
+ dset2_data[i][j] = j + 1;
+
+ /* Open an existing file. */
+ file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+
+ /* Create the data space for the first dataset. */
+ dims[0] = 3;
+ dims[1] = 3;
+ dataspace_id = H5Screate_simple(2, dims, NULL);
+
+ /* Create a dataset in group "MyGroup". */
+ dataset_id = H5Dcreate(file_id, "/MyGroup/dset1", H5T_STD_I32BE, dataspace_id,
+ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Write the first dataset. */
+ status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,
+ dset1_data);
+
+ /* Close the data space for the first dataset. */
+ status = H5Sclose(dataspace_id);
+
+ /* Close the first dataset. */
+ status = H5Dclose(dataset_id);
+
+ /* Open an existing group of the specified file. */
+ group_id = H5Gopen(file_id, "/MyGroup/Group_A", H5P_DEFAULT);
+
+ /* Create the data space for the second dataset. */
+ dims[0] = 2;
+ dims[1] = 10;
+ dataspace_id = H5Screate_simple(2, dims, NULL);
+
+ /* Create the second dataset in group "Group_A". */
+ dataset_id = H5Dcreate(group_id, "dset2", H5T_STD_I32BE, dataspace_id,
+ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Write the second dataset. */
+ status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,
+ dset2_data);
+
+ /* Close the data space for the second dataset. */
+ status = H5Sclose(dataspace_id);
+
+ /* Close the second dataset */
+ status = H5Dclose(dataset_id);
+
+ /* Close the group. */
+ status = H5Gclose(group_id);
+
+ /* Close the file. */
+ status = H5Fclose(file_id);
+}
+
diff --git a/examples/h5_extend.c b/examples/h5_extend.c
new file mode 100644
index 0000000..128c715
--- /dev/null
+++ b/examples/h5_extend.c
@@ -0,0 +1,146 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example how to work with extendible datasets. The dataset
+ * must be chunked in order to be extendible.
+ *
+ * It is used in the HDF5 Tutorial.
+ */
+
+
+#include "hdf5.h"
+
+#define FILENAME "extend.h5"
+#define DATASETNAME "ExtendibleArray"
+#define RANK 2
+
+int
+main (void)
+{
+ hid_t file; /* handles */
+ hid_t dataspace, dataset;
+ hid_t filespace, memspace;
+ hid_t prop;
+
+ hsize_t dims[2] = {3, 3}; /* dataset dimensions at creation time */
+ hsize_t maxdims[2] = {H5S_UNLIMITED, H5S_UNLIMITED};
+ herr_t status;
+ hsize_t chunk_dims[2] = {2, 5};
+ int data[3][3] = { {1, 1, 1}, /* data to write */
+ {1, 1, 1},
+ {1, 1, 1} };
+
+ /* Variables used in extending and writing to the extended portion of dataset */
+ hsize_t size[2];
+ hsize_t offset[2];
+ hsize_t dimsext[2] = {7, 3}; /* extend dimensions */
+ int dataext[7][3] = { {2, 3, 4},
+ {2, 3, 4},
+ {2, 3, 4},
+ {2, 3, 4},
+ {2, 3, 4},
+ {2, 3, 4},
+ {2, 3, 4} };
+
+ /* Variables used in reading data back */
+ hsize_t chunk_dimsr[2];
+ hsize_t dimsr[2];
+ hsize_t i, j;
+ int rdata[10][3];
+ herr_t status_n;
+ int rank, rank_chunk;
+
+ /* Create the data space with unlimited dimensions. */
+ dataspace = H5Screate_simple (RANK, dims, maxdims);
+
+ /* Create a new file. If file exists its contents will be overwritten. */
+ file = H5Fcreate (FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Modify dataset creation properties, i.e. enable chunking */
+ prop = H5Pcreate (H5P_DATASET_CREATE);
+ status = H5Pset_chunk (prop, RANK, chunk_dims);
+
+ /* Create a new dataset within the file using chunk
+ creation properties. */
+ dataset = H5Dcreate (file, DATASETNAME, H5T_NATIVE_INT, dataspace,
+ H5P_DEFAULT, prop, H5P_DEFAULT);
+
+ /* Write data to dataset */
+ status = H5Dwrite (dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, data);
+
+ /* Extend the dataset. Dataset becomes 10 x 3 */
+ size[0] = dims[0]+ dimsext[0];
+ size[1] = dims[1];
+ status = H5Dextend (dataset, size);
+
+ /* Select a hyperslab in extended portion of dataset */
+ filespace = H5Dget_space (dataset);
+ offset[0] = 3;
+ offset[1] = 0;
+ status = H5Sselect_hyperslab (filespace, H5S_SELECT_SET, offset, NULL,
+ dimsext, NULL);
+
+ /* Define memory space */
+ memspace = H5Screate_simple (RANK, dimsext, NULL);
+
+ /* Write the data to the extended portion of dataset */
+ status = H5Dwrite (dataset, H5T_NATIVE_INT, memspace, filespace,
+ H5P_DEFAULT, dataext);
+
+ /* Close resources */
+ status = H5Dclose (dataset);
+ status = H5Pclose (prop);
+ status = H5Sclose (dataspace);
+ status = H5Sclose (memspace);
+ status = H5Sclose (filespace);
+ status = H5Fclose (file);
+
+ /********************************************
+ * Re-open the file and read the data back. *
+ ********************************************/
+
+ file = H5Fopen (FILENAME, H5F_ACC_RDONLY, H5P_DEFAULT);
+ dataset = H5Dopen (file, DATASETNAME, H5P_DEFAULT);
+
+ filespace = H5Dget_space (dataset);
+ rank = H5Sget_simple_extent_ndims (filespace);
+ status_n = H5Sget_simple_extent_dims (filespace, dimsr, NULL);
+
+ prop = H5Dget_create_plist (dataset);
+
+ if (H5D_CHUNKED == H5Pget_layout (prop))
+ rank_chunk = H5Pget_chunk (prop, rank, chunk_dimsr);
+
+ memspace = H5Screate_simple (rank, dimsr, NULL);
+ status = H5Dread (dataset, H5T_NATIVE_INT, memspace, filespace,
+ H5P_DEFAULT, rdata);
+
+ printf("\n");
+ printf("Dataset: \n");
+ for (j = 0; j < dimsr[0]; j++)
+ {
+ for (i = 0; i < dimsr[1]; i++)
+ printf("%d ", rdata[j][i]);
+ printf("\n");
+ }
+
+ status = H5Pclose (prop);
+ status = H5Dclose (dataset);
+ status = H5Sclose (filespace);
+ status = H5Sclose (memspace);
+ status = H5Fclose (file);
+}
diff --git a/examples/h5_rdwt.c b/examples/h5_rdwt.c
new file mode 100644
index 0000000..2f9d649
--- /dev/null
+++ b/examples/h5_rdwt.c
@@ -0,0 +1,53 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to write and read data in an existing
+ * dataset. It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+#define FILE "dset.h5"
+
+int main() {
+
+ hid_t file_id, dataset_id; /* identifiers */
+ herr_t status;
+ int i, j, dset_data[4][6];
+
+ /* Initialize the dataset. */
+ for (i = 0; i < 4; i++)
+ for (j = 0; j < 6; j++)
+ dset_data[i][j] = i * 6 + j + 1;
+
+ /* Open an existing file. */
+ file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+
+ /* Open an existing dataset. */
+ dataset_id = H5Dopen(file_id, "/dset", H5P_DEFAULT);
+
+ /* Write the dataset. */
+ status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,
+ dset_data);
+
+ status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,
+ dset_data);
+
+ /* Close the dataset. */
+ status = H5Dclose(dataset_id);
+
+ /* Close the file. */
+ status = H5Fclose(file_id);
+}
diff --git a/examples/h5_subset.c b/examples/h5_subset.c
new file mode 100644
index 0000000..eec0a2f
--- /dev/null
+++ b/examples/h5_subset.c
@@ -0,0 +1,153 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * This example illustrates how to read/write a subset of data (a slab)
+ * from/to a dataset in an HDF5 file. It is used in the HDF5 Tutorial.
+ */
+
+#include "hdf5.h"
+
+#define FILE "subset.h5"
+#define DATASETNAME "IntArray"
+#define RANK 2
+
+#define DIM0_SUB 3 /* subset dimensions */
+#define DIM1_SUB 4
+
+
+#define DIM0 8 /* size of dataset */
+#define DIM1 10
+
+int
+main (void)
+{
+ hsize_t dims[2], dimsm[2];
+ int data[DIM0][DIM1]; /* data to write */
+ int sdata[DIM0_SUB][DIM1_SUB]; /* subset to write */
+ int rdata[DIM0][DIM1]; /* buffer for read */
+
+ hid_t file_id, dataset_id; /* handles */
+ hid_t dataspace_id, memspace_id;
+
+ herr_t status;
+
+ hsize_t count[2]; /* size of subset in the file */
+ hsize_t offset[2]; /* subset offset in the file */
+ hsize_t stride[2];
+ hsize_t block[2];
+ int i, j;
+
+
+ /*****************************************************************
+ * Create a new file with default creation and access properties.*
+ * Then create a dataset and write data to it and close the file *
+ * and dataset. *
+ *****************************************************************/
+
+ file_id = H5Fcreate (FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ dims[0] = DIM0;
+ dims[1] = DIM1;
+ dataspace_id = H5Screate_simple (RANK, dims, NULL);
+
+ dataset_id = H5Dcreate (file_id, DATASETNAME, H5T_STD_I32BE, dataspace_id,
+ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+
+ for (j = 0; j < DIM0; j++) {
+ for (i = 0; i < DIM1; i++)
+ if (i< (DIM1/2))
+ data[j][i] = 1;
+ else
+ data[j][i] = 2;
+ }
+
+ status = H5Dwrite (dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, data);
+
+ printf ("\nData Written to File:\n");
+ for (i = 0; i<DIM0; i++){
+ for (j = 0; j<DIM1; j++)
+ printf (" %i", data[i][j]);
+ printf ("\n");
+ }
+ status = H5Sclose (dataspace_id);
+ status = H5Dclose (dataset_id);
+ status = H5Fclose (file_id);
+
+
+ /*****************************************************
+ * Reopen the file and dataset and write a subset of *
+ * values to the dataset.
+ *****************************************************/
+
+ file_id = H5Fopen (FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+ dataset_id = H5Dopen (file_id, DATASETNAME, H5P_DEFAULT);
+
+ /* Specify size and shape of subset to write. */
+
+ offset[0] = 1;
+ offset[1] = 2;
+
+ count[0] = DIM0_SUB;
+ count[1] = DIM1_SUB;
+
+ stride[0] = 1;
+ stride[1] = 1;
+
+ block[0] = 1;
+ block[1] = 1;
+
+ /* Create memory space with size of subset. Get file dataspace
+ and select subset from file dataspace. */
+
+ dimsm[0] = DIM0_SUB;
+ dimsm[1] = DIM1_SUB;
+ memspace_id = H5Screate_simple (RANK, dimsm, NULL);
+
+ dataspace_id = H5Dget_space (dataset_id);
+ status = H5Sselect_hyperslab (dataspace_id, H5S_SELECT_SET, offset,
+ stride, count, block);
+
+ /* Write a subset of data to the dataset, then read the
+ entire dataset back from the file. */
+
+ printf ("\nWrite subset to file specifying:\n");
+ printf (" offset=1x2 stride=1x1 count=3x4 block=1x1\n");
+ for (j = 0; j < DIM0_SUB; j++) {
+ for (i = 0; i < DIM1_SUB; i++)
+ sdata[j][i] = 5;
+ }
+
+ status = H5Dwrite (dataset_id, H5T_NATIVE_INT, memspace_id,
+ dataspace_id, H5P_DEFAULT, sdata);
+
+ status = H5Dread (dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
+ H5P_DEFAULT, rdata);
+
+ printf ("\nData in File after Subset is Written:\n");
+ for (i = 0; i<DIM0; i++){
+ for (j = 0; j<DIM1; j++)
+ printf (" %i", rdata[i][j]);
+ printf ("\n");
+ }
+
+ status = H5Sclose (memspace_id);
+ status = H5Sclose (dataspace_id);
+ status = H5Dclose (dataset_id);
+ status = H5Fclose (file_id);
+
+}
diff --git a/examples/run-c-ex.sh.in b/examples/run-c-ex.sh.in
index 8d0bdcd..9b2a2bb 100644
--- a/examples/run-c-ex.sh.in
+++ b/examples/run-c-ex.sh.in
@@ -78,7 +78,25 @@ fi
# Run tests
if [ $? -eq 0 ]
then
- if (RunTest h5_write &&\
+ if (RunTest h5_crtdat &&\
+ rm h5_crtdat &&\
+ RunTest h5_extend &&\
+ rm h5_extend &&\
+ RunTest h5_rdwt &&\
+ rm h5_rdwt &&\
+ RunTest h5_crtatt &&\
+ rm h5_crtatt &&\
+ RunTest h5_crtgrp &&\
+ rm h5_crtgrp &&\
+ RunTest h5_crtgrpar &&\
+ rm h5_crtgrpar &&\
+ RunTest h5_crtgrpd &&\
+ rm h5_crtgrpd &&\
+ RunTest h5_subset &&\
+ rm h5_subset &&\
+ RunTest h5_cmprss &&\
+ rm h5_cmprss &&\
+ RunTest h5_write &&\
rm h5_write &&\
RunTest h5_read &&\
rm h5_read &&\