summaryrefslogtreecommitdiffstats
path: root/src/H5Zprivate.h
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>2004-05-03 23:34:42 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>2004-05-03 23:34:42 (GMT)
commit0c6229a68d8a8e6148f8a975c5392f62c4b3a35e (patch)
tree84d752bcf68e1ba3ee89cfa3e49f61e7ad0a853a /src/H5Zprivate.h
parentecd3870fa2a8a6a16548592506722d20606be64e (diff)
downloadhdf5-0c6229a68d8a8e6148f8a975c5392f62c4b3a35e.zip
hdf5-0c6229a68d8a8e6148f8a975c5392f62c4b3a35e.tar.gz
hdf5-0c6229a68d8a8e6148f8a975c5392f62c4b3a35e.tar.bz2
[svn-r8479] Purpose:
New Feature Description: Add the data transform function, H5Pset_transform(). Platforms tested: "h5committested". Copper was down. Ran parallel tests in sol instead. Misc. update:
Diffstat (limited to 'src/H5Zprivate.h')
-rw-r--r--src/H5Zprivate.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/H5Zprivate.h b/src/H5Zprivate.h
index d87f735..48620be 100644
--- a/src/H5Zprivate.h
+++ b/src/H5Zprivate.h
@@ -19,6 +19,10 @@
#ifndef _H5Zprivate_H
#define _H5Zprivate_H
+#include "H5private.h" /* Generic Functions */
+#include "H5Tprivate.h"
+#include "H5Eprivate.h"
+#include "H5Iprivate.h"
#include "H5Zpublic.h"
/* Structure to store information about each filter's parameters */
@@ -30,6 +34,41 @@ typedef struct {
unsigned *cd_values; /*client data values */
} H5Z_filter_info_t;
+
+/* Token types */
+typedef enum {
+ ERROR,
+ H5Z_INTEGER, /* this represents an integer type in the data transform expression */
+ H5Z_FLOAT, /* this represents a floating point type in the data transform expression */
+ SYMBOL,
+ PLUS,
+ MINUS,
+ MULT,
+ DIVIDE,
+ LPAREN,
+ RPAREN,
+ END
+} H5Z_token_type;
+
+typedef union {
+ char *sym_val;
+ long int_val;
+ double float_val;
+} H5Z_num_val;
+
+
+typedef struct H5Z_node {
+ struct H5Z_node *lchild;
+ struct H5Z_node *rchild;
+ H5Z_token_type type;
+ H5Z_num_val value;
+} H5Z_node;
+
+typedef struct {
+ char* xform_exp;
+ H5Z_node* parse_root;
+} H5Z_data_xform;
+
/* Special parameters for szip compression */
/* [These are aliases for the similar definitions in szlib.h, which we can't
* include directly due to the duplication of various symbols with the zlib.h
@@ -60,5 +99,13 @@ H5_DLL H5Z_filter_info_t *H5Z_filter_info(const struct H5O_pline_t *pline,
H5_DLL htri_t H5Z_all_filters_avail(const struct H5O_pline_t *pline);
H5_DLL herr_t H5Z_delete(struct H5O_pline_t *pline, H5Z_filter_t filter);
+/* Data Transform Functions */
+H5_DLL void H5Z_xform_destroy_parse_tree(H5Z_node *tree);
+H5_DLL void H5Z_xform_eval(H5Z_node *tree, void* array, hsize_t array_size, hid_t array_type);
+H5_DLL void* H5Z_xform_parse(const char *expression);
+H5_DLL hid_t H5Z_xform_find_type(H5T_t* type);
+H5_DLL void H5Z_xform_reduce_tree(H5Z_node* tree);
+H5_DLL void* H5Z_xform_copy_tree(H5Z_node* tree);
+
#endif