diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 1999-06-04 22:27:28 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 1999-06-04 22:27:28 (GMT) |
commit | 2a10e682a13244d5c61982445f2d6ec5bc990a36 (patch) | |
tree | fd25460dfb65d05ee3b3f19a5b11fe728a0e7adf /src/H5D.c | |
parent | df96f4362a0872e832cb0b995e209da4e315cb9d (diff) | |
download | hdf5-2a10e682a13244d5c61982445f2d6ec5bc990a36.zip hdf5-2a10e682a13244d5c61982445f2d6ec5bc990a36.tar.gz hdf5-2a10e682a13244d5c61982445f2d6ec5bc990a36.tar.bz2 |
[svn-r1305] Checkpointing the VL datatype code. I believe the core functionality is here,
accessed with H5Tvlen_create, but I need to start writing tests now. Also the
more esoteric API calls (such as H5Tget_vlen_buf_size and the memory management
calls) aren't implemented yet.
Diffstat (limited to 'src/H5D.c')
-rw-r--r-- | src/H5D.c | 34 |
1 files changed, 25 insertions, 9 deletions
@@ -1,13 +1,13 @@ /**************************************************************************** -* NCSA HDF * -* Software Development Group * -* National Center for Supercomputing Applications * -* University of Illinois at Urbana-Champaign * -* 605 E. Springfield, Champaign IL 61820 * -* * -* For conditions of distribution and use, see the accompanying * -* hdf/COPYING file. * -* * +* NCSA HDF * +* Software Development Group * +* National Center for Supercomputing Applications * +* University of Illinois at Urbana-Champaign * +* 605 E. Springfield, Champaign IL 61820 * +* * +* For conditions of distribution and use, see the accompanying * +* hdf/COPYING file. * +* * ****************************************************************************/ #ifdef RCSID @@ -457,6 +457,12 @@ H5Dget_type(hid_t dset_id) HRETURN_ERROR (H5E_DATASET, H5E_CANTINIT, FAIL, "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, NULL, "invalid VL location"); + } + } if (H5T_lock (copied_type, FALSE)<0) { H5T_close (copied_type); HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL, @@ -905,7 +911,17 @@ H5D_create(H5G_entry_t *loc, const char *name, const H5T_t *type, HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); } + + /* Copy datatype for dataset */ 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"); + } + } + efl = &(new_dset->create_parms->efl); /* Total raw data size */ |