diff options
Diffstat (limited to 'tools/test/h5diff/dynlib_diff.c')
-rw-r--r-- | tools/test/h5diff/dynlib_diff.c | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/tools/test/h5diff/dynlib_diff.c b/tools/test/h5diff/dynlib_diff.c index 0d8be2b..d80777d 100644 --- a/tools/test/h5diff/dynlib_diff.c +++ b/tools/test/h5diff/dynlib_diff.c @@ -12,59 +12,52 @@ * to either file, you may request a copy from help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Raymond Lu - * 13 February 2013 - * - * Purpose: Tests the plugin module (H5PL) + * Purpose: Tests the plugin module (H5PL) */ #include <stdlib.h> #include <stdio.h> #include "H5PLextern.h" -#define H5Z_FILTER_DYNLIB2 258 +#define H5Z_FILTER_DYNLIBUD 300 #define MULTIPLIER 3 -static size_t H5Z_filter_dynlib2(unsigned int flags, size_t cd_nelmts, +static size_t H5Z_filter_dynlibud(unsigned int flags, size_t cd_nelmts, const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf); /* This message derives from H5Z */ -const H5Z_class2_t H5Z_DYNLIB2[1] = {{ +const H5Z_class2_t H5Z_DYNLIBUD[1] = {{ H5Z_CLASS_T_VERS, /* H5Z_class_t version */ - H5Z_FILTER_DYNLIB2, /* Filter id number */ + H5Z_FILTER_DYNLIBUD, /* Filter id number */ 1, 1, /* Encoding and decoding enabled */ - "dynlib2", /* Filter name for debugging */ + "dynlibud", /* Filter name for debugging */ NULL, /* The "can apply" callback */ NULL, /* The "set local" callback */ - (H5Z_func_t)H5Z_filter_dynlib2, /* The actual filter function */ + (H5Z_func_t)H5Z_filter_dynlibud, /* The actual filter function */ }}; H5PL_type_t H5PLget_plugin_type(void) {return H5PL_TYPE_FILTER;} -const void *H5PLget_plugin_info(void) {return H5Z_DYNLIB2;} +const void *H5PLget_plugin_info(void) {return H5Z_DYNLIBUD;} /*------------------------------------------------------------------------- - * Function: H5Z_filter_dynlib2 + * Function: H5Z_filter_dynlibud * - * Purpose: A dynlib2 filter method that multiplies the original value + * Purpose: A dynlib2 filter method that multiplies the original value * during write and divide the original value during read. It - * will be built as a shared library. plugin.c test will load - * and use this filter library. - * - * Return: Success: Data chunk size - * - * Failure: 0 + * will be built as a shared library. plugin.c test will load + * and use this filter library. * - * Programmer: Raymond Lu - * 29 March 2013 + * Return: Success: Data chunk size * + * Failure: 0 *------------------------------------------------------------------------- */ static size_t -H5Z_filter_dynlib2(unsigned int flags, size_t cd_nelmts, +H5Z_filter_dynlibud(unsigned int flags, size_t cd_nelmts, const unsigned int *cd_values, size_t nbytes, size_t *buf_size, void **buf) { - int *int_ptr = (int *)*buf; /* Pointer to the data values */ + char *int_ptr = (char *)*buf; /* Pointer to the data values */ size_t buf_left = *buf_size; /* Amount of data buffer left to process */ /* Check for the correct number of parameters */ @@ -75,20 +68,24 @@ H5Z_filter_dynlib2(unsigned int flags, size_t cd_nelmts, cd_values = cd_values; if(flags & H5Z_FLAG_REVERSE) { /*read*/ - /* Divide the original value with MULTIPLIER */ + /* Subtract the original value with MULTIPLIER */ while(buf_left > 0) { - *int_ptr++ /= MULTIPLIER; - buf_left -= sizeof(int); + char temp = *int_ptr; + *int_ptr = temp - MULTIPLIER; + int_ptr++; + buf_left -= sizeof(*int_ptr); } /* end while */ } /* end if */ else { /*write*/ - /* Multiply the original value with MULTIPLIER */ + /* Add the original value with MULTIPLIER */ while(buf_left > 0) { - *int_ptr++ *= MULTIPLIER; - buf_left -= sizeof(int); + char temp = *int_ptr; + *int_ptr = temp + MULTIPLIER; + int_ptr++; + buf_left -= sizeof(*int_ptr); } /* end while */ } /* end else */ return nbytes; -} /* end H5Z_filter_dynlib2() */ +} /* end H5Z_filter_dynlibud() */ |