diff options
author | Robert Kim Yates <rkyates@llnl.gov> | 1998-08-17 15:15:19 (GMT) |
---|---|---|
committer | Robert Kim Yates <rkyates@llnl.gov> | 1998-08-17 15:15:19 (GMT) |
commit | 8ed18c9e73733939216251e1d154b18e7d34bad3 (patch) | |
tree | 933d65a6dbac2ff4d238093d8fec65607c69f911 /src/H5Sprivate.h | |
parent | 05db4b09cd1710e76f50115e5f5ff0691e65215d (diff) | |
download | hdf5-8ed18c9e73733939216251e1d154b18e7d34bad3.zip hdf5-8ed18c9e73733939216251e1d154b18e7d34bad3.tar.gz hdf5-8ed18c9e73733939216251e1d154b18e7d34bad3.tar.bz2 |
[svn-r598] Added code to convert HDF dataspace selections to MPI datatypes.
Diffstat (limited to 'src/H5Sprivate.h')
-rw-r--r-- | src/H5Sprivate.h | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h index 7969822..1e2ca6f 100644 --- a/src/H5Sprivate.h +++ b/src/H5Sprivate.h @@ -90,7 +90,7 @@ typedef struct { H5S_hyper_node_t *node; /* Boundary's node */ } H5S_hyper_bound_t; -/* Information about hyperslab selection */ +/* Information about hyperslab list */ typedef struct { size_t count; /* Number of nodes in list */ H5S_hyper_node_t *head; /* Pointer to head of hyperslab list */ @@ -98,6 +98,24 @@ typedef struct { H5S_hyper_bound_t **hi_bounds; /* Upper (farthest from the origin) bound array for each dimension */ } H5S_hyper_list_t; +/* Information about one dimension in a hyperslab selection */ +typedef struct { + hssize_t start; + hsize_t stride; + hsize_t count; + hsize_t block; +} H5S_hyper_dim_t; + +/* Information about hyperslab selection */ +typedef struct { + H5S_hyper_dim_t *diminfo; /* ->[rank] of per-dim selection info */ + /* diminfo only points to one array, which holds the information + * for one hyperslab selection. Perhaps this might need to be + * expanded into a list of arrays when the H5Sselect_hyperslab's + * restriction to H5S_SELECT_SET is removed. */ + H5S_hyper_list_t *hyper_lst; /* List of selected hyperslabs (order is not important) */ +} H5S_hyper_sel_t; + /* Selection information container */ typedef struct { H5S_sel_type type; /* Type of selection (list of points or hyperslabs) */ @@ -105,8 +123,8 @@ typedef struct { hsize_t *order; /* Selection order. (NULL means a specific ordering of points) */ hsize_t num_elem; /* Number of elements in selection */ union { - H5S_pnt_list_t *pnt_lst; /* List of selected points (order is important) */ - H5S_hyper_list_t *hyper_lst; /* List of selected hyperslabs (order is not important) */ + H5S_pnt_list_t *pnt_lst; /* List of selected points (order is important) */ + H5S_hyper_sel_t hyper; /* Info about hyperslab selections */ } sel_info; } H5S_select_t; @@ -307,4 +325,20 @@ int H5S_hyper_compare_bounds (const void *r1, const void *r2); herr_t H5S_hyper_copy (H5S_t *dst, const H5S_t *src); hbool_t H5S_hyper_select_valid (const H5S_t *space); +#ifdef HAVE_PARALLEL + /* MPI-IO function to read directly from app buffer to file rky980813 */ + herr_t H5S_mpio_spaces_read (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, void *buf/*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); +#endif + #endif |