summaryrefslogtreecommitdiffstats
path: root/src/H5Sprivate.h
diff options
context:
space:
mode:
authorRobert Kim Yates <rkyates@llnl.gov>1998-08-17 15:15:19 (GMT)
committerRobert Kim Yates <rkyates@llnl.gov>1998-08-17 15:15:19 (GMT)
commit8ed18c9e73733939216251e1d154b18e7d34bad3 (patch)
tree933d65a6dbac2ff4d238093d8fec65607c69f911 /src/H5Sprivate.h
parent05db4b09cd1710e76f50115e5f5ff0691e65215d (diff)
downloadhdf5-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.h40
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