summaryrefslogtreecommitdiffstats
path: root/src/H5Mpublic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Mpublic.h')
-rw-r--r--src/H5Mpublic.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/H5Mpublic.h b/src/H5Mpublic.h
index 3f6bf01..3f94edb 100644
--- a/src/H5Mpublic.h
+++ b/src/H5Mpublic.h
@@ -25,6 +25,7 @@
/* Public headers needed by this file */
#include "H5public.h"
#include "H5Ipublic.h"
+#include "H5VLconnector.h"
/*****************/
/* Public Macros */
@@ -68,6 +69,115 @@ typedef enum H5VL_map_specific_t {
typedef herr_t (*H5M_iterate_t)(hid_t map_id, const void *key, void *op_data);
//! <!-- [H5M_iterate_t_snip] -->
+/* Parameters for map operations */
+typedef union H5VL_map_args_t {
+ /* H5VL_MAP_CREATE */
+ struct {
+ H5VL_loc_params_t loc_params; /* Location parameters for object */
+ const char * name; /* Name of new map object */
+ hid_t lcpl_id; /* Link creation property list for map */
+ hid_t key_type_id; /* Datatype for map keys */
+ hid_t val_type_id; /* Datatype for map values */
+ hid_t mcpl_id; /* Map creation property list */
+ hid_t mapl_id; /* Map access property list */
+ void * map; /* Pointer to newly created map object (OUT) */
+ } create;
+
+ /* H5VL_MAP_OPEN */
+ struct {
+ H5VL_loc_params_t loc_params; /* Location parameters for object */
+ const char * name; /* Name of new map object */
+ hid_t mapl_id; /* Map access property list */
+ void * map; /* Pointer to newly created map object (OUT) */
+ } open;
+
+ /* H5VL_MAP_GET_VAL */
+ struct {
+ hid_t key_mem_type_id; /* Memory datatype for key */
+ const void *key; /* Pointer to key */
+ hid_t value_mem_type_id; /* Memory datatype for value */
+ void * value; /* Buffer for value (OUT) */
+ } get_val;
+
+ /* H5VL_MAP_EXISTS */
+ struct {
+ hid_t key_mem_type_id; /* Memory datatype for key */
+ const void *key; /* Pointer to key */
+ hbool_t exists; /* Flag indicating whether key exists in map (OUT) */
+ } exists;
+
+ /* H5VL_MAP_PUT */
+ struct {
+ hid_t key_mem_type_id; /* Memory datatype for key */
+ const void *key; /* Pointer to key */
+ hid_t value_mem_type_id; /* Memory datatype for value */
+ const void *value; /* Pointer to value */
+ } put;
+
+ /* H5VL_MAP_GET */
+ struct {
+ H5VL_map_get_t get_type; /* 'get' operation to perform */
+
+ /* Parameters for each operation */
+ union {
+ /* H5VL_MAP_GET_MAPL */
+ struct {
+ hid_t mapl_id; /* Map access property list ID (OUT) */
+ } get_mapl;
+
+ /* H5VL_MAP_GET_MCPL */
+ struct {
+ hid_t mcpl_id; /* Map creation property list ID (OUT) */
+ } get_mcpl;
+
+ /* H5VL_MAP_GET_KEY_TYPE */
+ struct {
+ hid_t type_id; /* Datatype ID for map's keys (OUT) */
+ } get_key_type;
+
+ /* H5VL_MAP_GET_VAL_TYPE */
+ struct {
+ hid_t type_id; /* Datatype ID for map's values (OUT) */
+ } get_val_type;
+
+ /* H5VL_MAP_GET_COUNT */
+ struct {
+ hsize_t count; /* # of KV pairs in map (OUT) */
+ } get_count;
+ } args;
+ } get;
+
+ /* H5VL_MAP_SPECIFIC */
+ struct {
+ H5VL_map_specific_t specific_type; /* 'specific' operation to perform */
+
+ /* Parameters for each operation */
+ union {
+ /* H5VL_MAP_ITER */
+ struct {
+ H5VL_loc_params_t loc_params; /* Location parameters for object */
+ hsize_t idx; /* Start/end iteration index (IN/OUT) */
+ hid_t key_mem_type_id; /* Memory datatype for key */
+ H5M_iterate_t op; /* Iteration callback routine */
+ void * op_data; /* Pointer to callback context */
+ } iterate;
+
+ /* H5VL_MAP_DELETE */
+ struct {
+ H5VL_loc_params_t loc_params; /* Location parameters for object */
+ hid_t key_mem_type_id; /* Memory datatype for key */
+ const void * key; /* Pointer to key */
+ } del;
+ } args;
+ } specific;
+
+ /* H5VL_MAP_OPTIONAL */
+ /* Unused */
+
+ /* H5VL_MAP_CLOSE */
+ /* No args */
+} H5VL_map_args_t;
+
/********************/
/* Public Variables */
/********************/
@@ -478,6 +588,7 @@ H5_DLL herr_t H5Miterate_by_name(hid_t loc_id, const char *map_name, hsize_t *id
*/
H5_DLL herr_t H5Mdelete(hid_t map_id, hid_t key_mem_type_id, const void *key, hid_t dxpl_id);
+/// \cond DEV
/* API Wrappers for async routines */
/* (Must be defined _after_ the function prototype) */
/* (And must only defined when included in application code, not the library) */
@@ -496,6 +607,7 @@ H5_DLL herr_t H5Mdelete(hid_t map_id, hid_t key_mem_type_id, const void *key, hi
#define H5Mput_async_wrap H5_NO_EXPAND(H5Mput_async)
#define H5Mget_async_wrap H5_NO_EXPAND(H5Mget_async)
#endif /* H5M_MODULE */
+/// \endcond
/* Symbols defined for compatibility with previous versions of the HDF5 API.
*