summaryrefslogtreecommitdiffstats
path: root/doc/html/Tutor/examples/h5_iterate.c
diff options
context:
space:
mode:
Diffstat (limited to 'doc/html/Tutor/examples/h5_iterate.c')
-rw-r--r--doc/html/Tutor/examples/h5_iterate.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/doc/html/Tutor/examples/h5_iterate.c b/doc/html/Tutor/examples/h5_iterate.c
new file mode 100644
index 0000000..db58183
--- /dev/null
+++ b/doc/html/Tutor/examples/h5_iterate.c
@@ -0,0 +1,111 @@
+#include <hdf5.h>
+
+#define FILE "iterate.h5"
+#define FALSE 0
+
+/* 1-D dataset with fixed dimensions */
+#define SPACE1_NAME "Space1"
+#define SPACE1_RANK 1
+#define SPACE1_DIM1 4
+
+herr_t file_info(hid_t loc_id, const char *name, void *opdata);
+ /* Operator function */
+int
+main(void) {
+ hid_t file; /* HDF5 File IDs */
+ hid_t dataset; /* Dataset ID */
+ hid_t group; /* Group ID */
+ hid_t sid; /* Dataspace ID */
+ hid_t tid; /* Datatype ID */
+ hsize_t dims[] = {SPACE1_DIM1};
+ herr_t ret; /* Generic return value */
+
+/* Compound datatype */
+typedef struct s1_t {
+ unsigned int a;
+ unsigned int b;
+ float c;
+} s1_t;
+
+ /* Create file */
+ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create dataspace for datasets */
+ sid = H5Screate_simple(SPACE1_RANK, dims, NULL);
+
+ /* Create a group */
+ group=H5Gcreate(file,"Group1",-1);
+
+ /* Close a group */
+ ret = H5Gclose(group);
+
+ /* Create a dataset */
+ dataset=H5Dcreate(file,"Dataset1",H5T_STD_U32LE,sid,H5P_DEFAULT);
+
+ /* Close Dataset */
+ ret = H5Dclose(dataset);
+
+ /* Create a datatype */
+ tid = H5Tcreate (H5T_COMPOUND, sizeof(s1_t));
+
+ /* Insert fields */
+ ret=H5Tinsert (tid, "a", HOFFSET(s1_t,a), H5T_NATIVE_INT);
+
+ ret=H5Tinsert (tid, "b", HOFFSET(s1_t,b), H5T_NATIVE_INT);
+
+ ret=H5Tinsert (tid, "c", HOFFSET(s1_t,c), H5T_NATIVE_FLOAT);
+
+ /* Save datatype for later */
+ ret=H5Tcommit (file, "Datatype1", tid);
+
+ /* Close datatype */
+ ret = H5Tclose(tid);
+
+ /* Iterate through the file to see members of the root group */
+
+ printf(" Objects in the root group are:\n");
+ printf("\n");
+
+ H5Giterate(file, "/", NULL, file_info, NULL);
+
+ /* Close file */
+ ret = H5Fclose(file);
+
+ return 0;
+}
+
+/*
+ * Operator function.
+ */
+herr_t file_info(hid_t loc_id, const char *name, void *opdata)
+{
+ H5G_stat_t statbuf;
+
+ /*
+ * Get type of the object and display its name and type.
+ * The name of the object is passed to this function by
+ * the Library. Some magic :-)
+ */
+ H5Gget_objinfo(loc_id, name, FALSE, &statbuf);
+ switch (statbuf.type) {
+ case H5G_GROUP:
+ printf(" Object with name %s is a group \n", name);
+ break;
+ case H5G_DATASET:
+ printf(" Object with name %s is a dataset \n", name);
+ break;
+ case H5G_TYPE:
+ printf(" Object with name %s is a named datatype \n", name);
+ break;
+ default:
+ printf(" Unable to identify an object ");
+ }
+ return 0;
+ }
+
+
+
+
+
+
+