diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/Makefile.in | 9 | ||||
-rw-r--r-- | examples/h5_drivers.c | 89 |
2 files changed, 95 insertions, 3 deletions
diff --git a/examples/Makefile.in b/examples/Makefile.in index 8ec891c..fe5f296 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -17,12 +17,12 @@ LIBHDF5=../src/libhdf5.la ## `make check' will run. List them in the order they should be run. TEST_PROGS_PARA=ph5example TEST_PROGS=h5_write h5_read h5_extend_write h5_chunk_read h5_compound \ - h5_group h5_select h5_attribute h5_mount h5_reference \ + h5_group h5_select h5_attribute h5_mount h5_reference h5_drivers \ $(TEST_PROGS_PARA) ## These are the files that `make clean' (and derivatives) will remove from ## this directory. -CLEAN=*.h5 +CLEAN=*.h5 *.raw *.meta ## List all source files here. The list of object files will be ## created by replacing the `.c' with a `.o'. This list is necessary @@ -30,7 +30,7 @@ CLEAN=*.h5 TEST_SRC_PARA=ph5example.c TEST_SRC=h5_chunk_read.c h5_compound.c h5_extend_write.c h5_group.c \ h5_read.c h5_write.c h5_select.c h5_attribute.c h5_mount.c \ - h5_reference.c \ + h5_reference.c h5_drivers.c \ $(TEST_SRC_PARA) TEST_OBJ=$(TEST_SRC:.c=.lo) @@ -66,6 +66,9 @@ h5_mount: h5_mount.lo h5_reference: h5_reference.lo @$(LT_LINK_EXE) $(CFLAGS) -o $@ h5_reference.lo $(LIBHDF5) $(LDFLAGS) $(LIBS) +h5_drivers: h5_drivers.lo + @$(LT_LINK_EXE) $(CFLAGS) -o $@ h5_drivers.lo $(LIBHDF5) $(LDFLAGS) $(LIBS) + ph5example: ph5example.lo @$(LT_LINK_EXE) $(CFLAGS) -o $@ $@.lo $(LIBHDF5) $(LDFLAGS) $(LIBS) diff --git a/examples/h5_drivers.c b/examples/h5_drivers.c new file mode 100644 index 0000000..4c4d6d9 --- /dev/null +++ b/examples/h5_drivers.c @@ -0,0 +1,89 @@ +/* + * This shows how to use the hdf5 virtual file drivers. + * The example codes here do not check return values for the + * sake of simplicity. As in all proper programs, return codes + * should be checked. + */ + +#include "hdf5.h" +#include "stdlib.h" + +/* global variables */ +int cleanup_g = -1; /* whether to clean. Init to not set. */ + +/* prototypes */ +void cleanup(const char *); +void split_file(void); + + +/* + * Cleanup a file unless $HDF5_NOCLEANUP is set. + */ +void +cleanup(const char *filename) +{ + if (cleanup_g == -1) + cleanup_g = getenv("HDF5_NOCLEANUP") ? 0 : 1; + if (cleanup_g) + remove(filename); +} + + +/* + * This shows how to use the split file driver. + */ +void +split_file(void) +{ + hid_t fapl, fid; + + /* Example 1: Both metadata and rawdata files are in the same */ + /* directory. Use Station1-m.h5 and Station1-r.h5 as */ + /* the metadata and rawdata files. */ + fapl = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "-r.h5", H5P_DEFAULT); + fid=H5Fcreate("Station1",H5F_ACC_TRUNC,H5P_DEFAULT,fapl); + /* using the file ... */ + H5Fclose(fid); + H5Pclose(fapl); + /* Remove files created */ + cleanup("Station1-m.h5"); + cleanup("Station1-r.h5"); + + /* Example 2: metadata and rawdata files are in different */ + /* directories. Use PointA-m.h5 and /tmp/PointA-r.h5 as */ + /* the metadata and rawdata files. */ + fapl = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "/tmp/%s-r.h5", H5P_DEFAULT); + fid=H5Fcreate("PointA",H5F_ACC_TRUNC,H5P_DEFAULT,fapl); + /* using the file ... */ + H5Fclose(fid); + H5Pclose(fapl); + /* Remove files created */ + cleanup("PointA-m.h5"); + cleanup("/tmp/PointA-r.h5"); + + /* Example 3: Using default extension names for the metadata */ + /* and rawdata files. Use Measure.meta and Measure.raw as */ + /* the metadata and rawdata files. */ + fapl = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_split(fapl, NULL, H5P_DEFAULT, NULL, H5P_DEFAULT); + fid=H5Fcreate("Measure",H5F_ACC_TRUNC,H5P_DEFAULT,fapl); + /* using the file ... */ + H5Fclose(fid); + H5Pclose(fapl); + /* Remove files created */ + cleanup("Measure.meta"); + cleanup("Measure.raw"); +} + + +/* Main Body */ +int +main (void) +{ + + split_file(); + + return(0); +} |