summaryrefslogtreecommitdiffstats
path: root/src/H5Sprivate.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2000-09-22 19:28:05 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2000-09-22 19:28:05 (GMT)
commit7bd50661fe8096cafb488fc19b9f87fffd69a325 (patch)
treec321c0e1da0cbdd5d2c82306adf81e20b315cd1d /src/H5Sprivate.h
parent57ed75800a0ff96eeae1d076602b3f89740d7c8c (diff)
downloadhdf5-7bd50661fe8096cafb488fc19b9f87fffd69a325.zip
hdf5-7bd50661fe8096cafb488fc19b9f87fffd69a325.tar.gz
hdf5-7bd50661fe8096cafb488fc19b9f87fffd69a325.tar.bz2
[svn-r2587] Purpose:
Bug fix (sorta) Description: When the stride and block size of a hyperslab selection are equal, the blocks that are selected are contiguous in the dataset. Prior to my hyperslab optimizations, this situation used to be detected and somewhat optimized to improve performance. I've added more code to optimize for this situation and integrated it with the new hyperslab optimization that weren't very efficient for that case as they should have been. Solution: Detect contiguous hyperslab selections (i.e. block size in a dimension is the same as the stride in that dimension) and store the optimized, contiguous version of that hyperslab. We also store the original, un- optimized version of the hyperslab to give back to the user if they query the hyperslab selection they just made. Platforms tested: FreeBSD 4.1
Diffstat (limited to 'src/H5Sprivate.h')
-rw-r--r--src/H5Sprivate.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h
index 4de6e34..2824af0 100644
--- a/src/H5Sprivate.h
+++ b/src/H5Sprivate.h
@@ -127,6 +127,13 @@ typedef struct {
* 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_dim_t *app_diminfo;/* ->[rank] of per-dim selection info */
+ /* 'diminfo' points to a [potentially] optimized version of the user's
+ * hyperslab information. 'app_diminfo' points to the actual parameters
+ * that the application used for setting the hyperslab selection. These
+ * are only used for re-gurgitating the original values used to set the
+ * hyperslab to the application when it queries the hyperslab selection
+ * information. */
H5S_hyper_list_t *hyper_lst; /* List of selected hyperslabs (order is not important) */
} H5S_hyper_sel_t;