diff options
author | Robert Kim Yates <rkyates@llnl.gov> | 1998-09-18 23:08:09 (GMT) |
---|---|---|
committer | Robert Kim Yates <rkyates@llnl.gov> | 1998-09-18 23:08:09 (GMT) |
commit | 8718c53e6b8ca3d64b2e129a0b4401e124aef116 (patch) | |
tree | 302b7916e23e173227c855a2faa06cddf6d5f944 /src/H5Sprivate.h | |
parent | d3c8def6aa7e19e0005b6392f41a9d4bd4bb14af (diff) | |
download | hdf5-8718c53e6b8ca3d64b2e129a0b4401e124aef116.zip hdf5-8718c53e6b8ca3d64b2e129a0b4401e124aef116.tar.gz hdf5-8718c53e6b8ca3d64b2e129a0b4401e124aef116.tar.bz2 |
[svn-r706] Added must_convert parameter to sconv->read and sconv->write functions
so that reads/writes can proceed in the unoptimized way if necessary,
rather than simply failing if they can't be optimized.
Diffstat (limited to 'src/H5Sprivate.h')
-rw-r--r-- | src/H5Sprivate.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h index c66f27d..862de9a 100644 --- a/src/H5Sprivate.h +++ b/src/H5Sprivate.h @@ -223,6 +223,17 @@ typedef struct H5S_conv_t { * If there is no data type conversion then it might be possible to * transfer data points between application memory and the file in one * step without going through the data type conversion buffer. + * + * rky 980918 + * If the direct read or write function determines that the transfer + * must be done indirectly, i.e., through the conversion buffer or + * (in the case of parallel MPI-IO) in block-by-block transfers + * then the function returns with the value of must_convert!=0, + * the function's return value is SUCCEED, + * and no transfer of data is attempted. + * Otherwise the direct read or write function returns must_convert 0, + * with the function's return value being SUCCEED or FAIL + * depending on whether or not the transfer of data was successful. */ /* Read from file to application w/o intermediate scratch buffer */ @@ -230,14 +241,17 @@ typedef struct H5S_conv_t { const struct H5O_pline_t *pline, const struct H5O_efl_t *efl, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, - const H5D_transfer_t xfer_mode, void *buf/*out*/); + const H5D_transfer_t xfer_mode, void *buf/*out*/, + hbool_t *must_convert/*out*/ ); + /* Write directly from app buffer to file */ herr_t (*write)(H5F_t *f, const struct H5O_layout_t *layout, const struct H5O_pline_t *pline, const struct H5O_efl_t *efl, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, - const H5D_transfer_t xfer_mode, const void *buf); + const H5D_transfer_t xfer_mode, const void *buf, + hbool_t *must_convert/*out*/ ); #ifdef H5S_DEBUG struct { @@ -332,14 +346,16 @@ hbool_t H5S_hyper_select_valid (const H5S_t *space); const struct H5O_pline_t *pline, const struct H5O_efl_t *efl, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, - const H5D_transfer_t xfer_mode, void *buf/*out*/); + const H5D_transfer_t xfer_mode, void *buf/*out*/, + hbool_t *must_convert /*out*/ ); /* MPI-IO function to write directly from app buffer to file rky980813 */ herr_t H5S_mpio_spaces_write(H5F_t *f, const struct H5O_layout_t *layout, const struct H5O_pline_t *pline, const struct H5O_efl_t *efl, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, - const H5D_transfer_t xfer_mode, const void *buf); + const H5D_transfer_t xfer_mode, const void *buf, + hbool_t *must_convert /*out*/ ); #ifndef _H5S_IN_H5S_C /* Global var whose value comes from environment variable */ |