H5Tregister
(
H5T_pers_t type
,
const char * name
,
hid_t src_id
,
hid_t dst_id
,
H5T_conv_t func
)
H5Tregister
registers a hard or soft conversion function
for a datatype conversion path.
The parameter type
indicates whether a conversion function
is hard (H5T_PERS_HARD
)
or soft (H5T_PERS_SOFT
).
User-defined functions employing compiler casting are designated as
hard;
other user-defined conversion functions registered with the
HDF5 Library (with H5Tregister
) are designated
as soft.
The HDF5 Library also has its own hard and soft
conversion functions.
A conversion path can have only one hard function.
When type
is H5T_PERS_HARD
,
func
replaces any previous hard function.
When type
is H5T_PERS_SOFT
,
H5Tregister
adds the function to the end of the master soft list and replaces
the soft function in all applicable existing conversion paths.
Soft functions are used when determining which conversion function
is appropriate for this path.
The name
is used only for debugging and should be a
short identifier for the function.
The path is specified by the source and destination datatypes
src_id
and dst_id
.
For soft conversion functions, only the class of these types is important.
The type of the conversion function pointer is declared as:
typedef
herr_t (*H5T_conv_t
) (hid_tsrc_id
, hid_tdst_id
, H5T_cdata_t *cdata
, size_tnelmts
, size_tbuf_stride
, size_tbkg_stride
, void *buf
, void *bkg
, hid_tdset_xfer_plist
)
The H5T_cdata_t
struct is declared as:
typedef
struct*H5T_cdata_t
(H5T_cmd_tcommand
, H5T_bkg_tneed_bkg
, hbool_t *recalc
, void *priv
)
The H5T_conv_t
parameters and
the elements of the H5T_cdata_t
struct
are described more fully in this
“Data Conversion” discussion.
If a C routine that takes a function pointer as an argument is called from within C++ code, the C routine should be returned from normally.
Examples of this kind of routine include callbacks such as
H5Pset_elink_cb
and H5Pset_type_conv_cb
and functions such as H5Tconvert
and
H5Ewalk2
.
Exiting the routine in its normal fashion allows the HDF5 C Library to clean up its work properly. In other words, if the C++ application jumps out of the routine back to the C++ “catch” statement, the library is not given the opportunity to close any temporary data structures that were set up when the routine was called. The C++ application should save some state as the routine is started so that any problem that occurs might be diagnosed.
H5T_pers_t type |
IN: Conversion function type: H5T_PERS_HARD
for hard conversion functions
H5T_PERS_SOFT
for soft conversion functions
|
const char * name |
IN: Name displayed in diagnostic output |
hid_t src_id |
IN: Identifier of source datatype |
hid_t dst_id |
IN: Identifier of destination datatype |
H5T_conv_t func |
IN: Function to convert between source and destination datatypes |
Release | C |
1.6.3 |
The following change occurred in the
H5Tconv_t function:nelmts parameter type changed to
size_t. |