summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/H5A.c16
-rw-r--r--src/H5D.c80
-rw-r--r--src/H5Dprivate.h4
-rw-r--r--src/H5E.c1
-rw-r--r--src/H5Epublic.h1
-rw-r--r--src/H5F.c4
-rw-r--r--src/H5Fprivate.h5
-rw-r--r--src/H5MMpublic.h4
-rw-r--r--src/H5Odtype.c10
-rw-r--r--src/H5Ofill.c3
-rw-r--r--src/H5P.c89
-rw-r--r--src/H5Ppublic.h6
-rw-r--r--src/H5RA.c14
-rw-r--r--src/H5T.c63
-rw-r--r--src/H5Tconv.c258
-rw-r--r--src/H5Tpkg.h213
-rw-r--r--src/H5Tprivate.h6
-rw-r--r--src/H5Tpublic.h4
-rw-r--r--src/H5Tvlen.c232
19 files changed, 696 insertions, 317 deletions
diff --git a/src/H5A.c b/src/H5A.c
index fc0efef..a01e652 100644
--- a/src/H5A.c
+++ b/src/H5A.c
@@ -243,10 +243,8 @@ H5A_create(const H5G_entry_t *ent, const char *name, const H5T_t *type,
attr->name=HDstrdup(name);
attr->dt=H5T_copy(type, H5T_COPY_ALL);
/* Mark any VL datatypes as being on disk now */
- if(H5T_get_class(attr->dt)==H5T_VLEN) {
- if (H5T_vlen_set_loc(attr->dt, ent->file, H5T_VLEN_DISK)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location");
- }
+ if (H5T_vlen_mark(attr->dt, ent->file, H5T_VLEN_DISK)<0) {
+ HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location");
}
attr->ds=H5S_copy(space);
attr->initialized = TRUE; /*for now, set to false later*/
@@ -667,7 +665,7 @@ H5A_write(H5A_t *attr, const H5T_t *mem_type, void *buf)
}
/* Perform data type conversion */
- if (H5T_convert(tpath, src_id, dst_id, nelmts, 0, tconv_buf, bkg_buf)<0) {
+ if (H5T_convert(tpath, src_id, dst_id, nelmts, 0, tconv_buf, bkg_buf, H5P_DEFAULT)<0) {
HGOTO_ERROR(H5E_ATTR, H5E_CANTENCODE, FAIL,
"data type conversion failed");
}
@@ -835,7 +833,7 @@ H5A_read(H5A_t *attr, const H5T_t *mem_type, void *buf)
}
/* Perform data type conversion. */
- if (H5T_convert(tpath, src_id, dst_id, nelmts, 0, tconv_buf, bkg_buf)<0) {
+ if (H5T_convert(tpath, src_id, dst_id, nelmts, 0, tconv_buf, bkg_buf, H5P_DEFAULT)<0) {
HGOTO_ERROR(H5E_ATTR, H5E_CANTENCODE, FAIL,
"data type conversion failed");
}
@@ -962,11 +960,9 @@ H5Aget_type(hid_t attr_id)
"unable to copy datatype");
}
/* Mark any VL datatypes as being in memory now */
- if(H5T_get_class(dst)==H5T_VLEN) {
- if (H5T_vlen_set_loc(dst, NULL, H5T_VLEN_MEMORY)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
+ if (H5T_vlen_mark(dst, NULL, H5T_VLEN_MEMORY)<0) {
+ HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"invalid VL location");
- }
}
if (H5T_lock(dst, FALSE)<0) {
H5T_close(dst);
diff --git a/src/H5D.c b/src/H5D.c
index fb927a3..e0523de 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -463,11 +463,8 @@ H5Dget_type(hid_t dset_id)
"unable to copy the data type");
}
/* Mark any VL datatypes as being in memory now */
- if(H5T_get_class(copied_type)==H5T_VLEN) {
- if (H5T_vlen_set_loc(copied_type, NULL, H5T_VLEN_MEMORY)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
- "invalid VL location");
- }
+ if (H5T_vlen_mark(copied_type, NULL, H5T_VLEN_MEMORY)<0) {
+ HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location");
}
if (H5T_lock (copied_type, FALSE)<0) {
H5T_close (copied_type);
@@ -594,7 +591,6 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
const H5T_t *mem_type = NULL;
const H5S_t *mem_space = NULL;
const H5S_t *file_space = NULL;
- const H5F_xfer_t *xfer_parms = NULL;
FUNC_ENTER(H5Dread, FAIL);
H5TRACE6("e","iiiiix",dset_id,mem_type_id,mem_space_id,file_space_id,
@@ -632,10 +628,7 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
"selection+offset not within extent");
}
}
- if (H5P_DEFAULT == plist_id) {
- xfer_parms = &H5F_xfer_dflt;
- } else if (H5P_DATASET_XFER != H5P_get_class(plist_id) ||
- NULL == (xfer_parms = H5I_object(plist_id))) {
+ if (H5P_DEFAULT != plist_id && H5P_DATASET_XFER != H5P_get_class(plist_id)) {
HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
}
if (!buf) {
@@ -643,7 +636,7 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
}
/* read raw data */
- if (H5D_read(dset, mem_type, mem_space, file_space, xfer_parms,
+ if (H5D_read(dset, mem_type, mem_space, file_space, plist_id,
buf/*out*/) < 0) {
HRETURN_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read data");
}
@@ -693,7 +686,6 @@ H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
const H5T_t *mem_type = NULL;
const H5S_t *mem_space = NULL;
const H5S_t *file_space = NULL;
- const H5F_xfer_t *xfer_parms = NULL;
FUNC_ENTER(H5Dwrite, FAIL);
H5TRACE6("e","iiiiix",dset_id,mem_type_id,mem_space_id,file_space_id,
@@ -731,10 +723,7 @@ H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
"selection+offset not within extent");
}
}
- if (H5P_DEFAULT == plist_id) {
- xfer_parms = &H5F_xfer_dflt;
- } else if (H5P_DATASET_XFER != H5P_get_class(plist_id) ||
- NULL == (xfer_parms = H5I_object(plist_id))) {
+ if (H5P_DEFAULT != plist_id && H5P_DATASET_XFER != H5P_get_class(plist_id)) {
HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
}
if (!buf) {
@@ -742,7 +731,7 @@ H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
}
/* write raw data */
- if (H5D_write(dset, mem_type, mem_space, file_space, xfer_parms,
+ if (H5D_write(dset, mem_type, mem_space, file_space, plist_id,
buf) < 0) {
HRETURN_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "can't write data");
}
@@ -922,10 +911,8 @@ H5D_create(H5G_entry_t *loc, const char *name, const H5T_t *type,
new_dset->type = H5T_copy(type, H5T_COPY_ALL);
/* Mark any VL datatypes as being on disk now */
- if(H5T_get_class(new_dset->type)==H5T_VLEN) {
- if (H5T_vlen_set_loc(new_dset->type, f, H5T_VLEN_DISK)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "invalid VL location");
- }
+ if (H5T_vlen_mark(new_dset->type, f, H5T_VLEN_DISK)<0) {
+ HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "invalid VL location");
}
efl = &(new_dset->create_parms->efl);
@@ -1447,13 +1434,18 @@ H5D_close(H5D_t *dataset)
* rky 980918
* Added must_convert to do non-optimized read when necessary.
*
+ * Quincey Koziol, 2 July 1999
+ * Changed xfer_parms parameter to xfer plist parameter, so it could be passed
+ * to H5T_convert
+ *
*-------------------------------------------------------------------------
*/
herr_t
H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
- const H5S_t *file_space, const H5F_xfer_t *xfer_parms,
+ const H5S_t *file_space, hid_t dset_xfer_plid,
void *buf/*out*/)
{
+ const H5F_xfer_t *xfer_parms = NULL;
hssize_t nelmts; /*number of elements */
size_t smine_start; /*strip mine start loc */
size_t n, smine_nelmts; /*elements per strip */
@@ -1486,7 +1478,6 @@ H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
/* check args */
assert(dataset && dataset->ent.file);
assert(mem_type);
- assert(xfer_parms);
assert(buf);
/* Initialize these before any errors can occur */
@@ -1494,6 +1485,14 @@ H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
HDmemset(&bkg_iter,0,sizeof(H5S_sel_iter_t));
HDmemset(&file_iter,0,sizeof(H5S_sel_iter_t));
+ /* Get the dataset transfer property list */
+ if (H5P_DEFAULT == dset_xfer_plid) {
+ xfer_parms = &H5F_xfer_dflt;
+ } else if (H5P_DATASET_XFER != H5P_get_class(dset_xfer_plid) ||
+ NULL == (xfer_parms = H5I_object(dset_xfer_plid))) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
+ }
+
if (!file_space) {
if (NULL==(free_this_space=H5S_read (&(dataset->ent)))) {
HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, FAIL,
@@ -1752,7 +1751,7 @@ printf("%s: check 2.0, src_type_size=%d, dst_type_size=%d, target_size=%d, min_e
* Perform data type conversion.
*/
if (H5T_convert(tpath, src_id, dst_id, smine_nelmts, 0, tconv_buf,
- bkg_buf)<0) {
+ bkg_buf, dset_xfer_plid)<0) {
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL,
"data type conversion failed");
}
@@ -1819,13 +1818,18 @@ printf("%s: check 2.0, src_type_size=%d, dst_type_size=%d, target_size=%d, min_e
* rky 980918
* Added must_convert to do non-optimized read when necessary.
*
+ * Quincey Koziol, 2 July 1999
+ * Changed xfer_parms parameter to xfer plist parameter, so it could be passed
+ * to H5T_convert
+ *
*-------------------------------------------------------------------------
*/
herr_t
H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
- const H5S_t *file_space, const H5F_xfer_t *xfer_parms,
+ const H5S_t *file_space, hid_t dset_xfer_plid,
const void *buf)
{
+ const H5F_xfer_t *xfer_parms = NULL;
hssize_t nelmts; /*total number of elmts */
size_t smine_start; /*strip mine start loc */
size_t n, smine_nelmts; /*elements per strip */
@@ -1858,7 +1862,6 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
/* check args */
assert(dataset && dataset->ent.file);
assert(mem_type);
- assert(xfer_parms);
assert(buf);
#ifdef HAVE_PARALLEL
@@ -1888,6 +1891,14 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
HDmemset(&bkg_iter,0,sizeof(H5S_sel_iter_t));
HDmemset(&file_iter,0,sizeof(H5S_sel_iter_t));
+ /* Get the dataset transfer property list */
+ if (H5P_DEFAULT == dset_xfer_plid) {
+ xfer_parms = &H5F_xfer_dflt;
+ } else if (H5P_DATASET_XFER != H5P_get_class(dset_xfer_plid) ||
+ NULL == (xfer_parms = H5I_object(dset_xfer_plid))) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
+ }
+
if (0==(dataset->ent.file->intent & H5F_ACC_RDWR)) {
HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL,
"no write intent on file");
@@ -1949,7 +1960,7 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
}
}
#ifdef QAK
- printf("%s: after H5T_find, tpath=%p\n",FUNC,tpath);
+ printf("%s: after H5T_find, tpath=%p, tpath->name=%s\n",FUNC,tpath,tpath->name);
#endif /* QAK */
if (NULL==(sconv=H5S_find(mem_space, file_space))) {
HGOTO_ERROR (H5E_DATASET, H5E_UNSUPPORTED, FAIL,
@@ -2152,7 +2163,7 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
* Perform data type conversion.
*/
if (H5T_convert(tpath, src_id, dst_id, smine_nelmts, 0, tconv_buf,
- bkg_buf)<0) {
+ bkg_buf, dset_xfer_plid)<0) {
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL,
"data type conversion failed");
}
@@ -2685,6 +2696,7 @@ H5Diterate(void *buf, hid_t type_id, hid_t space_id, H5D_operator_t operator,
herr_t
H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf)
{
+ const H5F_xfer_t *xfer_parms = NULL;
herr_t ret_value=FAIL;
FUNC_ENTER(H5Dvlen_reclaim, FAIL);
@@ -2693,12 +2705,20 @@ H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf)
/* Check args */
if (H5I_DATATYPE!=H5I_get_type(type_id) ||
H5I_DATASPACE!=H5I_get_type(space_id) ||
- H5P_DATASET_XFER!=H5P_get_class(plist_id) ||
buf==NULL) {
HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid argument");
}
-/* Call H5Diterate with args, etc. */
+ /* Retrieve dataset transfer property list */
+ if (H5P_DEFAULT == plist_id) {
+ xfer_parms = &H5F_xfer_dflt;
+ } else if (H5P_DATASET_XFER != H5P_get_class(plist_id) ||
+ NULL == (xfer_parms = H5I_object(plist_id))) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
+ }
+
+ /* Call H5Diterate with args, etc. */
+ ret_value=H5Diterate(buf,type_id,space_id,H5T_vlen_reclaim,xfer_parms);
FUNC_LEAVE(ret_value);
} /* end H5Dvlen_reclaim() */
diff --git a/src/H5Dprivate.h b/src/H5Dprivate.h
index e420619..6fc03e2 100644
--- a/src/H5Dprivate.h
+++ b/src/H5Dprivate.h
@@ -62,10 +62,10 @@ __DLL__ herr_t H5D_close(H5D_t *dataset);
__DLL__ htri_t H5D_isa(H5G_entry_t *ent);
__DLL__ herr_t H5D_read(H5D_t *dataset, const H5T_t *mem_type,
const H5S_t *mem_space, const H5S_t *file_space,
- const H5F_xfer_t *xfer_parms, void *buf/*out*/);
+ hid_t dset_xfer_plist, void *buf/*out*/);
__DLL__ herr_t H5D_write(H5D_t *dataset, const H5T_t *mem_type,
const H5S_t *mem_space, const H5S_t *file_space,
- const H5F_xfer_t *xfer_parms, const void *buf);
+ hid_t dset_xfer_plist, const void *buf);
__DLL__ herr_t H5D_extend(H5D_t *dataset, const hsize_t *size);
__DLL__ H5G_entry_t *H5D_entof(H5D_t *dataset);
__DLL__ H5T_t *H5D_typeof(H5D_t *dset);
diff --git a/src/H5E.c b/src/H5E.c
index 5008631..81607cf 100644
--- a/src/H5E.c
+++ b/src/H5E.c
@@ -70,6 +70,7 @@ static const H5E_minor_mesg_t H5E_minor_mesg_g[] = {
{H5E_BADVALUE, "Bad value"},
{H5E_NOSPACE, "No space available for allocation"},
{H5E_CANTCOPY, "Unable to copy object"},
+ {H5E_CANTFREE, "Unable to free object"},
{H5E_FILEEXISTS, "File already exists"},
{H5E_FILEOPEN, "File already open"},
{H5E_CANTCREATE, "Unable to create file"},
diff --git a/src/H5Epublic.h b/src/H5Epublic.h
index 607fd95..e7877fb 100644
--- a/src/H5Epublic.h
+++ b/src/H5Epublic.h
@@ -92,6 +92,7 @@ typedef enum H5E_minor_t {
/* Resource errors */
H5E_NOSPACE, /*no space available for allocation */
H5E_CANTCOPY, /*unable to copy object */
+ H5E_CANTFREE, /*unable to free object */
/* File accessability errors */
H5E_FILEEXISTS, /*file already exists */
diff --git a/src/H5F.c b/src/H5F.c
index b76eefb..3becbd0 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -85,6 +85,10 @@ const H5F_xfer_t H5F_xfer_dflt = {
* block size to cache
*/
H5D_XFER_DFLT, /* Independent data transfer */
+ NULL, /* Default to malloc for VL allocations */
+ NULL, /* No information needed for malloc allocations */
+ NULL, /* Default to free for VL frees */
+ NULL, /* No information needed for free frees */
};
/*
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index 2110bd3..ae0d0a6 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -23,6 +23,7 @@
/* This is a near top-level header! Try not to include much! */
#include <H5private.h>
#include <H5Dpublic.h> /*for the H5D_transfer_t type */
+#include <H5MMpublic.h> /*for the H5MM_allocate_t and H5MM_free_t types */
/*
* Feature: Define this constant to be non-zero if you want to enable code
@@ -342,6 +343,10 @@ typedef struct H5F_xfer_t {
uintn cache_hyper; /*cache hyperslab blocks during I/O? */
uintn block_limit; /*largest hyperslab block to cache */
H5D_transfer_t xfer_mode; /*independent or collective transfer */
+ H5MM_allocate_t vlen_alloc; /* VL datatype allocation function */
+ void * alloc_info; /* VL datatype allocation information */
+ H5MM_free_t vlen_free; /* VL datatype free function */
+ void * free_info; /* VL datatype free information */
} H5F_xfer_t;
/*
diff --git a/src/H5MMpublic.h b/src/H5MMpublic.h
index b5cd659..5b8b579 100644
--- a/src/H5MMpublic.h
+++ b/src/H5MMpublic.h
@@ -21,6 +21,10 @@
/* Public headers needed by this file */
#include <H5public.h>
+/* These typedefs are currently used for VL datatype allocation/freeing */
+typedef void *(* H5MM_allocate_t)(size_t size,void *info);
+typedef void (* H5MM_free_t)(void *mem, void *free_info);
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/src/H5Odtype.c b/src/H5Odtype.c
index 14f2840..72253a7 100644
--- a/src/H5Odtype.c
+++ b/src/H5Odtype.c
@@ -235,6 +235,13 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL,
"unable to decode member type");
}
+
+ /*
+ * Set the "force conversion" flag if VL datatype fields exist in this
+ * type or any component types
+ */
+ if(dt->u.compnd.memb[i].type->type==H5T_VLEN || dt->u.compnd.memb[i].type->force_conv==TRUE)
+ dt->force_conv=TRUE;
/* Total member size */
dt->u.compnd.memb[i].size = dt->u.compnd.memb[i].type->size;
@@ -295,8 +302,9 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type");
}
+ dt->force_conv=TRUE;
/* Mark this type as on disk */
- if (H5T_vlen_set_loc(dt, f, H5T_VLEN_DISK)<0) {
+ if (H5T_vlen_mark(dt, f, H5T_VLEN_DISK)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location");
}
break;
diff --git a/src/H5Ofill.c b/src/H5Ofill.c
index 5095919..7018ae2 100644
--- a/src/H5Ofill.c
+++ b/src/H5Ofill.c
@@ -13,6 +13,7 @@
#include <H5Iprivate.h>
#include <H5MMprivate.h>
#include <H5Oprivate.h>
+#include <H5Pprivate.h>
#define PABLO_MASK H5O_fill_mask
@@ -359,7 +360,7 @@ H5O_fill_convert(H5O_fill_t *fill, H5T_t *dset_type)
}
/* Do the conversion */
- if (H5T_convert(tpath, src_id, dst_id, 1, 0, buf, bkg)<0) {
+ if (H5T_convert(tpath, src_id, dst_id, 1, 0, buf, bkg, H5P_DEFAULT)<0) {
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"data type conversion failed");
}
diff --git a/src/H5P.c b/src/H5P.c
index 1b46535..954cdd3 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -2722,7 +2722,7 @@ H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value/*out*/)
HDmemcpy(buf, plist->fill.buf, H5T_get_size(plist->fill.type));
/* Do the conversion */
- if (H5T_convert(tpath, src_id, type_id, 1, 0, buf, bkg)<0) {
+ if (H5T_convert(tpath, src_id, type_id, 1, 0, buf, bkg, H5P_DEFAULT)<0) {
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"data type conversion failed");
}
@@ -3052,6 +3052,93 @@ H5Pget_gc_reference(hid_t fapl_id, unsigned *gc_ref/*out*/)
}
+/*-------------------------------------------------------------------------
+ * Function: H5Pset_vlen_mem_manager
+ *
+ * Purpose: Sets the memory allocate/free pair for VL datatypes. The
+ * allocation routine is called when data is read into a new array
+ * and the free routine is called when H5Dvlen_reclaim is called.
+ * The alloc_info and free_info are user parameters which are passed
+ * to the allocation and freeing functions respectively.
+ * To reset the allocate/free functions to the default setting of using
+ * the system's malloc/free functions, call this routine with alloc_func
+ * and free_func set to NULL.
+ *
+ * Return: Non-negative on success/Negative on failure
+ *
+ * Programmer: Quincey Koziol
+ * Thursday, July 1, 1999
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pset_vlen_mem_manager(hid_t plist_id, H5MM_allocate_t alloc_func,
+ void *alloc_info, H5MM_free_t free_func, void *free_info)
+{
+ H5F_xfer_t *plist = NULL;
+
+ FUNC_ENTER (H5Pset_vlen_mem_manager, FAIL);
+
+ /* Check arguments */
+ if (H5P_DATASET_XFER != H5P_get_class (plist_id) ||
+ NULL == (plist = H5I_object (plist_id))) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list");
+ }
+
+ /* Update property list */
+ plist->vlen_alloc = alloc_func;
+ plist->alloc_info = alloc_info;
+ plist->vlen_free = free_func;
+ plist->free_info = free_info;
+
+ FUNC_LEAVE (SUCCEED);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Pget_vlen_mem_manager
+ *
+ * Purpose: The inverse of H5Pset_vlen_mem_manager()
+ *
+ * Return: Non-negative on success/Negative on failure
+ *
+ * Programmer: Quincey Koziol
+ * Thursday, July 1, 1999
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pget_vlen_mem_manager(hid_t plist_id, H5MM_allocate_t *alloc_func,
+ void **alloc_info, H5MM_free_t *free_func, void **free_info)
+{
+ H5F_xfer_t *plist = NULL;
+
+ FUNC_ENTER (H5Pset_vlen_mem_manager, FAIL);
+
+ /* Check arguments */
+ if (H5P_DATASET_XFER != H5P_get_class (plist_id) ||
+ NULL == (plist = H5I_object (plist_id))) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset transfer property list");
+ }
+
+ if(alloc_func!=NULL)
+ *alloc_func= plist->vlen_alloc;
+ if(alloc_info!=NULL)
+ *alloc_info= plist->alloc_info;
+ if(free_func!=NULL)
+ *free_func= plist->vlen_free;
+ if(free_info!=NULL)
+ *free_info= plist->free_info;
+
+ FUNC_LEAVE (SUCCEED);
+}
+
+
+
/*--------------------------------------------------------------------------
NAME
H5Pcopy
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index f16fa68..f19bec7 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -141,6 +141,12 @@ __DLL__ herr_t H5Pget_xfer(hid_t plist_id,
__DLL__ herr_t H5Pset_gc_references(hid_t fapl_id, unsigned gc_ref);
__DLL__ herr_t H5Pget_gc_reference(hid_t fapl_id, unsigned *gc_ref/*out*/);
+__DLL__ herr_t H5Pset_vlen_mem_manager(hid_t plist_id,
+ H5MM_allocate_t alloc_func, void *alloc_info, H5MM_free_t free_func,
+ void *free_info);
+__DLL__ herr_t H5Pget_vlen_mem_manager(hid_t plist_id,
+ H5MM_allocate_t *alloc_func, void **alloc_info, H5MM_free_t *free_func,
+ void **free_info);
#ifdef __cplusplus
}
diff --git a/src/H5RA.c b/src/H5RA.c
index 3690a50..2585b16 100644
--- a/src/H5RA.c
+++ b/src/H5RA.c
@@ -738,7 +738,7 @@ H5RA_write(H5RA_t *ra, hssize_t start_row, hsize_t nrows, H5T_t *type,
"memory allocation failed for meta data");
}
if (H5D_read(ra->meta, H5RA_meta_type_g, mm_space, mf_space,
- &H5F_xfer_dflt, meta)<0) {
+ H5P_DEFAULT, meta)<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_READERROR, FAIL,
"unable to read meta data");
}
@@ -779,7 +779,7 @@ H5RA_write(H5RA_t *ra, hssize_t start_row, hsize_t nrows, H5T_t *type,
HGOTO_ERROR(H5E_RAGGED, H5E_CANTINIT, FAIL,
"unable to set meta data selection");
}
- if (H5D_write(ra->raw, type, rm_space, rf_space, &H5F_xfer_dflt,
+ if (H5D_write(ra->raw, type, rm_space, rf_space, H5P_DEFAULT,
raw_buf)<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_WRITEERROR, FAIL,
"unable to write raw data");
@@ -809,7 +809,7 @@ H5RA_write(H5RA_t *ra, hssize_t start_row, hsize_t nrows, H5T_t *type,
"unable to set meta data selection");
}
if (H5D_write(ra->meta, H5RA_meta_type_g, mm_space, mf_space,
- &H5F_xfer_dflt, meta)<0) {
+ H5P_DEFAULT, meta)<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_WRITEERROR, FAIL,
"unable to write meta data");
}
@@ -926,7 +926,7 @@ H5RA_fix_overflow(H5RA_t *ra, H5T_t *type, H5RA_meta_t *meta, hsize_t nelmts,
HGOTO_ERROR(H5E_RAGGED, H5E_CANTINIT, FAIL,
"unable to set overflow selection");
}
- if (H5D_write(ra->over, type, om_space, of_space, &H5F_xfer_dflt,
+ if (H5D_write(ra->over, type, om_space, of_space, H5P_DEFAULT,
buf)<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_WRITEERROR, FAIL,
"unable to write to overflow dataset");
@@ -1103,7 +1103,7 @@ H5RA_read(H5RA_t *ra, hssize_t start_row, hsize_t nrows, H5T_t *type,
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
"memory allocation failed for raw dataset");
}
- if (H5D_read(ra->raw, type, rm_space, rf_space, &H5F_xfer_dflt,
+ if (H5D_read(ra->raw, type, rm_space, rf_space, H5P_DEFAULT,
raw_buf)<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_READERROR, FAIL,
"unable to read raw dataset");
@@ -1134,7 +1134,7 @@ H5RA_read(H5RA_t *ra, hssize_t start_row, hsize_t nrows, H5T_t *type,
"unable to set meta data selection");
}
if (H5D_read(ra->meta, H5RA_meta_type_g, mm_space, mf_space,
- &H5F_xfer_dflt, meta)<0) {
+ H5P_DEFAULT, meta)<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_READERROR, FAIL,
"unable to read meta data");
}
@@ -1182,7 +1182,7 @@ H5RA_read(H5RA_t *ra, hssize_t start_row, hsize_t nrows, H5T_t *type,
HGOTO_ERROR(H5E_RAGGED, H5E_CANTINIT, FAIL,
"unable to set overflow selection");
}
- if (H5D_read(ra->over, type, om_space, of_space, &H5F_xfer_dflt,
+ if (H5D_read(ra->over, type, om_space, of_space, H5P_DEFAULT,
buf_out[i])<0) {
HGOTO_ERROR(H5E_RAGGED, H5E_CANTINIT, FAIL,
"unable to read overflow dataset");
diff --git a/src/H5T.c b/src/H5T.c
index 76afffa..c98ffae 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -18,6 +18,7 @@ static char RcsId[] = "@(#)$Revision$";
#include <H5Gprivate.h> /*groups */
#include <H5HGprivate.h> /*global heap */
#include <H5MMprivate.h> /*memory management */
+#include <H5Pprivate.h> /* Property Lists */
#include <H5Sprivate.h> /*data space */
#include <H5Tpkg.h> /*data-type functions */
@@ -1358,7 +1359,7 @@ H5T_term_interface(void)
H5T_print_stats(path, &nprint/*in,out*/);
path->cdata.command = H5T_CONV_FREE;
if ((path->func)(FAIL, FAIL, &(path->cdata),
- 0, 0, NULL, NULL)<0) {
+ 0, 0, NULL, NULL,H5P_DEFAULT)<0) {
#ifdef H5T_DEBUG
if (H5DEBUG(T)) {
fprintf (H5DEBUG(T), "H5T: conversion function "
@@ -3912,10 +3913,11 @@ H5Tvlen_create(hid_t base_id)
}
H5F_addr_undef (&(dt->ent.header));
dt->type = H5T_VLEN;
+ dt->force_conv = TRUE; /* Force conversions (i.e. memory to memory conversions should duplicate data, not point to the same VL sequences */
dt->parent = H5T_copy(base, H5T_COPY_ALL);
/* Set up VL information */
- if (H5T_vlen_set_loc(dt, NULL, H5T_VLEN_MEMORY)<0) {
+ if (H5T_vlen_mark(dt, NULL, H5T_VLEN_MEMORY)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location");
}
@@ -4139,7 +4141,7 @@ H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id, hid_t dst_id,
}
HDmemset(&cdata, 0, sizeof cdata);
cdata.command = H5T_CONV_INIT;
- if ((func)(tmp_sid, tmp_did, &cdata, 0, 0, NULL, NULL)<0) {
+ if ((func)(tmp_sid, tmp_did, &cdata, 0, 0, NULL, NULL, H5P_DEFAULT)<0) {
H5I_dec_ref(tmp_sid);
H5I_dec_ref(tmp_did);
tmp_sid = tmp_did = -1;
@@ -4171,7 +4173,7 @@ H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id, hid_t dst_id,
H5T_print_stats(old_path, &nprint);
old_path->cdata.command = H5T_CONV_FREE;
if ((old_path->func)(tmp_sid, tmp_did, &(old_path->cdata),
- 0, 0, NULL, NULL)<0) {
+ 0, 0, NULL, NULL, H5P_DEFAULT)<0) {
#ifdef H5T_DEBUG
if (H5DEBUG(T)) {
fprintf (H5DEBUG(T), "H5T: conversion function 0x%08lx "
@@ -4287,7 +4289,7 @@ H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id, hid_t dst_id,
/* Shut down path */
H5T_print_stats(path, &nprint);
path->cdata.command = H5T_CONV_FREE;
- if ((path->func)(FAIL, FAIL, &(path->cdata), 0, 0, NULL, NULL)<0) {
+ if ((path->func)(FAIL, FAIL, &(path->cdata), 0, 0, NULL, NULL, H5P_DEFAULT)<0) {
#ifdef H5T_DEBUG
if (H5DEBUG(T)) {
fprintf(H5DEBUG(T), "H5T: conversion function 0x%08lx failed "
@@ -4370,7 +4372,10 @@ H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata)
* with the converted values to fill in cracks (for instance,
* BACKGROUND might be an array of structs with the `a' and `b'
* fields already initialized and the conversion of BUF supplies
- * the `c' and `d' field values).
+ * the `c' and `d' field values). The PLIST_ID a dataset transfer
+ * property list which is passed to the conversion functions. (It's
+ * currently only used to pass along the VL datatype custom allocation
+ * information -QAK 7/1/99)
*
* Return: Non-negative on success/Negative on failure
*
@@ -4378,24 +4383,24 @@ H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata)
* Wednesday, June 10, 1998
*
* Modifications:
+ * Added xfer_parms argument to pass VL datatype custom allocation
+ * information down the chain. - QAK, 7/1/99
*
*-------------------------------------------------------------------------
*/
herr_t
H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf,
- void *background)
+ void *background, hid_t plist_id)
{
H5T_path_t *tpath=NULL; /*type conversion info */
H5T_t *src=NULL, *dst=NULL; /*unatomized types */
FUNC_ENTER (H5Tconvert, FAIL);
- H5TRACE5("e","iizxx",src_id,dst_id,nelmts,buf,background);
/* Check args */
- if (H5I_DATATYPE!=H5I_get_type(src_id) ||
- NULL==(src=H5I_object(src_id)) ||
- H5I_DATATYPE!=H5I_get_type(dst_id) ||
- NULL==(dst=H5I_object(dst_id))) {
+ if (H5I_DATATYPE!=H5I_get_type(src_id) || NULL==(src=H5I_object(src_id)) ||
+ H5I_DATATYPE!=H5I_get_type(dst_id) || NULL==(dst=H5I_object(dst_id)) ||
+ (H5P_DEFAULT != plist_id && H5P_DATASET_XFER != H5P_get_class(plist_id))) {
HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
}
@@ -4405,7 +4410,7 @@ H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf,
"unable to convert between src and dst data types");
}
- if (H5T_convert(tpath, src_id, dst_id, nelmts, 0, buf, background)<0) {
+ if (H5T_convert(tpath, src_id, dst_id, nelmts, 0, buf, background, plist_id)<0) {
HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL,
"data type conversion failed");
}
@@ -4831,7 +4836,7 @@ H5T_copy(const H5T_t *old_dt, H5T_copy_t method)
}
} else if (H5T_VLEN == new_dt->type) {
/* H5T_copy converts any VL type into a memory VL type */
- if (H5T_vlen_set_loc(new_dt, NULL, H5T_VLEN_MEMORY)<0) {
+ if (H5T_vlen_mark(new_dt, NULL, H5T_VLEN_MEMORY)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "invalid VL location");
}
} else if (H5T_OPAQUE == new_dt->type) {
@@ -5506,6 +5511,14 @@ H5T_struct_insert(H5T_t *parent, const char *name, size_t offset, intn ndims,
parent->u.compnd.sorted = H5T_SORT_NONE;
parent->u.compnd.nmembs++;
+
+ /*
+ * Set the "force conversion" flag if VL datatype fields exist in this type
+ * or any component types
+ */
+ if(member->type==H5T_VLEN || member->force_conv==TRUE)
+ parent->force_conv=TRUE;
+
FUNC_LEAVE(SUCCEED);
}
@@ -6401,7 +6414,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
H5T_g.path[0]->func = H5T_conv_noop;
H5T_g.path[0]->cdata.command = H5T_CONV_INIT;
if (H5T_conv_noop(FAIL, FAIL, &(H5T_g.path[0]->cdata), 0, 0,
- NULL, NULL)<0) {
+ NULL, NULL, H5P_DEFAULT)<0) {
#ifdef H5T_DEBUG
if (H5DEBUG(T)) {
fprintf(H5DEBUG(T), "H5T: unable to initialize no-op "
@@ -6417,8 +6430,12 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
* Find the conversion path. If source and destination types are equal
* then use entry[0], otherwise do a binary search over the
* remaining entries.
+ *
+ * Quincey Koziol, 2 July, 1999
+ * Only allow the no-op conversion to occur if no "force conversion" flags
+ * are set
*/
- if (0==H5T_cmp(src, dst)) {
+ if (src->force_conv==FALSE && dst->force_conv==FALSE && 0==H5T_cmp(src, dst)) {
table = H5T_g.path[0];
cmp = 0;
md = 0;
@@ -6488,7 +6505,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
"query");
}
path->cdata.command = H5T_CONV_INIT;
- if ((func)(src_id, dst_id, &(path->cdata), 0, 0, NULL, NULL)<0) {
+ if ((func)(src_id, dst_id, &(path->cdata), 0, 0, NULL, NULL, H5P_DEFAULT)<0) {
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL,
"unable to initialize conversion function");
}
@@ -6520,7 +6537,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
}
path->cdata.command = H5T_CONV_INIT;
if ((H5T_g.soft[i].func) (src_id, dst_id, &(path->cdata),
- 0, 0, NULL, NULL)<0) {
+ 0, 0, NULL, NULL, H5P_DEFAULT)<0) {
HDmemset (&(path->cdata), 0, sizeof(H5T_cdata_t));
H5E_clear(); /*ignore the error*/
} else {
@@ -6542,7 +6559,7 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
assert(table==H5T_g.path[md]);
H5T_print_stats(table, &nprint/*in,out*/);
table->cdata.command = H5T_CONV_FREE;
- if ((table->func)(FAIL, FAIL, &(table->cdata), 0, 0, NULL, NULL)<0) {
+ if ((table->func)(FAIL, FAIL, &(table->cdata), 0, 0, NULL, NULL, H5P_DEFAULT)<0) {
#ifdef H5T_DEBUG
if (H5DEBUG(T)) {
fprintf(H5DEBUG(T), "H5T: conversion function 0x%08lx free "
@@ -6615,11 +6632,15 @@ H5T_path_find(const H5T_t *src, const H5T_t *dst, const char *name,
* then convert one value at each memory location advancing
* STRIDE bytes each time; otherwise assume both source and
* destination values are packed.
+ *
+ * Quincey Koziol, 1999-07-01
+ * Added dataset transfer properties, to allow custom VL datatype
+ * allocation function to be passed down to VL conversion routine.
*-------------------------------------------------------------------------
*/
herr_t
H5T_convert(H5T_path_t *tpath, hid_t src_id, hid_t dst_id, size_t nelmts,
- size_t stride, void *buf, void *bkg)
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist)
{
#ifdef H5T_DEBUG
H5_timer_t timer;
@@ -6632,7 +6653,7 @@ H5T_convert(H5T_path_t *tpath, hid_t src_id, hid_t dst_id, size_t nelmts,
#endif
tpath->cdata.command = H5T_CONV_CONV;
if ((tpath->func)(src_id, dst_id, &(tpath->cdata), nelmts, stride, buf,
- bkg)<0) {
+ bkg, dset_xfer_plist)<0) {
HRETURN_ERROR(H5E_ATTR, H5E_CANTENCODE, FAIL,
"data type conversion failed");
}
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index dc9a7bc..e34d980 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -13,6 +13,7 @@
#include <H5Iprivate.h>
#include <H5Eprivate.h>
#include <H5MMprivate.h>
+#include <H5Pprivate.h>
#include <H5Tpkg.h>
#include <H5TBprivate.h>
@@ -396,7 +397,7 @@ static intn interface_initialize_g = 0;
herr_t
H5T_conv_noop(hid_t UNUSED src_id, hid_t UNUSED dst_id, H5T_cdata_t *cdata,
size_t UNUSED nelmts, size_t UNUSED stride, void UNUSED *buf,
- void UNUSED *background)
+ void UNUSED *background, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_noop, FAIL);
@@ -445,7 +446,7 @@ H5T_conv_noop(hid_t UNUSED src_id, hid_t UNUSED dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void UNUSED *background)
+ size_t stride, void *_buf, void UNUSED *background, hid_t UNUSED dset_xfer_plist)
{
uint8_t *buf = (uint8_t*)_buf;
uint8_t tmp;
@@ -551,7 +552,7 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
herr_t
H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void UNUSED *background)
+ size_t stride, void *_buf, void UNUSED *background, hid_t UNUSED dset_xfer_plist)
{
uint8_t *buf = (uint8_t*)_buf;
H5T_t *src=NULL, *dst=NULL; /*source and dest data types */
@@ -949,7 +950,7 @@ H5T_conv_struct_init (H5T_t *src, H5T_t *dst, H5T_cdata_t *cdata)
*/
herr_t
H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void *_bkg)
+ size_t stride, void *_buf, void *_bkg, hid_t dset_xfer_plist)
{
uint8_t *buf = (uint8_t *)_buf; /*cast for pointer arithmetic */
uint8_t *bkg = (uint8_t *)_bkg; /*background pointer arithmetic */
@@ -1063,7 +1064,7 @@ H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
priv->memb_nelmts[i],
0, /*no striding*/
buf + src_memb->offset,
- bkg + dst_memb->offset)<0) {
+ bkg + dst_memb->offset,dset_xfer_plist)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"unable to convert compound data type "
"member");
@@ -1097,7 +1098,7 @@ H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
priv->dst_memb_id[src2dst[i]],
priv->memb_nelmts[i],
0, /*no striding*/
- buf+offset, bkg+dst_memb->offset)<0) {
+ buf+offset, bkg+dst_memb->offset,dset_xfer_plist)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"unable to convert compound data type "
"member");
@@ -1180,7 +1181,7 @@ H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
herr_t
H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *_buf, void *_bkg)
+ size_t nelmts, size_t stride, void *_buf, void *_bkg, hid_t dset_xfer_plist)
{
uint8_t *buf = (uint8_t *)_buf; /*cast for pointer arithmetic */
uint8_t *bkg = (uint8_t *)_bkg; /*background pointer arithmetic */
@@ -1333,7 +1334,7 @@ H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
priv->dst_memb_id[src2dst[i]],
nelmts,
stride?stride:src->size,
- xbuf, xbkg)<0) {
+ xbuf, xbkg,dset_xfer_plist)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"unable to convert compound data "
"type member");
@@ -1377,7 +1378,7 @@ H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
priv->src_memb_id[i],
priv->dst_memb_id[src2dst[i]],
nelmts, stride?stride:src->size,
- xbuf, xbkg)<0) {
+ xbuf, xbkg, dset_xfer_plist)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"unable to convert compound data "
"type member");
@@ -1575,7 +1576,7 @@ H5T_conv_enum_init(H5T_t *src, H5T_t *dst, H5T_cdata_t *cdata)
*/
herr_t
H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void UNUSED *bkg)
+ size_t stride, void *_buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
uint8_t *buf = (uint8_t*)_buf; /*cast for pointer arithmetic */
H5T_t *src=NULL, *dst=NULL; /*src and dst data types */
@@ -1744,12 +1745,19 @@ H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*
* Modifications:
*
+ * Quincey Koziol, 2 July, 1999
+ * Enabled support for non-zero strides. If STRIDE is non-zero
+ * then convert one value at each memory location advancing
+ * STRIDE bytes each time; otherwise assume both source and
+ * destination values are packed.
+ *
*-------------------------------------------------------------------------
*/
herr_t
H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void UNUSED *_bkg)
+ size_t stride, void *_buf, void UNUSED *_bkg, hid_t dset_xfer_plist)
{
+ const H5F_xfer_t *xfer_parms = NULL;
H5T_path_t *tpath; /* Type conversion path */
hid_t tsrc_id = -1, tdst_id = -1;/*temporary type atoms */
H5T_t *src = NULL; /*source data type */
@@ -1770,20 +1778,6 @@ H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
FUNC_ENTER (H5T_conv_vlen, FAIL);
-#ifndef LATER
- /*
- * If `stride' is non-zero then stride through memory converting one
- * element in place at each memory location; otherwise assume that the
- * source and destination buffers are packed.
- *
- * Quincey, I'll let you implement this since this routine is probably
- * changing, otherwise let me know when you're done working on it and
- * I'll implement it like H5T_conv_struct(). I also added a `0' to the
- * argument list for the H5T_convert() call below. --rpm 1999-06-16
- */
- assert(0==stride);
-#endif
-
switch (cdata->command) {
case H5T_CONV_INIT:
/*
@@ -1821,12 +1815,20 @@ H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
}
+ /* Get the dataset transfer property list */
+ if (H5P_DEFAULT == dset_xfer_plist) {
+ xfer_parms = &H5F_xfer_dflt;
+ } else if (H5P_DATASET_XFER != H5P_get_class(dset_xfer_plist) ||
+ NULL == (xfer_parms = H5I_object(dset_xfer_plist))) {
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
+ }
+
/*
* Do we process the values from beginning to end or vice versa? Also,
* how many of the elements have the source and destination areas
* overlapping?
*/
- if (src->size==dst->size) {
+ if (src->size==dst->size || stride>0) {
olap = nelmts;
sp = dp = (uint8_t*)_buf;
direction = 1;
@@ -1836,16 +1838,16 @@ H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
direction = 1;
} else {
olap = nelmts-(((src->size)/(dst->size-src->size))+1); /* potentially this uses the destination buffer 1 extra time, but its faster that floating-point calcs */
- sp = (uint8_t*)_buf + (nelmts-1) * src->size;
- dp = (uint8_t*)_buf + (nelmts-1) * dst->size;
+ sp = (uint8_t*)_buf + (nelmts-1) * (stride ? stride : src->size);
+ dp = (uint8_t*)_buf + (nelmts-1) * (stride ? stride : dst->size);
direction = -1;
}
/*
* Direction & size of buffer traversal.
*/
- src_delta = direction * src->size;
- dst_delta = direction * dst->size;
+ src_delta = direction * (stride ? stride : src->size);
+ dst_delta = direction * (stride ? stride : dst->size);
/*
* If the source and destination buffers overlap then use a
@@ -1898,11 +1900,11 @@ H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
HRETURN_ERROR(H5E_DATATYPE, H5E_READERROR, FAIL, "can't read VL data");
/* Convert VL sequence */
- if (H5T_convert(tpath, tsrc_id, tdst_id, seq_len, 0, conv_buf_ptr, NULL)<0)
+ if (H5T_convert(tpath, tsrc_id, tdst_id, seq_len, 0, conv_buf_ptr, NULL, dset_xfer_plist)<0)
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "datatype conversion failed");
/* Allocate new VL buffer */
- if((*(dst->u.vlen.alloc))(dst->u.vlen.f,d,seq_len,dst_base_size)<0)
+ if((*(dst->u.vlen.alloc))(xfer_parms,d,seq_len,dst_base_size)<0)
HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "allocation failed for VL data");
/* Write sequence to destination location */
@@ -1969,7 +1971,7 @@ H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
herr_t
H5T_conv_i_i (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void UNUSED *bkg)
+ size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
H5T_t *src = NULL; /*source data type */
H5T_t *dst = NULL; /*destination data type */
@@ -2337,7 +2339,7 @@ H5T_conv_i_i (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
herr_t
H5T_conv_f_f (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void UNUSED *bkg)
+ size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
/* Traversal-related variables */
H5T_t *src_p; /*source data type */
@@ -2746,7 +2748,7 @@ H5T_conv_f_f (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
herr_t
H5T_conv_s_s (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void UNUSED *bkg)
+ size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
H5T_t *src=NULL; /*source data type */
H5T_t *dst=NULL; /*destination data type */
@@ -2981,7 +2983,7 @@ H5T_conv_s_s (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
herr_t
H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_uchar, FAIL);
H5T_CONV_su(SCHAR, UCHAR,
@@ -3008,7 +3010,7 @@ H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_schar, FAIL);
H5T_CONV_us(UCHAR, SCHAR,
@@ -3036,7 +3038,7 @@ H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_short, FAIL);
H5T_CONV_sS(SCHAR, SHORT,
@@ -3064,7 +3066,7 @@ H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_ushort, FAIL);
H5T_CONV_sU(SCHAR, USHORT,
@@ -3091,7 +3093,7 @@ H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_short, FAIL);
H5T_CONV_uS(UCHAR, SHORT,
@@ -3120,7 +3122,7 @@ H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_ushort, FAIL);
H5T_CONV_uU(UCHAR, USHORT,
@@ -3147,7 +3149,7 @@ H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_schar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_int, FAIL);
H5T_CONV_sS(SCHAR, INT,
@@ -3174,7 +3176,7 @@ H5T_conv_schar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_schar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_uint, FAIL);
H5T_CONV_sU(SCHAR, UINT,
@@ -3201,7 +3203,7 @@ H5T_conv_schar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_int, FAIL);
H5T_CONV_uS(UCHAR, INT,
@@ -3229,7 +3231,7 @@ H5T_conv_uchar_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_uint, FAIL);
H5T_CONV_uU(UCHAR, UINT,
@@ -3256,7 +3258,7 @@ H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_schar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_long, FAIL);
H5T_CONV_sS(SCHAR, LONG,
@@ -3283,7 +3285,7 @@ H5T_conv_schar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_ulong, FAIL);
H5T_CONV_sU(SCHAR, ULONG,
@@ -3310,7 +3312,7 @@ H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_long, FAIL);
H5T_CONV_uS(UCHAR, LONG,
@@ -3338,7 +3340,7 @@ H5T_conv_uchar_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_ulong, FAIL);
H5T_CONV_uU(UCHAR, ULONG,
@@ -3365,7 +3367,7 @@ H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_schar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_llong, FAIL);
H5T_CONV_sS(SCHAR, LLONG,
@@ -3393,7 +3395,7 @@ H5T_conv_schar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_schar_ullong, FAIL);
H5T_CONV_sU(SCHAR, ULLONG,
@@ -3420,7 +3422,7 @@ H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_llong, FAIL);
H5T_CONV_uS(UCHAR, LLONG,
@@ -3449,7 +3451,7 @@ H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uchar_ullong, FAIL);
H5T_CONV_uU(UCHAR, ULLONG,
@@ -3476,7 +3478,7 @@ H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_schar, FAIL);
H5T_CONV_Ss(SHORT, SCHAR,
@@ -3504,7 +3506,7 @@ H5T_conv_short_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_uchar, FAIL);
H5T_CONV_Su(SHORT, UCHAR,
@@ -3533,7 +3535,7 @@ H5T_conv_short_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_schar, FAIL);
H5T_CONV_Us(USHORT, SCHAR,
@@ -3562,7 +3564,7 @@ H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_uchar, FAIL);
H5T_CONV_Uu(USHORT, UCHAR,
@@ -3591,7 +3593,7 @@ H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_short_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_ushort, FAIL);
H5T_CONV_su(SHORT, USHORT,
@@ -3619,7 +3621,7 @@ H5T_conv_short_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ushort_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_short, FAIL);
H5T_CONV_us(USHORT, SHORT,
@@ -3647,7 +3649,7 @@ H5T_conv_ushort_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_int, FAIL);
H5T_CONV_sS(SHORT, INT,
@@ -3674,7 +3676,7 @@ H5T_conv_short_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_uint, FAIL);
H5T_CONV_sU(SHORT, UINT,
@@ -3701,7 +3703,7 @@ H5T_conv_short_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ushort_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_int, FAIL);
H5T_CONV_uS(USHORT, INT,
@@ -3729,7 +3731,7 @@ H5T_conv_ushort_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_uint, FAIL);
H5T_CONV_uU(USHORT, UINT,
@@ -3756,7 +3758,7 @@ H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_long, FAIL);
H5T_CONV_sS(SHORT, LONG,
@@ -3783,7 +3785,7 @@ H5T_conv_short_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_ulong, FAIL);
H5T_CONV_sU(SHORT, ULONG,
@@ -3810,7 +3812,7 @@ H5T_conv_short_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ushort_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_long, FAIL);
H5T_CONV_uS(USHORT, LONG,
@@ -3839,7 +3841,7 @@ H5T_conv_ushort_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_ulong, FAIL);
H5T_CONV_uU(USHORT, ULONG,
@@ -3866,7 +3868,7 @@ H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_short_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_llong, FAIL);
H5T_CONV_sS(SHORT, LLONG,
@@ -3894,7 +3896,7 @@ H5T_conv_short_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_short_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_short_ullong, FAIL);
H5T_CONV_sU(SHORT, ULLONG,
@@ -3922,7 +3924,7 @@ H5T_conv_short_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_llong, FAIL);
H5T_CONV_uS(USHORT, LLONG,
@@ -3951,7 +3953,7 @@ H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ushort_ullong, FAIL);
H5T_CONV_uU(USHORT, ULLONG,
@@ -3978,7 +3980,7 @@ H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_schar, FAIL);
H5T_CONV_Ss(INT, SCHAR,
@@ -4006,7 +4008,7 @@ H5T_conv_int_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_uchar, FAIL);
H5T_CONV_Su(INT, UCHAR,
@@ -4034,7 +4036,7 @@ H5T_conv_int_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_schar, FAIL);
H5T_CONV_Us(UINT, SCHAR,
@@ -4062,7 +4064,7 @@ H5T_conv_uint_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_uchar, FAIL);
H5T_CONV_Uu(UINT, UCHAR,
@@ -4090,7 +4092,7 @@ H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_short, FAIL);
H5T_CONV_Ss(INT, SHORT,
@@ -4118,7 +4120,7 @@ H5T_conv_int_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_ushort, FAIL);
H5T_CONV_Su(INT, USHORT,
@@ -4146,7 +4148,7 @@ H5T_conv_int_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_short, FAIL);
H5T_CONV_Us(UINT, SHORT,
@@ -4174,7 +4176,7 @@ H5T_conv_uint_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_ushort, FAIL);
H5T_CONV_Uu(UINT, USHORT,
@@ -4202,7 +4204,7 @@ H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_uint, FAIL);
H5T_CONV_su(INT, UINT,
@@ -4229,7 +4231,7 @@ H5T_conv_int_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_int, FAIL);
H5T_CONV_us(UINT, INT,
@@ -4257,7 +4259,7 @@ H5T_conv_uint_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_long, FAIL);
H5T_CONV_sS(INT, LONG,
@@ -4284,7 +4286,7 @@ H5T_conv_int_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_ulong, FAIL);
H5T_CONV_sU(INT, LONG,
@@ -4311,7 +4313,7 @@ H5T_conv_int_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_long, FAIL);
H5T_CONV_uS(UINT, LONG,
@@ -4339,7 +4341,7 @@ H5T_conv_uint_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_ulong, FAIL);
H5T_CONV_uU(UINT, ULONG,
@@ -4366,7 +4368,7 @@ H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_llong, FAIL);
H5T_CONV_sS(INT, LLONG,
@@ -4393,7 +4395,7 @@ H5T_conv_int_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_int_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_int_ullong, FAIL);
H5T_CONV_sU(INT, ULLONG,
@@ -4420,7 +4422,7 @@ H5T_conv_int_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_llong, FAIL);
H5T_CONV_uS(UINT, LLONG,
@@ -4448,7 +4450,7 @@ H5T_conv_uint_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_uint_ullong, FAIL);
H5T_CONV_uU(UINT, ULLONG,
@@ -4475,7 +4477,7 @@ H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_schar, FAIL);
H5T_CONV_Ss(LONG, SCHAR,
@@ -4503,7 +4505,7 @@ H5T_conv_long_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_uchar, FAIL);
H5T_CONV_Su(LONG, UCHAR,
@@ -4531,7 +4533,7 @@ H5T_conv_long_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_schar, FAIL);
H5T_CONV_Us(ULONG, SCHAR,
@@ -4559,7 +4561,7 @@ H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_uchar, FAIL);
H5T_CONV_Uu(ULONG, UCHAR,
@@ -4587,7 +4589,7 @@ H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_short, FAIL);
H5T_CONV_Ss(LONG, SHORT,
@@ -4615,7 +4617,7 @@ H5T_conv_long_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_ushort, FAIL);
H5T_CONV_Su(LONG, USHORT,
@@ -4643,7 +4645,7 @@ H5T_conv_long_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_short, FAIL);
H5T_CONV_Us(ULONG, SHORT,
@@ -4672,7 +4674,7 @@ H5T_conv_ulong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_ushort, FAIL);
H5T_CONV_Uu(ULONG, USHORT,
@@ -4700,7 +4702,7 @@ H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_int, FAIL);
H5T_CONV_Ss(LONG, INT,
@@ -4728,7 +4730,7 @@ H5T_conv_long_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_uint, FAIL);
H5T_CONV_Su(LONG, UINT,
@@ -4756,7 +4758,7 @@ H5T_conv_long_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_int, FAIL);
H5T_CONV_Us(ULONG, INT,
@@ -4784,7 +4786,7 @@ H5T_conv_ulong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_uint, FAIL);
H5T_CONV_Uu(ULONG, UINT,
@@ -4812,7 +4814,7 @@ H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_ulong, FAIL);
H5T_CONV_su(LONG, ULONG,
@@ -4839,7 +4841,7 @@ H5T_conv_long_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_long, FAIL);
H5T_CONV_us(ULONG, LONG,
@@ -4867,7 +4869,7 @@ H5T_conv_ulong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_llong, FAIL);
H5T_CONV_sS(LONG, LLONG,
@@ -4894,7 +4896,7 @@ H5T_conv_long_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_long_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_ullong, FAIL);
H5T_CONV_sU(LONG, ULLONG,
@@ -4921,7 +4923,7 @@ H5T_conv_long_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_long_llong, FAIL);
H5T_CONV_uS(ULONG, LLONG,
@@ -4950,7 +4952,7 @@ H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ulong_ullong, FAIL);
H5T_CONV_uU(ULONG, ULLONG,
@@ -4977,7 +4979,7 @@ H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_schar, FAIL);
H5T_CONV_Ss(LLONG, SCHAR,
@@ -5005,7 +5007,7 @@ H5T_conv_llong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_uchar, FAIL);
H5T_CONV_Su(LLONG, UCHAR,
@@ -5034,7 +5036,7 @@ H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_schar, FAIL);
H5T_CONV_Us(ULLONG, SCHAR,
@@ -5062,7 +5064,7 @@ H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_uchar, FAIL);
H5T_CONV_Uu(ULLONG, UCHAR,
@@ -5090,7 +5092,7 @@ H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_short, FAIL);
H5T_CONV_Ss(LLONG, SHORT,
@@ -5119,7 +5121,7 @@ H5T_conv_llong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_ushort, FAIL);
H5T_CONV_Su(LLONG, USHORT,
@@ -5148,7 +5150,7 @@ H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ullong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_short, FAIL);
H5T_CONV_Us(ULLONG, SHORT,
@@ -5177,7 +5179,7 @@ H5T_conv_ullong_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_ushort, FAIL);
H5T_CONV_Uu(ULLONG, USHORT,
@@ -5205,7 +5207,7 @@ H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_int, FAIL);
H5T_CONV_Ss(LLONG, INT,
@@ -5233,7 +5235,7 @@ H5T_conv_llong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_uint, FAIL);
H5T_CONV_Su(LLONG, UINT,
@@ -5261,7 +5263,7 @@ H5T_conv_llong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ullong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_int, FAIL);
H5T_CONV_Us(ULLONG, INT,
@@ -5289,7 +5291,7 @@ H5T_conv_ullong_int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_uint, FAIL);
H5T_CONV_Uu(ULLONG, UINT,
@@ -5317,7 +5319,7 @@ H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_long, FAIL);
H5T_CONV_Ss(LLONG, LONG,
@@ -5345,7 +5347,7 @@ H5T_conv_llong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_ulong, FAIL);
H5T_CONV_Su(LLONG, ULONG,
@@ -5373,7 +5375,7 @@ H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
*/
herr_t
H5T_conv_ullong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
- size_t nelmts, size_t stride, void *buf, void UNUSED *bkg)
+ size_t nelmts, size_t stride, void *buf, void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_long, FAIL);
H5T_CONV_Us(ULLONG, LONG,
@@ -5402,7 +5404,7 @@ H5T_conv_ullong_long(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_ulong, FAIL);
H5T_CONV_Uu(ULLONG, ULONG,
@@ -5431,7 +5433,7 @@ H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_llong_ullong, FAIL);
H5T_CONV_su(LLONG, ULLONG,
@@ -5459,7 +5461,7 @@ H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
FUNC_ENTER(H5T_conv_ullong_llong, FAIL);
H5T_CONV_us(ULLONG, LLONG,
@@ -5491,7 +5493,7 @@ H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
size_t elmtno; /*element number */
uint8_t *src, *s; /*source buffer */
@@ -5614,7 +5616,7 @@ H5T_conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
size_t elmtno; /*element number */
uint8_t *src, *s; /*source buffer */
@@ -5743,7 +5745,7 @@ H5T_conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
herr_t
H5T_conv_i32le_f64le (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void UNUSED *bkg)
+ void UNUSED *bkg, hid_t UNUSED dset_xfer_plist)
{
uint8_t *s=NULL, *d=NULL; /*src and dst buf pointers */
uint8_t tmp[8]; /*temporary destination buffer */
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index d4b477e..5941e0a 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -88,7 +88,7 @@ typedef struct H5T_enum_t {
/* VL function pointers */
typedef hsize_t (*H5T_vlen_getlenfunc_t)(H5F_t *f, void *vl_addr);
typedef herr_t (*H5T_vlen_readfunc_t)(H5F_t *f, void *vl_addr, void *buf, size_t len);
-typedef herr_t (*H5T_vlen_allocfunc_t)(H5F_t *f, void *vl_addr, hsize_t seq_len, hsize_t base_size);
+typedef herr_t (*H5T_vlen_allocfunc_t)(const H5F_xfer_t *xfer_parms, void *vl_addr, hsize_t seq_len, hsize_t base_size);
typedef herr_t (*H5T_vlen_writefunc_t)(H5F_t *f, void *vl_addr, void *buf, size_t len);
/* A VL datatype */
@@ -120,6 +120,7 @@ struct H5T_t {
H5F_t *sh_file;/*file pointer if this is a shared type */
H5T_class_t type; /*which class of type is this? */
size_t size; /*total size of an instance of this type */
+ hbool_t force_conv; /* Set if this type always needs to be converted and H5T_conv_noop cannot be called */
struct H5T_t *parent;/*parent type for derived data types */
union {
H5T_atomic_t atomic; /*an atomic data type */
@@ -210,320 +211,320 @@ __DLLVAR__ size_t H5T_NATIVE_UINT_FAST64_ALIGN_g;
/* Conversion functions */
__DLL__ herr_t H5T_conv_noop(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *_buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *_buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_struct_opt(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void *bkg);
+ size_t stride, void *_buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *_buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *_buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *_buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *_buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_short_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_int_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_long_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_short(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_int(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_long(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_float_double(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_double_float(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *buf, void *bkg);
+ size_t stride, void *buf, void *bkg, hid_t dset_xfer_plist);
__DLL__ herr_t H5T_conv_i32le_f64le(hid_t src_id, hid_t dst_id,
H5T_cdata_t *cdata, size_t nelmts,
- size_t stride, void *_buf, void *bkg);
+ size_t stride, void *_buf, void *bkg, hid_t dset_xfer_plist);
/* Bit twiddling functions */
__DLL__ void H5T_bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
@@ -540,11 +541,11 @@ __DLL__ htri_t H5T_bit_inc(uint8_t *buf, size_t start, size_t size);
/* VL functions */
__DLL__ hsize_t H5T_vlen_mem_getlen(H5F_t *f, void *vl_addr);
__DLL__ herr_t H5T_vlen_mem_read(H5F_t *f, void *vl_addr, void *_buf, size_t len);
-__DLL__ herr_t H5T_vlen_mem_alloc(H5F_t *f, void *vl_addr, hsize_t seq_len, hsize_t base_size);
+__DLL__ herr_t H5T_vlen_mem_alloc(const H5F_xfer_t *xfer_parms, void *vl_addr, hsize_t seq_len, hsize_t base_size);
__DLL__ herr_t H5T_vlen_mem_write(H5F_t *f, void *vl_addr, void *_buf, size_t len);
__DLL__ hsize_t H5T_vlen_disk_getlen(H5F_t *f, void *vl_addr);
__DLL__ herr_t H5T_vlen_disk_read(H5F_t *f, void *vl_addr, void *_buf, size_t len);
-__DLL__ herr_t H5T_vlen_disk_alloc(H5F_t *f, void *vl_addr, hsize_t seq_len, hsize_t base_size);
+__DLL__ herr_t H5T_vlen_disk_alloc(const H5F_xfer_t *xfer_parms, void *vl_addr, hsize_t seq_len, hsize_t base_size);
__DLL__ herr_t H5T_vlen_disk_write(H5F_t *f, void *vl_addr, void *_buf, size_t len);
/* Reference specific functions */
diff --git a/src/H5Tprivate.h b/src/H5Tprivate.h
index 5d0fe43..7ce7f67 100644
--- a/src/H5Tprivate.h
+++ b/src/H5Tprivate.h
@@ -97,7 +97,8 @@ __DLL__ H5T_path_t *H5T_path_find(const H5T_t *src, const H5T_t *dst,
__DLL__ herr_t H5T_sort_value(H5T_t *dt, int *map);
__DLL__ herr_t H5T_sort_name(H5T_t *dt, int *map);
__DLL__ herr_t H5T_convert(H5T_path_t *tpath, hid_t src_id, hid_t dst_id,
- size_t nelmts, size_t stride, void *buf, void *bkg);
+ size_t nelmts, size_t stride, void *buf, void *bkg,
+ hid_t dset_xfer_plist);
__DLL__ herr_t H5T_set_size(H5T_t *dt, size_t size);
__DLL__ herr_t H5T_set_precision(H5T_t *dt, size_t prec);
__DLL__ herr_t H5T_set_offset(H5T_t *dt, size_t offset);
@@ -105,6 +106,7 @@ __DLL__ char *H5T_enum_nameof(H5T_t *dt, void *value, char *name/*out*/,
size_t size);
__DLL__ herr_t H5T_enum_valueof(H5T_t *dt, const char *name,
void *value/*out*/);
-__DLL__ herr_t H5T_vlen_set_loc(H5T_t *dt, H5F_t *f, H5T_vlen_type_t loc);
+__DLL__ herr_t H5T_vlen_reclaim(void *elem, hid_t type_id, hsize_t UNUSED ndim, hssize_t UNUSED *point, void UNUSED *_op_data);
+__DLL__ herr_t H5T_vlen_mark(H5T_t *dt, H5F_t *f, H5T_vlen_type_t loc);
#endif
diff --git a/src/H5Tpublic.h b/src/H5Tpublic.h
index 22c9eb8..12dd593 100644
--- a/src/H5Tpublic.h
+++ b/src/H5Tpublic.h
@@ -159,7 +159,7 @@ typedef struct {
/* All data type conversion functions are... */
typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
size_t nelmts, size_t stride, void *buf,
- void *bkg);
+ void *bkg, hid_t dset_xfer_plist);
/*
* If an error occurs during a data type conversion then the function
@@ -519,7 +519,7 @@ __DLL__ herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id,
hid_t dst_id, H5T_conv_t func);
__DLL__ H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata);
__DLL__ herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts,
- void *buf, void *background);
+ void *buf, void *background, hid_t plist_id);
__DLL__ H5T_overflow_t H5Tget_overflow(void);
__DLL__ herr_t H5Tset_overflow(H5T_overflow_t func);
diff --git a/src/H5Tvlen.c b/src/H5Tvlen.c
index 4530361..1a70aa8 100644
--- a/src/H5Tvlen.c
+++ b/src/H5Tvlen.c
@@ -21,6 +21,7 @@ static char RcsId[] = "@(#)$Revision$";
#include <H5private.h> /* Generic Functions */
#include <H5Eprivate.h> /* Errors */
#include <H5HGprivate.h> /* Global Heaps */
+#include <H5Iprivate.h> /* IDs */
#include <H5MMprivate.h> /* Memory Allocation */
#include <H5Tpkg.h> /* Datatypes */
@@ -30,6 +31,9 @@ static char RcsId[] = "@(#)$Revision$";
static intn interface_initialize_g = 0;
#define INTERFACE_INIT NULL
+/* Local functions */
+static herr_t H5T_vlen_reclaim_recurse(void *elem, H5T_t *dt, H5MM_free_t free_func, void *free_info);
+
/*-------------------------------------------------------------------------
* Function: H5T_vlen_set_loc
@@ -45,7 +49,8 @@ static intn interface_initialize_g = 0;
*
*-------------------------------------------------------------------------
*/
-herr_t H5T_vlen_set_loc(H5T_t *dt, H5F_t *f, H5T_vlen_type_t loc)
+static herr_t
+H5T_vlen_set_loc(H5T_t *dt, H5F_t *f, H5T_vlen_type_t loc)
{
FUNC_ENTER (H5T_vlen_set_loc, FAIL);
@@ -100,7 +105,7 @@ herr_t H5T_vlen_set_loc(H5T_t *dt, H5F_t *f, H5T_vlen_type_t loc)
} /* end switch */
FUNC_LEAVE (SUCCEED);
-} /* end H5T_vlen_disk_write() */
+} /* end H5T_vlen_set_loc() */
/*-------------------------------------------------------------------------
@@ -177,7 +182,7 @@ herr_t H5T_vlen_mem_read(H5F_t UNUSED *f, void *vl_addr, void *buf, size_t len)
*
*-------------------------------------------------------------------------
*/
-herr_t H5T_vlen_mem_alloc(H5F_t UNUSED *f, void *vl_addr, hsize_t seq_len, hsize_t base_size)
+herr_t H5T_vlen_mem_alloc(const H5F_xfer_t *xfer_parms, void *vl_addr, hsize_t seq_len, hsize_t base_size)
{
hvl_t *vl=(hvl_t *)vl_addr; /* Pointer to the user's hvl_t information */
@@ -186,8 +191,15 @@ herr_t H5T_vlen_mem_alloc(H5F_t UNUSED *f, void *vl_addr, hsize_t seq_len, hsize
/* check parameters */
assert(vl);
- if(NULL==(vl->p=H5MM_malloc(seq_len*base_size)))
- HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for VL data");
+ /* Use the user's memory allocation routine is one is defined */
+ if(xfer_parms->vlen_alloc!=NULL) {
+ if(NULL==(vl->p=(xfer_parms->vlen_alloc)(seq_len*base_size,xfer_parms->alloc_info)))
+ HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for VL data");
+ } /* end if */
+ else { /* Default to system malloc */
+ if(NULL==(vl->p=H5MM_malloc(seq_len*base_size)))
+ HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for VL data");
+ } /* end else */
vl->len=seq_len;
FUNC_LEAVE (SUCCEED);
@@ -312,7 +324,7 @@ herr_t H5T_vlen_disk_read(H5F_t *f, void *vl_addr, void *buf, size_t UNUSED len)
*
*-------------------------------------------------------------------------
*/
-herr_t H5T_vlen_disk_alloc(H5F_t UNUSED *f, void UNUSED *vl_addr, hsize_t UNUSED seq_len, hsize_t UNUSED base_size)
+herr_t H5T_vlen_disk_alloc(const H5F_xfer_t UNUSED *f, void UNUSED *vl_addr, hsize_t UNUSED seq_len, hsize_t UNUSED base_size)
{
FUNC_ENTER (H5T_vlen_disk_alloc, FAIL);
@@ -363,3 +375,211 @@ herr_t H5T_vlen_disk_write(H5F_t *f, void *vl_addr, void *buf, size_t len)
FUNC_LEAVE (SUCCEED);
} /* end H5T_vlen_disk_write() */
+
+/*--------------------------------------------------------------------------
+ NAME
+ H5T_vlen_reclaim_recurse
+ PURPOSE
+ Internal recursive routine to free VL datatypes
+ USAGE
+ herr_t H5T_vlen_reclaim(elem,dt)
+ void *elem; IN/OUT: Pointer to the dataset element
+ H5T_t *dt; IN: Datatype of dataset element
+
+ RETURNS
+ SUCCEED/FAIL
+ DESCRIPTION
+ Frees any dynamic memory used by VL datatypes in the current dataset
+ element. Performs a recursive depth-first traversal of all compound
+ datatypes to free all VL datatype information allocated by any field.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+static herr_t
+H5T_vlen_reclaim_recurse(void *elem, H5T_t *dt, H5MM_free_t free_func, void *free_info)
+{
+ intn i,j; /* local counting variable */
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER(H5T_vlen_reclaim_recurse, FAIL);
+
+ assert(elem);
+ assert(dt);
+
+ /* Check the datatype of this element */
+ switch(dt->type) {
+ /* Check each field and recurse on VL and compound ones */
+ case H5T_COMPOUND:
+ for (i=0; i<dt->u.compnd.nmembs; i++) {
+ /* Recurse if it's VL or compound */
+ if(dt->u.compnd.memb[i].type->type==H5T_COMPOUND || dt->u.compnd.memb[i].type->type==H5T_VLEN) {
+ uintn nelem=1; /* Number of array elements in field */
+ void *off; /* offset of field */
+
+ /* Compute the number of array elements in field */
+ for(j=0; j<dt->u.compnd.memb[i].ndims; j++)
+ nelem *= dt->u.compnd.memb[i].dim[j];
+
+ /* Calculate the offset of each array element and recurse on it */
+ while(nelem>0) {
+ off=((uint8_t *)elem)+dt->u.compnd.memb[i].offset+(nelem-1)*dt->u.compnd.memb[i].type->size;
+ if(H5T_vlen_reclaim_recurse(off,dt->u.compnd.memb[i].type,free_func,free_info)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTFREE, FAIL, "Unable to free compound field");
+ nelem--;
+ } /* end while */
+ } /* end if */
+ } /* end for */
+ break;
+
+ /* Recurse on the VL information if it's VL or compound, then free VL sequence */
+ case H5T_VLEN:
+ {
+ hvl_t *vl=(hvl_t *)elem; /* Temp. ptr to the vl info */
+
+ /* Recurse if it's VL or compound */
+ if(dt->parent->type==H5T_COMPOUND || dt->parent->type==H5T_VLEN) {
+ void *off; /* offset of field */
+
+ /* Calculate the offset of each array element and recurse on it */
+ while(vl->len>0) {
+ off=((uint8_t *)vl->p)+(vl->len-1)*dt->parent->size;
+ if(H5T_vlen_reclaim_recurse(off,dt->parent,free_func,free_info)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTFREE, FAIL, "Unable to free VL element");
+ vl->len--;
+ } /* end while */
+ } /* end if */
+
+ /* Free the VL sequence */
+ if(free_func!=NULL)
+ (*free_func)(vl->p,free_info);
+ else
+ H5MM_xfree(vl->p);
+ } /* end case */
+ break;
+
+ default:
+ break;
+ } /* end switch */
+
+done:
+ FUNC_LEAVE(ret_value);
+} /* end H5T_vlen_reclaim_recurse() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
+ H5T_vlen_reclaim
+ PURPOSE
+ Default method to reclaim any VL data for a buffer element
+ USAGE
+ herr_t H5T_vlen_reclaim(elem,type_id,ndim,point,op_data)
+ void *elem; IN/OUT: Pointer to the dataset element
+ hid_t type_id; IN: Datatype of dataset element
+ hsize_t ndim; IN: Number of dimensions in dataspace
+ hssize_t *point; IN: Coordinate location of element in dataspace
+ void *op_data IN: Operator data
+
+ RETURNS
+ SUCCEED/FAIL
+ DESCRIPTION
+ Frees any dynamic memory used by VL datatypes in the current dataset
+ element. Recursively descends compound datatypes to free all VL datatype
+ information allocated by any field.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+herr_t
+H5T_vlen_reclaim(void *elem, hid_t type_id, hsize_t UNUSED ndim, hssize_t UNUSED *point, void *op_data)
+{
+ H5F_xfer_t *xfer_parms = (H5F_xfer_t *)op_data; /* Dataset transfer plist from iterator */
+ H5T_t *dt = NULL;
+ herr_t ret_value = FAIL;
+
+ FUNC_ENTER(H5T_vlen_reclaim, FAIL);
+
+ assert(elem);
+ assert(H5I_DATATYPE == H5I_get_type(type_id));
+
+ /* Check args */
+ if (H5I_DATATYPE!=H5I_get_type(type_id) || NULL==(dt=H5I_object(type_id)))
+ HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type");
+
+ /* Pull the free function and free info pointer out of the op_data and call the recurse datatype free function */
+ ret_value=H5T_vlen_reclaim_recurse(elem,dt,xfer_parms->vlen_free,xfer_parms->free_info);
+
+#ifdef LATER
+done:
+#endif /* LATER */
+ FUNC_LEAVE(ret_value);
+} /* end H5T_vlen_reclaim() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
+ H5T_vlen_mark
+ PURPOSE
+ Recursively mark any VL datatypes as on disk/in memory
+ USAGE
+ herr_t H5T_vlen_mark(dt,f,loc)
+ H5T_t *dt; IN/OUT: Pointer to the datatype to mark
+ H5F_t *dt; IN: Pointer to the file the datatype is in
+ H5T_vlen_type_t loc IN: location of VL type
+
+ RETURNS
+ SUCCEED/FAIL
+ DESCRIPTION
+ Recursively descends any VL or compound datatypes to mark all VL datatypes
+ as either on disk or in memory.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+herr_t
+H5T_vlen_mark(H5T_t *dt, H5F_t *f, H5T_vlen_type_t loc)
+{
+ intn i; /* local counting variable */
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER(H5T_vlen_mark, FAIL);
+
+ assert(dt);
+ assert(loc>H5T_VLEN_BADTYPE && loc<H5T_VLEN_MAXTYPE);
+
+ /* Check the datatype of this element */
+ switch(dt->type) {
+ /* Check each field and recurse on VL and compound ones */
+ case H5T_COMPOUND:
+ for (i=0; i<dt->u.compnd.nmembs; i++) {
+ /* Recurse if it's VL or compound */
+ if(dt->u.compnd.memb[i].type->type==H5T_COMPOUND || dt->u.compnd.memb[i].type->type==H5T_VLEN) {
+ if(H5T_vlen_mark(dt->u.compnd.memb[i].type,f,loc)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "Unable to set VL location");
+ } /* end if */
+ } /* end for */
+ break;
+
+ /* Recurse on the VL information if it's VL or compound, then free VL sequence */
+ case H5T_VLEN:
+ /* Recurse if it's VL or compound */
+ if(dt->parent->type==H5T_COMPOUND || dt->parent->type==H5T_VLEN) {
+ if(H5T_vlen_mark(dt->parent,f,loc)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "Unable to set VL location");
+ } /* end if */
+
+ /* Mark this VL sequence */
+ if(H5T_vlen_set_loc(dt,f,loc)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "Unable to set VL location");
+ break;
+
+ default:
+ break;
+ } /* end switch */
+
+done:
+ FUNC_LEAVE(ret_value);
+} /* end H5T_vlen_mark() */