Problems with H5Zregister() and HDF5 1.8.0-beta5

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Problems with H5Zregister() and HDF5 1.8.0-beta5

Francesc Altet
Hi,

I'm trying to give support to HDF5 1.8.0 (beta5) to PyTables.  The plan
is first try to support 1.8.0 compiled
with --with-default-api-version=v16 option and the proceed to the
migration to the 1.8.0 API.  In theory, the migration using the 1.6 API
should be straightforward, but I'm having a problem with filter
registration; this is how HDF5 1.8.0 (beta5) complains:

HDF5-DIAG: Error detected in HDF5 (1.8.0-beta5) thread 0:
  #000: H5Z.c line 237 in H5Zregister(): invalid H5Z_class_t version
number
    major: Invalid arguments to routine
    minor: Bad value

The code that I'm using right now is something like:

#if H5_USE_16_API || (H5_VERS_MAJOR == 1 && H5_VERS_MINOR < 7)
   /* 1.6.x */
  H5Z_class_t filter_class = {
    (H5Z_filter_t)(FILTER_BZIP2),  /* filter_id */
    "bzip2",                       /* comment */
    NULL,                          /* can_apply_func */
    NULL,                          /* set_local_func */
    (H5Z_func_t)(bzip2_deflate)    /* filter_func */
  };
#else
   /* 1.8.x */
  H5Z_class_t filter_class = {
    H5Z_CLASS_T_VERS,             /* H5Z_class_t version */
    (H5Z_filter_t)(FILTER_BZIP2), /* filter_id */
    1, 1,                         /* Encoding and decoding enabled */
    "bzip2",  /* comment */
    NULL,                         /* can_apply_func */
    NULL,                         /* set_local_func */
    (H5Z_func_t)(bzip2_deflate)   /* filter_func */
};
#endif /* if H5_API_VERSION < "1.8" */

  /* Register the filter class for the bzip2 compressor. */
  H5Zregister(&filter_class);

and I pass the -DH5_USE_16_API to the compiler.

The code above used to work well against 1.6.x series and 1.8.0
(<=beta3), but don't work against 1.8.0-beta5.

The symbols for BZIP2 and LZO compressors that we were traditionally
using for PyTables are:

#define FILTER_BZIP2 307
#define FILTER_LZO 305

Any hint about what's going on wrong?

Thanks,

--
>0,0<   Francesc Altet ? ? http://www.carabos.com/
V   V   C?rabos Coop. V. ??Enjoy Data
 "-"

----------------------------------------------------------------------
This mailing list is for HDF software users discussion.
To subscribe to this list, send a message to hdf-forum-subscribe at hdfgroup.org.
To unsubscribe, send a message to hdf-forum-unsubscribe at hdfgroup.org.




Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Problems with H5Zregister() and HDF5 1.8.0-beta5

Quincey Koziol
Hi Francesc,

On Dec 19, 2007, at 5:41 AM, Francesc Altet wrote:

> Hi,
>
> I'm trying to give support to HDF5 1.8.0 (beta5) to PyTables.  The  
> plan
> is first try to support 1.8.0 compiled
> with --with-default-api-version=v16 option and the proceed to the
> migration to the 1.8.0 API.  In theory, the migration using the 1.6  
> API
> should be straightforward, but I'm having a problem with filter
> registration; this is how HDF5 1.8.0 (beta5) complains:
>
> HDF5-DIAG: Error detected in HDF5 (1.8.0-beta5) thread 0:
>   #000: H5Z.c line 237 in H5Zregister(): invalid H5Z_class_t version
> number
>     major: Invalid arguments to routine
>     minor: Bad value
>
> The code that I'm using right now is something like:
>
> #if H5_USE_16_API || (H5_VERS_MAJOR == 1 && H5_VERS_MINOR < 7)
>    /* 1.6.x */
>   H5Z_class_t filter_class = {
>     (H5Z_filter_t)(FILTER_BZIP2),  /* filter_id */
>     "bzip2",                       /* comment */
>     NULL,                          /* can_apply_func */
>     NULL,                          /* set_local_func */
>     (H5Z_func_t)(bzip2_deflate)    /* filter_func */
>   };
> #else
>    /* 1.8.x */
>   H5Z_class_t filter_class = {
>     H5Z_CLASS_T_VERS,             /* H5Z_class_t version */
>     (H5Z_filter_t)(FILTER_BZIP2), /* filter_id */
>     1, 1,                         /* Encoding and decoding enabled */
>     "bzip2",  /* comment */
>     NULL,                         /* can_apply_func */
>     NULL,                         /* set_local_func */
>     (H5Z_func_t)(bzip2_deflate)   /* filter_func */
> };
> #endif /* if H5_API_VERSION < "1.8" */
>
>   /* Register the filter class for the bzip2 compressor. */
>   H5Zregister(&filter_class);
>
> and I pass the -DH5_USE_16_API to the compiler.
>
> The code above used to work well against 1.6.x series and 1.8.0
> (<=beta3), but don't work against 1.8.0-beta5.
>
> The symbols for BZIP2 and LZO compressors that we were traditionally
> using for PyTables are:
>
> #define FILTER_BZIP2 307
> #define FILTER_LZO 305
>
> Any hint about what's going on wrong?

        This looks like a bug in the API compatibility support.  I'll try to  
get it fixed shortly.

                Quincey

>
> Thanks,
>
> --
>> 0,0<   Francesc Altet     http://www.carabos.com/
> V   V   C?rabos Coop. V.   Enjoy Data
>  "-"
>
> ----------------------------------------------------------------------
> This mailing list is for HDF software users discussion.
> To subscribe to this list, send a message to hdf-forum-
> subscribe at hdfgroup.org.
> To unsubscribe, send a message to hdf-forum-unsubscribe at hdfgroup.org.
>
>


----------------------------------------------------------------------
This mailing list is for HDF software users discussion.
To subscribe to this list, send a message to hdf-forum-subscribe at hdfgroup.org.
To unsubscribe, send a message to hdf-forum-unsubscribe at hdfgroup.org.




Loading...