summaryrefslogtreecommitdiffstats
path: root/src/H5Zpublic.h
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2009-04-20 19:12:19 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2009-04-20 19:12:19 (GMT)
commit8c074d5c03ccecf3c133208fdc603d55774e880a (patch)
tree3520d740df8cc3644de5b08244b7628a6d07712c /src/H5Zpublic.h
parentb8036fc5f6db4b6ddd528e741697224db7aba23a (diff)
downloadhdf5-8c074d5c03ccecf3c133208fdc603d55774e880a.zip
hdf5-8c074d5c03ccecf3c133208fdc603d55774e880a.tar.gz
hdf5-8c074d5c03ccecf3c133208fdc603d55774e880a.tar.bz2
[svn-r16807] Purpose: Fix bug 1533
Description: Previously, there was no versioning for H5Z_class_t. This prevented applications written for 1.6 using custom filters from being able to use the 1.8 library. There is now an H5Z_class1_t and H5Z_class2_t to enable compatibility. H5Zregister is *not* versioned, it determines which version of the struct has been passed in by the value of the first field (id or version, both are ints). Tested: jam, linew, smirom (h5committest), jam (--with-default-api-version=v16)
Diffstat (limited to 'src/H5Zpublic.h')
-rw-r--r--src/H5Zpublic.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/H5Zpublic.h b/src/H5Zpublic.h
index ce60650..44d2bbb 100644
--- a/src/H5Zpublic.h
+++ b/src/H5Zpublic.h
@@ -206,7 +206,7 @@ typedef size_t (*H5Z_func_t)(unsigned int flags, size_t cd_nelmts,
* The filter table maps filter identification numbers to structs that
* contain a pointers to the filter function and timing statistics.
*/
-typedef struct H5Z_class_t {
+typedef struct H5Z_class2_t {
int version; /* Version number of the H5Z_class_t struct */
H5Z_filter_t id; /* Filter ID number */
unsigned encoder_present; /* Does this filter have an encoder? */
@@ -215,13 +215,33 @@ typedef struct H5Z_class_t {
H5Z_can_apply_func_t can_apply; /* The "can apply" callback for a filter */
H5Z_set_local_func_t set_local; /* The "set local" callback for a filter */
H5Z_func_t filter; /* The actual filter function */
-} H5Z_class_t;
+} H5Z_class2_t;
-H5_DLL herr_t H5Zregister(const H5Z_class_t *cls);
+H5_DLL herr_t H5Zregister(const void *cls);
H5_DLL herr_t H5Zunregister(H5Z_filter_t id);
H5_DLL htri_t H5Zfilter_avail(H5Z_filter_t id);
H5_DLL herr_t H5Zget_filter_info(H5Z_filter_t filter, unsigned int *filter_config_flags);
+/* Symbols defined for compatibility with previous versions of the HDF5 API.
+ *
+ * Use of these symbols is deprecated.
+ */
+#ifndef H5_NO_DEPRECATED_SYMBOLS
+
+/*
+ * The filter table maps filter identification numbers to structs that
+ * contain a pointers to the filter function and timing statistics.
+ */
+typedef struct H5Z_class1_t {
+ H5Z_filter_t id; /* Filter ID number */
+ const char *name; /* Comment for debugging */
+ H5Z_can_apply_func_t can_apply; /* The "can apply" callback for a filter */
+ H5Z_set_local_func_t set_local; /* The "set local" callback for a filter */
+ H5Z_func_t filter; /* The actual filter function */
+} H5Z_class1_t;
+
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
+
#ifdef __cplusplus
}
#endif