summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2012-06-29 17:28:10 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2012-06-29 17:28:10 (GMT)
commit358cac8ec8cd1989bf0b47d255751c6d4130c0fc (patch)
tree50907abf9364fed3f8067de4f7064bc9a4f66ced
parent5f34b5703d93fd795f136054a191008affb80011 (diff)
downloadhdf5-358cac8ec8cd1989bf0b47d255751c6d4130c0fc.zip
hdf5-358cac8ec8cd1989bf0b47d255751c6d4130c0fc.tar.gz
hdf5-358cac8ec8cd1989bf0b47d255751c6d4130c0fc.tar.bz2
[svn-r22502] implement named datatypes solution in object headers
modify datatype open and get_binary callbacks to be disjoint
-rw-r--r--src/H5I.c5
-rw-r--r--src/H5O.c3
-rw-r--r--src/H5Tcommit.c78
-rw-r--r--src/H5Toh.c14
-rw-r--r--src/H5Tprivate.h3
-rw-r--r--src/H5VLint.c29
-rw-r--r--src/H5VLnative.c66
-rw-r--r--src/H5VLprivate.h5
-rw-r--r--src/H5VLpublic.h6
9 files changed, 111 insertions, 98 deletions
diff --git a/src/H5I.c b/src/H5I.c
index e8df636..a7ae3b4 100644
--- a/src/H5I.c
+++ b/src/H5I.c
@@ -2270,11 +2270,14 @@ H5I_get_file_id(hid_t obj_id, hbool_t app_ref)
/* get the file object */
if(NULL == (obj = (void *)H5I_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
-
/* get the plugin pointer */
if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
+ if (H5I_DATATYPE == type) {
+ if (NULL == (obj = H5T_get_named_type((H5T_t *)obj)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a named datatype")
+ }
/* Get the file through the VOL */
if(H5VL_file_get(obj, vol_plugin, H5VL_OBJECT_GET_FILE, H5_REQUEST_NULL,
type, app_ref, &file) < 0)
diff --git a/src/H5O.c b/src/H5O.c
index 8a20d21..3392d07 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -254,7 +254,8 @@ H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* Open the object through the VOL */
- if(NULL == (opened_obj = H5VL_object_open(obj, loc_params, vol_plugin, &opened_type, H5_REQUEST_NULL)))
+ if(NULL == (opened_obj = H5VL_object_open(obj, loc_params, vol_plugin, &opened_type,
+ H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to open object")
/* Get an atom for the object */
diff --git a/src/H5Tcommit.c b/src/H5Tcommit.c
index d30cb15..ae3bc53 100644
--- a/src/H5Tcommit.c
+++ b/src/H5Tcommit.c
@@ -620,16 +620,24 @@ H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id)
if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
+ /* Create the datatype through the VOL */
+ if(NULL == (dt = H5VL_datatype_open(obj, loc_params, vol_plugin, name, tapl_id, H5_REQUEST_NULL)))
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to open datatype")
+
+ /* Get an atom for the datatype */
+ if ((ret_value = H5VL_create_datatype(dt, vol_plugin, H5_REQUEST_NULL)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize datatype handle")
+
+#if 0
/* get required buf size for encoding the datatype */
- if((nalloc = H5VL_datatype_get_size(obj, loc_params, vol_plugin, name, tapl_id, H5_REQUEST_NULL)) < 0)
+ if((nalloc = H5VL_datatype_get_binary(obj, loc_params, vol_plugin, name, tapl_id,
+ NULL, 0, H5_REQUEST_NULL)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to get datatype size")
- buf = (unsigned char *) H5MM_malloc ((size_t)nalloc);
+ if (NULL == (buf = (unsigned char *) H5MM_malloc ((size_t)nalloc)))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "can't allocate space for datatype")
+
- /* Create the datatype through the VOL */
- if(NULL == (dt = H5VL_datatype_open(obj, loc_params, vol_plugin, name,
- buf, (size_t)nalloc, tapl_id,H5_REQUEST_NULL)))
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to open datatype")
if(NULL == (type = H5T_decode(buf)))
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't decode datatype")
@@ -646,6 +654,7 @@ H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't attach vol info to ID")
vol_plugin->nrefs ++;
+#endif
done:
if (ret_value < 0 && dt)
@@ -954,6 +963,63 @@ H5T_get_named_type(H5T_t *dt)
/*-------------------------------------------------------------------------
+ * Function: H5VL_create_datatype
+ *
+ * Purpose: Create a Library datatype with a plugin specific datatype object
+ *
+ * Return: Success: A datatype identifier
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Mohamad Chaarawi
+ * June, 2012
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t
+H5VL_create_datatype(void *dt_obj, H5VL_t *vol_plugin, hid_t req)
+{
+ ssize_t nalloc;
+ unsigned char *buf = NULL;
+ H5T_t *dt = NULL; /* datatype token from VOL plugin */
+ hid_t ret_value = FAIL;
+
+ FUNC_ENTER_NOAPI(FAIL)
+
+ /* get required buf size for encoding the datatype */
+ if((nalloc = H5VL_datatype_get_binary(dt_obj, vol_plugin, NULL, 0, H5_REQUEST_NULL)) < 0)
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to get datatype size")
+
+ /* allocate buffer to store binary description of the datatype */
+ if (NULL == (buf = (unsigned char *) H5MM_malloc ((size_t)nalloc)))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate space for datatype")
+
+ /* get binary description of the datatype */
+ if((nalloc = H5VL_datatype_get_binary(dt_obj, vol_plugin, buf, (size_t) nalloc, H5_REQUEST_NULL)) < 0)
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to get datatype size")
+
+ if(NULL == (dt = H5T_decode(buf)))
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't decode datatype")
+ dt->vol_obj = dt_obj;
+
+ H5MM_free(buf);
+
+ /* Get an atom for the datatype */
+ if((ret_value = H5I_register(H5I_DATATYPE, dt, TRUE)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize datatype handle")
+
+ /* attach VOL information to the ID */
+ if (H5I_register_aux(ret_value, vol_plugin, (H5I_free2_t)H5T_close_datatype) < 0)
+ HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't attach vol info to ID")
+
+ vol_plugin->nrefs ++;
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5VL_create_datatype() */
+
+
+/*-------------------------------------------------------------------------
* Function: H5T_close_datatype
*
* Purpose: Called when the ref count reaches zero on the datatype_id
diff --git a/src/H5Toh.c b/src/H5Toh.c
index e76070f..7961706 100644
--- a/src/H5Toh.c
+++ b/src/H5Toh.c
@@ -27,7 +27,6 @@
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Iprivate.h" /* IDs */
-#include "H5MMprivate.h" /* Memory management */
#include "H5Opkg.h" /* Object headers */
#include "H5Tpkg.h" /* Datatypes */
@@ -133,9 +132,6 @@ done:
static hid_t
H5O_dtype_open(const H5G_loc_t *obj_loc, hid_t UNUSED lapl_id, hid_t dxpl_id, hbool_t app_ref)
{
- size_t nalloc;
- unsigned char *buf = NULL;
- void *dt = NULL; /* datatype token from VOL plugin */
H5T_t *type = NULL; /* Datatype opened */
hid_t ret_value; /* Return value */
@@ -147,16 +143,6 @@ H5O_dtype_open(const H5G_loc_t *obj_loc, hid_t UNUSED lapl_id, hid_t dxpl_id, hb
if(NULL == (type = H5T_open(obj_loc, dxpl_id)))
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, FAIL, "unable to open datatype")
- if(H5T_encode(type, NULL, &nalloc) < 0)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't determine serialized length of datatype")
- buf = (unsigned char *) H5MM_malloc (nalloc);
- if(H5T_encode(type, buf, &nalloc) < 0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADTYPE, FAIL, "can't serialize datatype")
- if(NULL == (dt = H5T_decode(buf)))
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't decode datatype")
- type->vol_obj = dt;
- H5MM_free(buf);
-
/* Register an ID for the datatype */
if((ret_value = H5I_register(H5I_DATATYPE, type, app_ref)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register datatype")
diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h
index 5902bca..5408b49 100644
--- a/src/H5Tprivate.h
+++ b/src/H5Tprivate.h
@@ -24,6 +24,7 @@
/* Other public headers needed by this file */
#include "H5MMpublic.h" /* Memory management */
+#include "H5VLpublic.h" /* VOL */
/* Private headers needed by this file */
#include "H5private.h" /* Generic Functions */
@@ -140,6 +141,8 @@ H5_DLL htri_t H5T_is_variable_str(const H5T_t *dt);
H5_DLL herr_t H5T_encode(H5T_t *obj, unsigned char *buf, size_t *nalloc);
H5_DLL H5T_t *H5T_decode(const unsigned char *buf);
H5_DLL void * H5T_get_named_type(H5T_t *dt);
+H5_DLL hid_t H5VL_create_datatype(void *dt_obj, H5VL_t *vol_plugin, hid_t req);
+
/* Reference specific functions */
H5_DLL H5R_type_t H5T_get_ref_type(const H5T_t *dt);
diff --git a/src/H5VLint.c b/src/H5VLint.c
index 9f5fd91..14f7d98 100644
--- a/src/H5VLint.c
+++ b/src/H5VLint.c
@@ -315,25 +315,25 @@ H5VL_object_register(void *obj, H5I_type_t obj_type, H5VL_t *vol_plugin)
FUNC_ENTER_NOAPI(FAIL)
- /* Get an atom for the object */
- if((ret_value = H5I_register(obj_type, obj, TRUE)) < 0)
- HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize object")
-
- /* attach VOL information and free function to the ID */
+ /* Get an atom for the object and attach VOL information and free function to the ID */
switch(obj_type) {
case H5I_GROUP:
+ if((ret_value = H5I_register(obj_type, obj, TRUE)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize object")
if (H5I_register_aux(ret_value, vol_plugin, (H5I_free2_t)H5G_close_group) < 0)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't attach vol info to ID")
break;
case H5I_DATASET:
+ if((ret_value = H5I_register(obj_type, obj, TRUE)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize object")
if (H5I_register_aux(ret_value, vol_plugin, (H5I_free2_t)H5D_close_dataset) < 0)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't attach vol info to ID")
break;
case H5I_DATATYPE:
- if (H5I_register_aux(ret_value, vol_plugin, (H5I_free2_t)H5T_close_datatype) < 0)
- HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "can't attach vol info to ID")
+ if ((ret_value = H5VL_create_datatype(obj, vol_plugin, H5_REQUEST_NULL)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize datatype handle")
break;
case H5I_FILE_PRIVATE:
@@ -658,7 +658,7 @@ done:
*/
void *
H5VL_datatype_open(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin, const char *name,
- unsigned char *buf, size_t nalloc, hid_t tapl_id, hid_t req)
+ hid_t tapl_id, hid_t req)
{
void *ret_value = NULL; /* Return value */
@@ -679,7 +679,7 @@ H5VL_datatype_open(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin,
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, NULL, "unable to open object")
#endif
/* call the corresponding VOL open callback */
- if(NULL == (ret_value = (vol_plugin->cls->datatype_cls.open)(obj, loc_params, name, buf, nalloc, tapl_id, req)))
+ if(NULL == (ret_value = (vol_plugin->cls->datatype_cls.open)(obj, loc_params, name, tapl_id, req)))
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, NULL, "open failed")
done:
FUNC_LEAVE_NOAPI(ret_value)
@@ -687,7 +687,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5VL_datatype_get_size
+ * Function: H5VL_datatype_get_binary
*
* Purpose: gets required size to serialize datatype description
*
@@ -701,22 +701,21 @@ done:
*-------------------------------------------------------------------------
*/
ssize_t
-H5VL_datatype_get_size(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin,
- const char *name, hid_t tapl_id, hid_t req)
+H5VL_datatype_get_binary(void *obj, H5VL_t *vol_plugin, unsigned char *buf, size_t size, hid_t req)
{
ssize_t ret_value = FAIL;
FUNC_ENTER_NOAPI(FAIL)
/* check if the type specific corresponding VOL open callback exists */
- if(NULL == vol_plugin->cls->datatype_cls.get_size)
+ if(NULL == vol_plugin->cls->datatype_cls.get_binary)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "no datatype open callback");
/* call the corresponding VOL open callback */
- if((ret_value = (vol_plugin->cls->datatype_cls.get_size)(obj, loc_params, name, tapl_id, req)) < 0)
+ if((ret_value = (vol_plugin->cls->datatype_cls.get_binary)(obj, buf, size, req)) < 0)
HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "open failed")
done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5VL_datatype_get_size() */
+} /* end H5VL_datatype_get_binary() */
/*-------------------------------------------------------------------------
diff --git a/src/H5VLnative.c b/src/H5VLnative.c
index f56809f..b8f5550 100644
--- a/src/H5VLnative.c
+++ b/src/H5VLnative.c
@@ -76,12 +76,9 @@ static herr_t H5VL_native_attr_remove(void *obj, H5VL_loc_params_t loc_params, c
static herr_t H5VL_native_attr_close(void *attr, hid_t req);
/* Datatype callbacks */
-static void *H5VL_native_datatype_commit(void *obj, H5VL_loc_params_t loc_params, const char *name,
- hid_t type_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t req);
-static void *H5VL_native_datatype_open(void *obj, H5VL_loc_params_t loc_params, const char *name,
- unsigned char *buf, size_t nalloc, hid_t tapl_id, hid_t req);
-static ssize_t H5VL_native_datatype_get_size(void *obj, H5VL_loc_params_t loc_params, const char *name,
- hid_t tapl_id, hid_t req);
+static void *H5VL_native_datatype_commit(void *obj, H5VL_loc_params_t loc_params, const char *name, hid_t type_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t req);
+static void *H5VL_native_datatype_open(void *obj, H5VL_loc_params_t loc_params, const char *name, hid_t tapl_id, hid_t req);
+static ssize_t H5VL_native_datatype_get_binary(void *obj, unsigned char *buf, size_t size, hid_t req);
static herr_t H5VL_native_datatype_close(void *dt, hid_t req);
/* Dataset callbacks */
@@ -152,7 +149,7 @@ static H5VL_class_t H5VL_native_g = {
{ /* datatype_cls */
H5VL_native_datatype_commit, /* commit */
H5VL_native_datatype_open, /* open */
- H5VL_native_datatype_get_size, /* get_size */
+ H5VL_native_datatype_get_binary, /* get_size */
H5VL_native_datatype_close /* close */
},
{ /* dataset_cls */
@@ -1153,7 +1150,7 @@ done:
*/
static void *
H5VL_native_datatype_open(void *obj, H5VL_loc_params_t loc_params, const char *name,
- unsigned char *buf, size_t nalloc, hid_t tapl_id, hid_t UNUSED req)
+ hid_t tapl_id, hid_t UNUSED req)
{
H5T_t *type = NULL; /* Datatype opened in file */
H5G_loc_t loc; /* Group location of object to open */
@@ -1193,9 +1190,6 @@ H5VL_native_datatype_open(void *obj, H5VL_loc_params_t loc_params, const char *n
if(NULL == (type = H5T_open(&type_loc, dxpl_id)))
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, NULL, "unable to open named datatype")
- if(H5T_encode(type, buf, &nalloc) < 0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADTYPE, NULL, "can't serialize datatype")
-
ret_value = (void *)type;
done:
if(NULL == type)
@@ -1206,7 +1200,7 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5VL_native_datatype_get_size
+ * Function: H5VL_native_datatype_get_binary
*
* Purpose: gets size required to encode the datatype
*
@@ -1219,58 +1213,22 @@ done:
*-------------------------------------------------------------------------
*/
static ssize_t
-H5VL_native_datatype_get_size(void *obj, H5VL_loc_params_t loc_params, const char *name,
- hid_t tapl_id, hid_t UNUSED req)
+H5VL_native_datatype_get_binary(void *obj, unsigned char *buf, size_t size, hid_t UNUSED req)
{
- H5T_t *type = NULL; /* Datatype opened in file */
- H5G_loc_t loc; /* Group location of object to open */
- H5G_name_t path; /* Datatype group hier. path */
- H5O_loc_t oloc; /* Datatype object location */
- H5O_type_t obj_type; /* Type of object at location */
- H5G_loc_t type_loc; /* Group object for datatype */
- hbool_t obj_found = FALSE; /* Object at 'name' found */
- hid_t dxpl_id = H5AC_dxpl_id; /* dxpl to use to open datatype */
- size_t nalloc;
+ H5T_t *type = (H5T_t *)obj;
+ size_t nalloc = size;
ssize_t ret_value = FAIL;
FUNC_ENTER_NOAPI_NOINIT
- if (H5VL_native_get_loc(obj, loc_params.obj_type, &loc) < 0)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
-
- /* Set up datatype location to fill in */
- type_loc.oloc = &oloc;
- type_loc.path = &path;
- H5G_loc_reset(&type_loc);
-
- /*
- * Find the named datatype object header and read the datatype message
- * from it.
- */
- if(H5G_loc_find(&loc, name, &type_loc/*out*/, tapl_id, dxpl_id) < 0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, FAIL, "not found")
- obj_found = TRUE;
-
- /* Check that the object found is the correct type */
- if(H5O_obj_type(&oloc, &obj_type, dxpl_id) < 0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTGET, FAIL, "can't get object type")
- if(obj_type != H5O_TYPE_NAMED_DATATYPE)
- HGOTO_ERROR(H5E_DATATYPE, H5E_BADTYPE, FAIL, "not a named datatype")
-
- /* Open it */
- if(NULL == (type = H5T_open(&type_loc, dxpl_id)))
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, FAIL, "unable to open named datatype")
-
- if(H5T_encode(type, NULL, &nalloc) < 0)
+ if(H5T_encode(type, buf, &nalloc) < 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't determine serialized length of datatype")
ret_value = (ssize_t) nalloc;
+
done:
- /* Close the datatype */
- if(NULL != type && H5T_close(type) < 0)
- HGOTO_ERROR(H5E_DATATYPE, H5E_CANTOPENOBJ, FAIL, "unable to close Datatype")
FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5VL_native_datatype_get_size() */
+} /* end H5VL_native_datatype_get_binary() */
/*-------------------------------------------------------------------------
diff --git a/src/H5VLprivate.h b/src/H5VLprivate.h
index fc9193e..746c332 100644
--- a/src/H5VLprivate.h
+++ b/src/H5VLprivate.h
@@ -67,9 +67,8 @@ H5_DLL herr_t H5VL_dataset_get(void *dset, H5VL_t *vol_plugin, H5VL_dataset_get_
H5_DLL herr_t H5VL_dataset_close(void *dset, H5VL_t *vol_plugin, hid_t req);
H5_DLL void *H5VL_datatype_commit(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin, const char *name, hid_t type_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t req);
-H5_DLL void *H5VL_datatype_open(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin, const char *name, unsigned char *buf, size_t nalloc, hid_t tapl_id, hid_t req);
-H5_DLL ssize_t H5VL_datatype_get_size(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin,
- const char *name, hid_t tapl_id, hid_t req);
+H5_DLL void *H5VL_datatype_open(void *obj, H5VL_loc_params_t loc_params, H5VL_t *vol_plugin, const char *name, hid_t tapl_id, hid_t req);
+H5_DLL ssize_t H5VL_datatype_get_binary(void *obj, H5VL_t *vol_plugin, unsigned char *buf, size_t size, hid_t req);
H5_DLL herr_t H5VL_datatype_close(void *dt, H5VL_t *vol_plugin, hid_t req);
H5_DLL void *H5VL_file_create(H5VL_t *vol_plugin, const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t req);
diff --git a/src/H5VLpublic.h b/src/H5VLpublic.h
index cb9ceac..423eee3 100644
--- a/src/H5VLpublic.h
+++ b/src/H5VLpublic.h
@@ -215,10 +215,8 @@ typedef struct H5VL_attr_class_t {
typedef struct H5VL_datatype_class_t {
void *(*commit)(void *obj, H5VL_loc_params_t loc_params, const char *name, hid_t type_id,
hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t req);
- void *(*open) (void *obj, H5VL_loc_params_t loc_params, const char * name,
- unsigned char *buf, size_t nalloc, hid_t tapl_id, hid_t req);
- ssize_t (*get_size) (void *obj, H5VL_loc_params_t loc_params, const char *name,
- hid_t tapl_id, hid_t req);
+ void *(*open) (void *obj, H5VL_loc_params_t loc_params, const char * name, hid_t tapl_id, hid_t req);
+ ssize_t (*get_binary) (void *obj, unsigned char *buf, size_t size, hid_t req);
herr_t (*close) (void *dt, hid_t req);
}H5VL_datatype_class_t;