summaryrefslogtreecommitdiffstats
path: root/src/H5Sprivate.h
diff options
context:
space:
mode:
authorRobert Kim Yates <rkyates@llnl.gov>1998-09-18 23:08:09 (GMT)
committerRobert Kim Yates <rkyates@llnl.gov>1998-09-18 23:08:09 (GMT)
commit8718c53e6b8ca3d64b2e129a0b4401e124aef116 (patch)
tree302b7916e23e173227c855a2faa06cddf6d5f944 /src/H5Sprivate.h
parentd3c8def6aa7e19e0005b6392f41a9d4bd4bb14af (diff)
downloadhdf5-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.h24
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 */