Skip to content

Commit

Permalink
WIP: Mangle HDF5 functions re-defined
Browse files Browse the repository at this point in the history
The HDF5 library is adding a C-Preprocessor redefinitons pf function to
automatically add context based information.
  • Loading branch information
blowekamp committed Nov 13, 2024
1 parent e88a1c5 commit f48fc47
Show file tree
Hide file tree
Showing 11 changed files with 127 additions and 63 deletions.
36 changes: 24 additions & 12 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Apublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1042,18 +1042,30 @@ H5_DLL herr_t H5Arename_by_name(hid_t loc_id, const char *obj_name, const char *
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5A_MODULE
#define H5Acreate_async(...) H5Acreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Acreate_by_name_async(...) H5Acreate_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aopen_async(...) H5Aopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aopen_by_name_async(...) H5Aopen_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aopen_by_idx_async(...) H5Aopen_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Awrite_async(...) H5Awrite_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aread_async(...) H5Aread_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Arename_async(...) H5Arename_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Arename_by_name_async(...) H5Arename_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aexists_async(...) H5Aexists_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aexists_by_name_async(...) H5Aexists_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Aclose_async(...) H5Aclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Acreate_async
#define H5Acreate_async(...) HD5_MANGLE_PREFIX##_H5Acreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Acreate_by_name_async
#define H5Acreate_by_name_async(...) HD5_MANGLE_PREFIX##_H5Acreate_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aopen_async
#define H5Aopen_async(...) HD5_MANGLE_PREFIX##_H5Aopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aopen_by_name_async
#define H5Aopen_by_name_async(...) HD5_MANGLE_PREFIX##_H5Aopen_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aopen_by_idx_async
#define H5Aopen_by_idx_async(...) HD5_MANGLE_PREFIX##_H5Aopen_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Awrite_async
#define H5Awrite_async(...) HD5_MANGLE_PREFIX##_H5Awrite_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aread_async
#define H5Aread_async(...) HD5_MANGLE_PREFIX##_H5Aread_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Arename_async
#define H5Arename_async(...) HD5_MANGLE_PREFIX##_H5Arename_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Arename_by_name_async
#define H5Arename_by_name_async(...) HD5_MANGLE_PREFIX##_H5Arename_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aexists_async
#define H5Aexists_async(...) HD5_MANGLE_PREFIX##_H5Aexists_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aexists_by_name_async
#define H5Aexists_by_name_async(...) HD5_MANGLE_PREFIX##_H5Aexists_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Aclose_async
#define H5Aclose_async(...) HD5_MANGLE_PREFIX##_H5Aclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
27 changes: 18 additions & 9 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Dpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1660,15 +1660,24 @@ H5_DLL herr_t H5Dget_chunk_index_type(hid_t did, H5D_chunk_index_t *idx_type);
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5D_MODULE
#define H5Dcreate_async(...) H5Dcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dopen_async(...) H5Dopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dget_space_async(...) H5Dget_space_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dread_async(...) H5Dread_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dread_multi_async(...) H5Dread_multi_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dwrite_async(...) H5Dwrite_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dwrite_multi_async(...) H5Dwrite_multi_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dset_extent_async(...) H5Dset_extent_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Dclose_async(...) H5Dclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dcreate_async
#define H5Dcreate_async(...) HD5_MANGLE_PREFIX##_H5Dcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dopen_async
#define H5Dopen_async(...) HD5_MANGLE_PREFIX##_H5Dopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dget_space_async
#define H5Dget_space_async(...) HD5_MANGLE_PREFIX##_H5Dget_space_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dread_async
#define H5Dread_async(...) HD5_MANGLE_PREFIX##_H5Dread_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dread_multi_async
#define H5Dread_multi_async(...) HD5_MANGLE_PREFIX##_H5Dread_multi_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dwrite_async
#define H5Dwrite_async(...) HD5_MANGLE_PREFIX##_H5Dwrite_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dwrite_multi_async
#define H5Dwrite_multi_async(...) HD5_MANGLE_PREFIX##_H5Dwrite_multi_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dset_extent_async
#define H5Dset_extent_async(...) HD5_MANGLE_PREFIX##_H5Dset_extent_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Dclose_async
#define H5Dclose_async(...) HD5_MANGLE_PREFIX##_H5Dclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
15 changes: 10 additions & 5 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Fpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1853,11 +1853,16 @@ H5_DLL herr_t H5Fformat_convert(hid_t fid);
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5F_MODULE
#define H5Fcreate_async(...) H5Fcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Fopen_async(...) H5Fopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Freopen_async(...) H5Freopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Fflush_async(...) H5Fflush_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Fclose_async(...) H5Fclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Fcreate_async
#define H5Fcreate_async(...) HD5_MANGLE_PREFIX##_H5Fcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Fopen_async
#define H5Fopen_async(...) HD5_MANGLE_PREFIX##_H5Fopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Freopen_async
#define H5Freopen_async(...) HD5_MANGLE_PREFIX##_H5Freopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Fflush_async
#define H5Fflush_async(...) HD5_MANGLE_PREFIX##_H5Fflush_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Fclose_async
#define H5Fclose_async(...) HD5_MANGLE_PREFIX##_H5Fclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
18 changes: 12 additions & 6 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Gpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -496,12 +496,18 @@ H5_DLL herr_t H5Gclose_async(hid_t group_id, hid_t es_id);
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5G_MODULE
#define H5Gcreate_async(...) H5Gcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Gopen_async(...) H5Gopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Gget_info_async(...) H5Gget_info_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Gget_info_by_name_async(...) H5Gget_info_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Gget_info_by_idx_async(...) H5Gget_info_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Gclose_async(...) H5Gclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Gcreate_async
#define H5Gcreate_async(...) HD5_MANGLE_PREFIX##_H5Gcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Gopen_async
#define H5Gopen_async(...) HD5_MANGLE_PREFIX##_H5Gopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Gget_info_async
#define H5Gget_info_async(...) HD5_MANGLE_PREFIX##_H5Gget_info_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Gget_info_by_name_async
#define H5Gget_info_by_name_async(...) HD5_MANGLE_PREFIX##_H5Gget_info_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Gget_info_by_idx_async
#define H5Gget_info_by_idx_async(...) HD5_MANGLE_PREFIX##_H5Gget_info_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Gclose_async
#define H5Gclose_async(...) HD5_MANGLE_PREFIX##_H5Gclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
18 changes: 12 additions & 6 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Lpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1426,12 +1426,18 @@ H5_DLL herr_t H5Lcreate_external(const char *file_name, const char *obj_name, hi
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5L_MODULE
#define H5Lcreate_hard_async(...) H5Lcreate_hard_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Lcreate_soft_async(...) H5Lcreate_soft_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Ldelete_async(...) H5Ldelete_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Ldelete_by_idx_async(...) H5Ldelete_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Lexists_async(...) H5Lexists_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Literate_async(...) H5Literate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Lcreate_hard_async
#define H5Lcreate_hard_async(...) HD5_MANGLE_PREFIX##_H5Lcreate_hard_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Lcreate_soft_async
#define H5Lcreate_soft_async(...) HD5_MANGLE_PREFIX##_H5Lcreate_soft_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Ldelete_async
#define H5Ldelete_async(...) HD5_MANGLE_PREFIX##_H5Ldelete_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Ldelete_by_idx_async
#define H5Ldelete_by_idx_async(...) HD5_MANGLE_PREFIX##_H5Ldelete_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Lexists_async
#define H5Lexists_async(...) HD5_MANGLE_PREFIX##_H5Lexists_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Literate_async
#define H5Literate_async(...) HD5_MANGLE_PREFIX##_H5Literate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
10 changes: 5 additions & 5 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Mpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -650,11 +650,11 @@ H5_DLL herr_t H5Mdelete(hid_t map_id, hid_t key_mem_type_id, const void *key, hi
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5M_MODULE
#define H5Mcreate_async(...) H5Mcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mopen_async(...) H5Mopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mclose_async(...) H5Mclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mput_async(...) H5Mput_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mget_async(...) H5Mget_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mcreate_async(...) HD5_MANGLE_PREFIX##_H5Mcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mopen_async(...) HD5_MANGLE_PREFIX##_H5Mopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mclose_async(...) HD5_MANGLE_PREFIX##_H5Mclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mput_async(...) HD5_MANGLE_PREFIX##_H5Mput_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Mget_async(...) HD5_MANGLE_PREFIX##_H5Mget_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5. */
Expand Down
21 changes: 14 additions & 7 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Opublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1660,13 +1660,20 @@ H5_DLL herr_t H5Otoken_from_str(hid_t loc_id, const char *token_str, H5O_token_t
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5O_MODULE
#define H5Oopen_async(...) H5Oopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Oopen_by_idx_async(...) H5Oopen_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Oget_info_by_name_async(...) H5Oget_info_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Oclose_async(...) H5Oclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Oflush_async(...) H5Oflush_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Orefresh_async(...) H5Orefresh_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Ocopy_async(...) H5Ocopy_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Oopen_async
#define H5Oopen_async(...) HD5_MANGLE_PREFIX##_H5Oopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Oopen_by_idx_async
#define H5Oopen_by_idx_async(...) HD5_MANGLE_PREFIX##_H5Oopen_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Oget_info_by_name_async
#define H5Oget_info_by_name_async(...) HD5_MANGLE_PREFIX##_H5Oget_info_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Oclose_async
#define H5Oclose_async(...) HD5_MANGLE_PREFIX##_H5Oclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Oflush_async
#define H5Oflush_async(...) HD5_MANGLE_PREFIX##_H5Oflush_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Orefresh_async
#define H5Orefresh_async(...) HD5_MANGLE_PREFIX##_H5Orefresh_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Ocopy_async
#define H5Ocopy_async(...) HD5_MANGLE_PREFIX##_H5Ocopy_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
9 changes: 6 additions & 3 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Rpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -601,9 +601,12 @@ H5_DLL ssize_t H5Rget_attr_name(const H5R_ref_t *ref_ptr, char *name, size_t siz
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5R_MODULE
#define H5Ropen_object_async(...) H5Ropen_object_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Ropen_region_async(...) H5Ropen_region_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Ropen_attr_async(...) H5Ropen_attr_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Ropen_object_async
#define H5Ropen_object_async(...) HD5_MANGLE_PREFIX##_H5Ropen_object_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Ropen_region_async
#define H5Ropen_region_async(...) HD5_MANGLE_PREFIX##_H5Ropen_region_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Ropen_attr_async
#define H5Ropen_attr_async(...) HD5_MANGLE_PREFIX##_H5Ropen_attr_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5. */
Expand Down
9 changes: 6 additions & 3 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5Tpublic.h
Original file line number Diff line number Diff line change
Expand Up @@ -2801,9 +2801,12 @@ H5_DLL herr_t H5Treclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *bu
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
#ifndef H5T_MODULE
#define H5Tcommit_async(...) H5Tcommit_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Topen_async(...) H5Topen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5Tclose_async(...) H5Tclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Tcommit_async
#define H5Tcommit_async(...) HD5_MANGLE_PREFIX##_H5Tcommit_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Topen_async
#define H5Topen_async(...) HD5_MANGLE_PREFIX##_H5Topen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5Tclose_async
#define H5Tclose_async(...) HD5_MANGLE_PREFIX##_H5Tclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5. */
Expand Down
21 changes: 14 additions & 7 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5VLconnector.h
Original file line number Diff line number Diff line change
Expand Up @@ -1141,13 +1141,20 @@ H5_DLL herr_t H5VLrequest_optional_op(void *req, hid_t connector_id, H5VL_option
/* (And must only defined when included in application code, not the library) */
#ifndef H5VL_MODULE
/* Inject application compile-time macros into function calls */
#define H5VLattr_optional_op(...) H5VLattr_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5VLdataset_optional_op(...) H5VLdataset_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5VLdatatype_optional_op(...) H5VLdatatype_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5VLfile_optional_op(...) H5VLfile_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5VLgroup_optional_op(...) H5VLgroup_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5VLlink_optional_op(...) H5VLlink_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#define H5VLobject_optional_op(...) H5VLobject_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLattr_optional_op
#define H5VLattr_optional_op(...) HD5_MANGLE_PREFIX##_H5VLattr_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLdataset_optional_op
#define H5VLdataset_optional_op(...) HD5_MANGLE_PREFIX##_H5VLdataset_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLdatatype_optional_op
#define H5VLdatatype_optional_op(...) HD5_MANGLE_PREFIX##_H5VLdatatype_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLfile_optional_op
#define H5VLfile_optional_op(...) HD5_MANGLE_PREFIX##_H5VLfile_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLgroup_optional_op
#define H5VLgroup_optional_op(...) HD5_MANGLE_PREFIX##_H5VLgroup_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLlink_optional_op
#define H5VLlink_optional_op(...) HD5_MANGLE_PREFIX##_H5VLlink_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)
#undef H5VLobject_optional_op
#define H5VLobject_optional_op(...) HD5_MANGLE_PREFIX##_H5VLobject_optional_op(__FILE__, __func__, __LINE__, __VA_ARGS__)

/* Define "wrapper" versions of function calls, to allow compile-time values to
* be passed in by language wrapper or library layer on top of HDF5.
Expand Down
6 changes: 6 additions & 0 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/itk_hdf5_mangle.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,14 @@ Where *mangle.txt includes the results per platform from above along with an old

After building, note any duplicate symbol warnings and remove corresponding definitions that are delegated to versioned definitions,
e.g. remove mangling for H5Fget_info but leave it for H5Fget_info1 and H5Fget_info2

There are a number of HDF5 functions, mostly with this suffix "_async", which are redefined in the HDF5 library to have
a different signature. These functions also redefined here to mangle then names, but the public library header files
also have to be modified correctly apply the signature to the mangled name.
*/

#define HD5_MANGLE_PREFIX @MANGLE_PREFIX@

#define ALL_ @MANGLE_PREFIX@_ALL_
#define ALPHA_B16 @MANGLE_PREFIX@_ALPHA_B16
#define ALPHA_B16_ @MANGLE_PREFIX@_ALPHA_B16_
Expand Down

0 comments on commit f48fc47

Please sign in to comment.