summaryrefslogtreecommitdiffstats
path: root/src/H5Spublic.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2001-11-02 20:31:35 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2001-11-02 20:31:35 (GMT)
commit1cd9eb7e0d282aaf5161af220aae00cc7f7e31f9 (patch)
tree90c364175d9336948f7f98ec7c632494af48edb3 /src/H5Spublic.h
parente9d955be61f79ceddd6be3d279f723d8e9153b9b (diff)
downloadhdf5-1cd9eb7e0d282aaf5161af220aae00cc7f7e31f9.zip
hdf5-1cd9eb7e0d282aaf5161af220aae00cc7f7e31f9.tar.gz
hdf5-1cd9eb7e0d282aaf5161af220aae00cc7f7e31f9.tar.bz2
[svn-r4586] Purpose:
Code speedups, etc. Description: Bring in new algorithms and data structures for dealing with hyperslabs. This speeds up the hyperslab I/O for non-regular hyperslabs by a huge amount. Currently, the new API functions are ifdef'ed out, pending discussion and consensus approval. Platforms tested: FreeBSD 4.4 (hawkwind)
Diffstat (limited to 'src/H5Spublic.h')
-rw-r--r--src/H5Spublic.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/H5Spublic.h b/src/H5Spublic.h
index 577998b..7c5ab31 100644
--- a/src/H5Spublic.h
+++ b/src/H5Spublic.h
@@ -40,7 +40,34 @@ typedef enum H5S_seloper_t {
H5S_SELECT_NOOP = -1, /* error */
H5S_SELECT_SET = 0, /* Select "set" operation */
H5S_SELECT_OR, /* Binary "or" operation for hyperslabs
- * (add new selection to existing selection)
+ * (add new selection to existing selection)
+ * Original region: AAAAAAAAAA
+ * New region: BBBBBBBBBB
+ * A or B: CCCCCCCCCCCCCCCC
+ */
+ H5S_SELECT_AND, /* Binary "and" operation for hyperslabs
+ * (only leave overlapped regions in selection)
+ * Original region: AAAAAAAAAA
+ * New region: BBBBBBBBBB
+ * A and B: CCCC
+ */
+ H5S_SELECT_XOR, /* Binary "xor" operation for hyperslabs
+ * (only leave non-overlapped regions in selection)
+ * Original region: AAAAAAAAAA
+ * New region: BBBBBBBBBB
+ * A xor B: CCCCCC CCCCCC
+ */
+ H5S_SELECT_NOTB, /* Binary "not" operation for hyperslabs
+ * (only leave non-overlapped regions in original selection)
+ * Original region: AAAAAAAAAA
+ * New region: BBBBBBBBBB
+ * A not B: CCCCCC
+ */
+ H5S_SELECT_NOTA, /* Binary "not" operation for hyperslabs
+ * (only leave non-overlapped regions in new selection)
+ * Original region: AAAAAAAAAA
+ * New region: BBBBBBBBBB
+ * B not A: CCCCCC
*/
H5S_SELECT_APPEND, /* Append elements to end of point selection */
H5S_SELECT_PREPEND, /* Prepend elements to beginning of point selection */
@@ -72,6 +99,17 @@ __DLL__ herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,
const hsize_t _stride[],
const hsize_t count[],
const hsize_t _block[]);
+#ifdef NEW_HYPERSLAB_API
+__DLL__ hid_t H5Scombine_hyperslab(hid_t space_id, H5S_seloper_t op,
+ const hssize_t start[],
+ const hsize_t _stride[],
+ const hsize_t count[],
+ const hsize_t _block[]);
+__DLL__ herr_t H5Sselect_select(hid_t space1_id, H5S_seloper_t op,
+ hid_t space2_id);
+__DLL__ hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op,
+ hid_t space2_id);
+#endif /* OLD_WAY */
__DLL__ herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,
size_t num_elemn,
const hssize_t **coord);