H5Mpublic.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. * Copyright by The HDF Group. *
  3. * Copyright by the Board of Trustees of the University of Illinois. *
  4. * All rights reserved. *
  5. * *
  6. * This file is part of HDF5. The full HDF5 copyright notice, including *
  7. * terms governing use, modification, and redistribution, is contained in *
  8. * the COPYING file, which can be found at the root of the source code *
  9. * distribution tree, or in https://www.hdfgroup.org/licenses. *
  10. * If you do not have access to either file, you may request a copy from *
  11. * help@hdfgroup.org. *
  12. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  13. /*
  14. * This file contains public declarations for the H5M module.
  15. *
  16. * NOTE: This is an experimental API. Everything in the H5M package
  17. * is subject to revision in a future release.
  18. */
  19. #ifndef H5Mpublic_H
  20. #define H5Mpublic_H
  21. /* System headers needed by this file */
  22. /* Public headers needed by this file */
  23. #include "H5public.h"
  24. #include "H5Ipublic.h"
  25. #include "H5VLconnector.h"
  26. /*****************/
  27. /* Public Macros */
  28. /*****************/
  29. /* Macros defining operation IDs for map VOL callbacks (implemented using the
  30. * "optional" VOL callback) */
  31. #define H5VL_MAP_CREATE 1
  32. #define H5VL_MAP_OPEN 2
  33. #define H5VL_MAP_GET_VAL 3
  34. #define H5VL_MAP_EXISTS 4
  35. #define H5VL_MAP_PUT 5
  36. #define H5VL_MAP_GET 6
  37. #define H5VL_MAP_SPECIFIC 7
  38. #define H5VL_MAP_OPTIONAL 8
  39. #define H5VL_MAP_CLOSE 9
  40. /*******************/
  41. /* Public Typedefs */
  42. /*******************/
  43. /* types for map GET callback */
  44. typedef enum H5VL_map_get_t {
  45. H5VL_MAP_GET_MAPL, /* map access property list */
  46. H5VL_MAP_GET_MCPL, /* map creation property list */
  47. H5VL_MAP_GET_KEY_TYPE, /* key type */
  48. H5VL_MAP_GET_VAL_TYPE, /* value type */
  49. H5VL_MAP_GET_COUNT /* key count */
  50. } H5VL_map_get_t;
  51. /* types for map SPECIFIC callback */
  52. typedef enum H5VL_map_specific_t {
  53. H5VL_MAP_ITER, /* H5Miterate */
  54. H5VL_MAP_DELETE /* H5Mdelete */
  55. } H5VL_map_specific_t;
  56. //! <!-- [H5M_iterate_t_snip] -->
  57. /**
  58. * Callback for H5Miterate()
  59. */
  60. typedef herr_t (*H5M_iterate_t)(hid_t map_id, const void *key, void *op_data);
  61. //! <!-- [H5M_iterate_t_snip] -->
  62. /* Parameters for map operations */
  63. typedef union H5VL_map_args_t {
  64. /* H5VL_MAP_CREATE */
  65. struct {
  66. H5VL_loc_params_t loc_params; /* Location parameters for object */
  67. const char * name; /* Name of new map object */
  68. hid_t lcpl_id; /* Link creation property list for map */
  69. hid_t key_type_id; /* Datatype for map keys */
  70. hid_t val_type_id; /* Datatype for map values */
  71. hid_t mcpl_id; /* Map creation property list */
  72. hid_t mapl_id; /* Map access property list */
  73. void * map; /* Pointer to newly created map object (OUT) */
  74. } create;
  75. /* H5VL_MAP_OPEN */
  76. struct {
  77. H5VL_loc_params_t loc_params; /* Location parameters for object */
  78. const char * name; /* Name of new map object */
  79. hid_t mapl_id; /* Map access property list */
  80. void * map; /* Pointer to newly created map object (OUT) */
  81. } open;
  82. /* H5VL_MAP_GET_VAL */
  83. struct {
  84. hid_t key_mem_type_id; /* Memory datatype for key */
  85. const void *key; /* Pointer to key */
  86. hid_t value_mem_type_id; /* Memory datatype for value */
  87. void * value; /* Buffer for value (OUT) */
  88. } get_val;
  89. /* H5VL_MAP_EXISTS */
  90. struct {
  91. hid_t key_mem_type_id; /* Memory datatype for key */
  92. const void *key; /* Pointer to key */
  93. hbool_t exists; /* Flag indicating whether key exists in map (OUT) */
  94. } exists;
  95. /* H5VL_MAP_PUT */
  96. struct {
  97. hid_t key_mem_type_id; /* Memory datatype for key */
  98. const void *key; /* Pointer to key */
  99. hid_t value_mem_type_id; /* Memory datatype for value */
  100. const void *value; /* Pointer to value */
  101. } put;
  102. /* H5VL_MAP_GET */
  103. struct {
  104. H5VL_map_get_t get_type; /* 'get' operation to perform */
  105. /* Parameters for each operation */
  106. union {
  107. /* H5VL_MAP_GET_MAPL */
  108. struct {
  109. hid_t mapl_id; /* Map access property list ID (OUT) */
  110. } get_mapl;
  111. /* H5VL_MAP_GET_MCPL */
  112. struct {
  113. hid_t mcpl_id; /* Map creation property list ID (OUT) */
  114. } get_mcpl;
  115. /* H5VL_MAP_GET_KEY_TYPE */
  116. struct {
  117. hid_t type_id; /* Datatype ID for map's keys (OUT) */
  118. } get_key_type;
  119. /* H5VL_MAP_GET_VAL_TYPE */
  120. struct {
  121. hid_t type_id; /* Datatype ID for map's values (OUT) */
  122. } get_val_type;
  123. /* H5VL_MAP_GET_COUNT */
  124. struct {
  125. hsize_t count; /* # of KV pairs in map (OUT) */
  126. } get_count;
  127. } args;
  128. } get;
  129. /* H5VL_MAP_SPECIFIC */
  130. struct {
  131. H5VL_map_specific_t specific_type; /* 'specific' operation to perform */
  132. /* Parameters for each operation */
  133. union {
  134. /* H5VL_MAP_ITER */
  135. struct {
  136. H5VL_loc_params_t loc_params; /* Location parameters for object */
  137. hsize_t idx; /* Start/end iteration index (IN/OUT) */
  138. hid_t key_mem_type_id; /* Memory datatype for key */
  139. H5M_iterate_t op; /* Iteration callback routine */
  140. void * op_data; /* Pointer to callback context */
  141. } iterate;
  142. /* H5VL_MAP_DELETE */
  143. struct {
  144. H5VL_loc_params_t loc_params; /* Location parameters for object */
  145. hid_t key_mem_type_id; /* Memory datatype for key */
  146. const void * key; /* Pointer to key */
  147. } del;
  148. } args;
  149. } specific;
  150. /* H5VL_MAP_OPTIONAL */
  151. /* Unused */
  152. /* H5VL_MAP_CLOSE */
  153. /* No args */
  154. } H5VL_map_args_t;
  155. /********************/
  156. /* Public Variables */
  157. /********************/
  158. /*********************/
  159. /* Public Prototypes */
  160. /*********************/
  161. #ifdef __cplusplus
  162. extern "C" {
  163. #endif
  164. /* The map API is only built when requested since there's no support in
  165. * the native file format at this time. It's only supported in a few VOL
  166. * connectors.
  167. */
  168. #ifdef H5_HAVE_MAP_API
  169. /**
  170. * \ingroup H5M
  171. *
  172. * \brief Creates a map object
  173. *
  174. * \fgdta_loc_id
  175. * \param[in] name Map object name
  176. * \type_id{key_type_id}
  177. * \type_id{val_type_id}
  178. * \lcpl_id
  179. * \mcpl_id
  180. * \mapl_id
  181. * \returns \hid_t{map object}
  182. *
  183. * \details H5Mcreate() creates a new map object for storing key-value
  184. * pairs. The in-file datatype for keys is defined by \p key_type_id
  185. * and the in-file datatype for values is defined by \p val_type_id. \p
  186. * loc_id specifies the location to create the the map object and \p
  187. * name specifies the name of the link to the map object relative to
  188. * \p loc_id.
  189. *
  190. * \since 1.12.0
  191. *
  192. */
  193. H5_DLL hid_t H5Mcreate(hid_t loc_id, const char *name, hid_t key_type_id, hid_t val_type_id, hid_t lcpl_id,
  194. hid_t mcpl_id, hid_t mapl_id);
  195. /**
  196. * --------------------------------------------------------------------------
  197. * \ingroup ASYNC
  198. * \async_variant_of{H5Mcreate}
  199. */
  200. H5_DLL hid_t H5Mcreate_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
  201. const char *name, hid_t key_type_id, hid_t val_type_id, hid_t lcpl_id,
  202. hid_t mcpl_id, hid_t mapl_id, hid_t es_id);
  203. /**
  204. * \ingroup H5M
  205. *
  206. * \brief
  207. *
  208. * \details
  209. *
  210. * \since 1.12.0
  211. *
  212. */
  213. H5_DLL hid_t H5Mcreate_anon(hid_t loc_id, hid_t key_type_id, hid_t val_type_id, hid_t mcpl_id, hid_t mapl_id);
  214. /**
  215. * \ingroup H5M
  216. *
  217. * \brief Opens a map object
  218. *
  219. * \fgdta_loc_id{loc_id}
  220. * \param[in] name Map object name relative to \p loc_id
  221. * \mapl_id
  222. * \returns \hid_t{map object}
  223. *
  224. * \details H5Mopen() finds a map object specified by \p name under the location
  225. * specified by \p loc_id. The map object should be close with
  226. * H5Mclose() when the application is not longer interested in
  227. * accessing it.
  228. *
  229. * \since 1.12.0
  230. *
  231. */
  232. H5_DLL hid_t H5Mopen(hid_t loc_id, const char *name, hid_t mapl_id);
  233. /**
  234. * --------------------------------------------------------------------------
  235. * \ingroup ASYNC
  236. * \async_variant_of{H5Mopen}
  237. */
  238. H5_DLL hid_t H5Mopen_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
  239. const char *name, hid_t mapl_id, hid_t es_id);
  240. /**
  241. * \ingroup H5M
  242. *
  243. * \brief Terminates access to a map object
  244. *
  245. * \map_id
  246. * \returns \herr_t
  247. *
  248. * \details H5Mclose() closes access to a map object specified by \p map_id and
  249. * releases resources used by it.
  250. *
  251. * It is illegal to subsequently use that same map identifier in calls
  252. * to other map functions.
  253. *
  254. * \since 1.12.0
  255. *
  256. */
  257. H5_DLL herr_t H5Mclose(hid_t map_id);
  258. /**
  259. * --------------------------------------------------------------------------
  260. * \ingroup ASYNC
  261. * \async_variant_of{H5Mclose}
  262. */
  263. H5_DLL herr_t H5Mclose_async(const char *app_file, const char *app_func, unsigned app_line, hid_t map_id,
  264. hid_t es_id);
  265. /**
  266. * \ingroup H5M
  267. *
  268. * \brief Gets key datatype for a map object
  269. *
  270. * \map_id
  271. * \returns \hid_t{datatype}
  272. *
  273. * \details H5Mget_key_type() retrieves key datatype as stored in the file for a
  274. * map object specified by \p map_id and returns identifier for the
  275. * datatype.
  276. *
  277. * \since 1.12.0
  278. *
  279. */
  280. H5_DLL hid_t H5Mget_key_type(hid_t map_id);
  281. /**
  282. * \ingroup H5M
  283. *
  284. * \brief Gets value datatype for a map object
  285. *
  286. * \map_id
  287. * \returns \hid_t{datatype}
  288. *
  289. * \details H5Mget_val_type() retrieves value datatype as stored in the file for
  290. * a map object specified by \p map_id and returns identifier for the
  291. * datatype .
  292. *
  293. * \since 1.12.0
  294. *
  295. */
  296. H5_DLL hid_t H5Mget_val_type(hid_t map_id);
  297. /**
  298. * \ingroup H5M
  299. *
  300. * \brief Gets creation property list for a map object
  301. *
  302. * \map_id
  303. * \returns \hid_t{map creation property list}
  304. *
  305. * \details H5Mget_create_plist() returns an identifier for a copy of the
  306. * creation property list for a map object specified by \p map_id.
  307. *
  308. * \since 1.12.0
  309. *
  310. */
  311. H5_DLL hid_t H5Mget_create_plist(hid_t map_id);
  312. /**
  313. * \ingroup H5M
  314. *
  315. * \brief Gets access property list for a map object
  316. *
  317. * \map_id
  318. * \returns \hid_t{map access property list}
  319. *
  320. * \details H5Mget_access_plist() returns an identifier for a copy of the access
  321. * property list for a map object specified by \p map_id.
  322. *
  323. * \since 1.12.0
  324. *
  325. */
  326. H5_DLL hid_t H5Mget_access_plist(hid_t map_id);
  327. /**
  328. * \ingroup H5M
  329. *
  330. * \brief Retrieves the number of key-value pairs in a map object
  331. *
  332. * \map_id
  333. * \param[out] count The number of key-value pairs stored in the map object
  334. * \dxpl_id
  335. * \returns \herr_t
  336. *
  337. * \details H5Mget_count() retrieves the number of key-value pairs stored in a
  338. * map specified by map_id.
  339. *
  340. * \since 1.12.0
  341. *
  342. */
  343. H5_DLL herr_t H5Mget_count(hid_t map_id, hsize_t *count, hid_t dxpl_id);
  344. /**
  345. * \ingroup H5M
  346. *
  347. * \brief Adds a key-value pair to a map object
  348. *
  349. * \map_id
  350. * \type_id{key_mem_type_id}
  351. * \param[in] key Pointer to key buffer
  352. * \type_id{val_mem_type_id}
  353. * \param[in] value Pointer to value buffer
  354. * \dxpl_id
  355. * \returns \herr_t
  356. *
  357. * \details H5Mput() adds a key-value pair to a map object specified by \p
  358. * map_id, or updates the value for the specified key if one was set
  359. * previously.
  360. *
  361. * \p key_mem_type_id and \p val_mem_type_id specify the datatypes for
  362. * the provided key and value buffers, and if different from those used
  363. * to create the map object, the key and value will be internally
  364. * converted to the datatypes for the map object.
  365. *
  366. * Any further options can be specified through the property list
  367. * \p dxpl_id.
  368. *
  369. * \since 1.12.0
  370. *
  371. */
  372. H5_DLL herr_t H5Mput(hid_t map_id, hid_t key_mem_type_id, const void *key, hid_t val_mem_type_id,
  373. const void *value, hid_t dxpl_id);
  374. /**
  375. * --------------------------------------------------------------------------
  376. * \ingroup ASYNC
  377. * \async_variant_of{H5Mput}
  378. */
  379. H5_DLL herr_t H5Mput_async(const char *app_file, const char *app_func, unsigned app_line, hid_t map_id,
  380. hid_t key_mem_type_id, const void *key, hid_t val_mem_type_id, const void *value,
  381. hid_t dxpl_id, hid_t es_id);
  382. /**
  383. * \ingroup H5M
  384. *
  385. * \brief Retrieves a key-value pair from a map object
  386. *
  387. * \map_id
  388. * \type_id{key_mem_type_id}
  389. * \param[in] key Pointer to key buffer
  390. * \type_id{val_mem_type_id}
  391. * \param[out] value Pointer to value buffer
  392. * \dxpl_id
  393. * \returns \herr_t
  394. *
  395. * \details H5Mget() retrieves from a map object specified by \p map_id, the
  396. * value associated with the provided key \p key. \p key_mem_type_id
  397. * and \p val_mem_type_id specify the datatypes for the provided key
  398. * and value buffers. If if the datatype specified by \p
  399. * key_mem_type_id is different from that used to create the map object
  400. * the key will be internally converted to the datatype for the map
  401. * object for the query, and if the datatype specified by \p
  402. * val_mem_type_id is different from that used to create the map object
  403. * the returned value will be converted to have a datatype as specified
  404. * by \p val_mem_type_id before the function returns.
  405. *
  406. * Any further options can be specified through the property list
  407. * \p dxpl_id.
  408. *
  409. * \since 1.12.0
  410. *
  411. */
  412. H5_DLL herr_t H5Mget(hid_t map_id, hid_t key_mem_type_id, const void *key, hid_t val_mem_type_id, void *value,
  413. hid_t dxpl_id);
  414. /**
  415. * --------------------------------------------------------------------------
  416. * \ingroup ASYNC
  417. * \async_variant_of{H5Mget}
  418. */
  419. H5_DLL herr_t H5Mget_async(const char *app_file, const char *app_func, unsigned app_line, hid_t map_id,
  420. hid_t key_mem_type_id, const void *key, hid_t val_mem_type_id, void *value,
  421. hid_t dxpl_id, hid_t es_id);
  422. /**
  423. * \ingroup H5M
  424. *
  425. * \brief Checks if provided key exists in a map object
  426. *
  427. * \map_id
  428. * \type_id{key_mem_type_id}
  429. * \param[in] key Pointer to key buffer
  430. * \param[out] exists Pointer to a buffer to return the existence status
  431. * \dxpl_id
  432. * \returns \herr_t
  433. *
  434. * \details H5Mexists() checks if the provided key is stored in the map object
  435. * specified by \p map_id. If \p key_mem_type_id is different from that
  436. * used to create the map object the key will be internally converted
  437. * to the datatype for the map object for the query.
  438. *
  439. * Any further options can be specified through the property list
  440. * \p dxpl_id.
  441. *
  442. * \since 1.12.0
  443. *
  444. */
  445. H5_DLL herr_t H5Mexists(hid_t map_id, hid_t key_mem_type_id, const void *key, hbool_t *exists, hid_t dxpl_id);
  446. /**
  447. * \ingroup H5M
  448. *
  449. * \brief Iterates over all key-value pairs in a map object
  450. *
  451. * \map_id
  452. * \param[in,out] idx iteration index
  453. * \type_id{key_mem_type_id}
  454. * \param[in] op User-defined iterator function
  455. * \op_data
  456. * \dxpl_id
  457. * \returns \herr_t
  458. *
  459. * \details H5Miterate() iterates over all key-value pairs stored in the map
  460. * object specified by \p map_id, making the callback specified by \p
  461. * op for each. The \p idx parameter is an in/out parameter that may be
  462. * used to restart a previously interrupted iteration. At the start of
  463. * iteration \p idx should be set to 0, and to restart iteration at the
  464. * same location on a subsequent call to H5Miterate(), \p idx should be
  465. * the same value as returned by the previous call. Iterate callback is
  466. * defined as:
  467. * \snippet this H5M_iterate_t_snip
  468. * The \p key parameter is the buffer for the key for this iteration,
  469. * converted to the datatype specified by \p key_mem_type_id. The \p
  470. * op_data parameter is a simple pass through of the value passed to
  471. * H5Miterate(), which can be used to store application-defined data for
  472. * iteration. A negative return value from this function will cause
  473. * H5Miterate() to issue an error, while a positive return value will
  474. * cause H5Miterate() to stop iterating and return this value without
  475. * issuing an error. A return value of zero allows iteration to continue.
  476. *
  477. * Any further options can be specified through the property list \p dxpl_id.
  478. *
  479. * \since 1.12.0
  480. *
  481. */
  482. H5_DLL herr_t H5Miterate(hid_t map_id, hsize_t *idx, hid_t key_mem_type_id, H5M_iterate_t op, void *op_data,
  483. hid_t dxpl_id);
  484. /**
  485. * \ingroup H5M
  486. *
  487. * \brief Iterates over all key-value pairs in a map object
  488. *
  489. * \loc_id
  490. * \param[in] map_name Map object name relative to the location specified by \p loc_id
  491. * \param[in,out] idx Iteration index
  492. * \type_id{key_mem_type_id}
  493. * \param[in] op User-defined iterator function
  494. * \op_data
  495. * \dxpl_id
  496. * \lapl_id
  497. * \returns \herr_t
  498. *
  499. * \details H5Miterate_by_name() iterates over all key-value pairs stored in the
  500. * map object specified by \p map_id, making the callback specified by
  501. * \p op for each. The \p idx parameter is an in/out parameter that may
  502. * be used to restart a previously interrupted iteration. At the start
  503. * of iteration \p idx should be set to 0, and to restart iteration at
  504. * the same location on a subsequent call to H5Miterate(), \p idx
  505. * should be the same value as returned by the previous call. Iterate
  506. * callback is defined as:
  507. * \snippet this H5M_iterate_t_snip
  508. * The\p key parameter is the buffer for the key for this iteration,
  509. * converted to the datatype specified by \p key_mem_type_id. The \p
  510. * op_data parameter is a simple pass through of the value passed to
  511. * H5Miterate(), which can be used to store application-defined data
  512. * for iteration. A negative return value from this function will cause
  513. * H5Miterate() to issue an error, while a positive return value will cause
  514. * H5Miterate() to stop iterating and return this value without issuing an
  515. * error. A return value of zero allows iteration to continue.
  516. *
  517. * Any further options can be specified through the property list \p dxpl_id.
  518. *
  519. * \since 1.12.0
  520. *
  521. */
  522. H5_DLL herr_t H5Miterate_by_name(hid_t loc_id, const char *map_name, hsize_t *idx, hid_t key_mem_type_id,
  523. H5M_iterate_t op, void *op_data, hid_t dxpl_id, hid_t lapl_id);
  524. /**
  525. * \ingroup H5M
  526. *
  527. * \brief Deletes a key-value pair from a map object
  528. *
  529. * \map_id
  530. * \type_id{key_mem_type_id}
  531. * \param[in] key Pointer to key buffer
  532. * \dxpl_id
  533. * \returns \herr_t
  534. *
  535. * \details H5Mdelete() deletes a key-value pair from the map object specified
  536. * by \p map_id. \p key_mem_type_id specifies the datatype for the
  537. * provided key buffer key, and if different from that used to create
  538. * the map object, the key will be internally converted to the datatype
  539. * for the map object.
  540. *
  541. * Any further options can be specified through the property list \p dxpl_id.
  542. *
  543. * \since 1.12.0
  544. *
  545. */
  546. H5_DLL herr_t H5Mdelete(hid_t map_id, hid_t key_mem_type_id, const void *key, hid_t dxpl_id);
  547. /// \cond DEV
  548. /* API Wrappers for async routines */
  549. /* (Must be defined _after_ the function prototype) */
  550. /* (And must only defined when included in application code, not the library) */
  551. #ifndef H5M_MODULE
  552. #define H5Mcreate_async(...) H5Mcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  553. #define H5Mopen_async(...) H5Mopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  554. #define H5Mclose_async(...) H5Mclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  555. #define H5Mput_async(...) H5Mput_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  556. #define H5Mget_async(...) H5Mget_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  557. /* Define "wrapper" versions of function calls, to allow compile-time values to
  558. * be passed in by language wrapper or library layer on top of HDF5. */
  559. #define H5Mcreate_async_wrap H5_NO_EXPAND(H5Mcreate_async)
  560. #define H5Mopen_async_wrap H5_NO_EXPAND(H5Mopen_async)
  561. #define H5Mclose_async_wrap H5_NO_EXPAND(H5Mclose_async)
  562. #define H5Mput_async_wrap H5_NO_EXPAND(H5Mput_async)
  563. #define H5Mget_async_wrap H5_NO_EXPAND(H5Mget_async)
  564. #endif /* H5M_MODULE */
  565. /// \endcond
  566. /* Symbols defined for compatibility with previous versions of the HDF5 API.
  567. *
  568. * Use of these symbols is deprecated.
  569. */
  570. #ifndef H5_NO_DEPRECATED_SYMBOLS
  571. #endif /* H5_NO_DEPRECATED_SYMBOLS */
  572. #endif /* H5_HAVE_MAP_API */
  573. #ifdef __cplusplus
  574. }
  575. #endif
  576. #endif /* H5Mpublic_H */