summaryrefslogtreecommitdiffstats
path: root/src/H5Oprivate.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2004-09-30 03:46:58 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2004-09-30 03:46:58 (GMT)
commit7d457ba693ea827a55277563525a4fbdb04ce2fd (patch)
tree7f1bddb78fa55c5c2edac730545ac259591500a1 /src/H5Oprivate.h
parente0c4a752e6522a2d6bf50cef42bccf165264a89c (diff)
downloadhdf5-7d457ba693ea827a55277563525a4fbdb04ce2fd.zip
hdf5-7d457ba693ea827a55277563525a4fbdb04ce2fd.tar.gz
hdf5-7d457ba693ea827a55277563525a4fbdb04ce2fd.tar.bz2
[svn-r9342] Purpose:
Bug fix/code cleanup Description: Clean up raw data I/O code to bundle the I/O parameters (dataset, DXPL ID, etc) into a single struct to pass around through the dataset I/O routines, since they are always passed together, until very near the bottom of the I/O stack. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Solaris 2.7 (arabica) IRIX64 6.5 (modi4) h5committest
Diffstat (limited to 'src/H5Oprivate.h')
-rw-r--r--src/H5Oprivate.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/H5Oprivate.h b/src/H5Oprivate.h
index 31017a4..347c1c3 100644
--- a/src/H5Oprivate.h
+++ b/src/H5Oprivate.h
@@ -143,6 +143,18 @@ typedef struct H5O_layout_compact_t {
void *buf; /* Buffer for compact dataset */
} H5O_layout_compact_t;
+/* Function pointers for I/O on particular types of dataset layouts */
+/* (Forward declare some structs/unions to avoid #include problems) */
+struct H5D_io_info_t;
+typedef ssize_t (*H5O_layout_readvv_func_t)(struct H5D_io_info_t *io_info,
+ size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
+ size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[],
+ void *buf);
+typedef ssize_t (*H5O_layout_writevv_func_t)(struct H5D_io_info_t *io_info,
+ size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
+ size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[],
+ const void *buf);
+
typedef struct H5O_layout_t {
H5D_layout_t type; /* Type of layout */
unsigned version; /* Version of message */
@@ -151,6 +163,8 @@ typedef struct H5O_layout_t {
H5O_layout_chunk_t chunk; /* Information for chunked layout */
H5O_layout_compact_t compact; /* Information for compact layout */
} u;
+ H5O_layout_readvv_func_t readvv; /* I/O routine for reading data */
+ H5O_layout_writevv_func_t writevv; /* I/O routine for writing data */
} H5O_layout_t;
/* Enable reading/writing "bogus" messages */
@@ -265,11 +279,11 @@ H5_DLL size_t H5O_layout_meta_size(H5F_t *f, const void *_mesg);
/* EFL operators */
H5_DLL hsize_t H5O_efl_total_size(H5O_efl_t *efl);
-H5_DLL ssize_t H5O_efl_readvv(const H5O_efl_t *efl,
+H5_DLL ssize_t H5O_efl_readvv(struct H5D_io_info_t *io_info,
size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[],
void *buf);
-H5_DLL ssize_t H5O_efl_writevv(const H5O_efl_t *efl,
+H5_DLL ssize_t H5O_efl_writevv(struct H5D_io_info_t *io_info,
size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[],
const void *buf);