summaryrefslogtreecommitdiffstats
path: root/src/H5Zprivate.h
diff options
context:
space:
mode:
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