summaryrefslogtreecommitdiffstats
path: root/src/H5Pprivate.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-01-21 20:01:02 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-01-21 20:01:02 (GMT)
commitf5cc0548b8dacfefee4878075f568b5f124e9dc3 (patch)
tree8dc8edc28b7cde4a01e4cb650d2483aa46c2ecdd /src/H5Pprivate.h
parentb7f919cccb89f991e3ddc625bba675c2ea483b15 (diff)
downloadhdf5-f5cc0548b8dacfefee4878075f568b5f124e9dc3.zip
hdf5-f5cc0548b8dacfefee4878075f568b5f124e9dc3.tar.gz
hdf5-f5cc0548b8dacfefee4878075f568b5f124e9dc3.tar.bz2
[svn-r161] Changes since 19980121
---------------------- ./MANIFEST ./src/H5Psimp.c [NEW] ./src/Makefile.in Added H5Psimp.c and populated it with some conversion functions. Eventually the parts of H5P.c that operate on simple data spaces will be migrated to H5Psimp.c and other files will be created for other types of data spaces. ./src/H5D.c The read pipeline, H5Dread(), has been updated to handle data space conversion although the actual simple data space conversion functions don't do anything yet. But we're getting really close! ./src/H5P.c ./src/H5Pprivate.h Added H5P_find() to locate data space conversion functions. Added typedefs for structs related to data space conversion.
Diffstat (limited to 'src/H5Pprivate.h')
-rw-r--r--src/H5Pprivate.h93
1 files changed, 70 insertions, 23 deletions
diff --git a/src/H5Pprivate.h b/src/H5Pprivate.h
index 3a2f804..e5dca7e 100644
--- a/src/H5Pprivate.h
+++ b/src/H5Pprivate.h
@@ -10,51 +10,98 @@
* *
****************************************************************************/
-/* $Id$ */
-
/*
* This file contains private information about the H5P module
*/
-
#ifndef _H5Pprivate_H
#define _H5Pprivate_H
+
#include <H5Ppublic.h>
/* Private headers needed by this file */
#include <H5private.h>
-#include <H5Gprivate.h> /*for H5G_entry_t */
+#include <H5Gprivate.h> /*for H5G_entry_t */
+#include <H5Oprivate.h>
+
+#define H5P_RESERVED_ATOMS 2
/* Flags to indicate special dataspace features are active */
#define H5P_VALID_MAX 0x01
#define H5P_VALID_PERM 0x02
typedef struct H5P_simple_t {
- intn rank; /*number of dimensions */
- intn dim_flags; /*dimension flags */
- size_t *size; /*dimension sizes */
- size_t *max; /*maximum dimension sizes */
- intn *perm; /*dimension permutations */
+ intn rank; /*number of dimensions */
+ intn dim_flags; /*dimension flags */
+ size_t *size; /*dimension sizes */
+ size_t *max; /*maximum dimension sizes */
+ intn *perm; /*dimension permutations */
} H5P_simple_t;
typedef struct {
- H5P_class_t type; /*type of dimensionality object */
+ H5P_class_t type; /*type of dimensionality object */
union {
- H5P_simple_t simple; /*simple dimensionality information */
+ H5P_simple_t simple; /*simple dimensionality information */
} u;
} H5P_t;
-#define H5P_RESERVED_ATOMS 2
+/*
+ * This structure contains information about how the elements of a data space
+ * are numbered.
+ */
+typedef struct H5P_number_t {
+ int _place_holder; /*remove this field!*/
+} H5P_number_t;
+
+/*
+ * Callbacks for data space conversion.
+ */
+typedef struct H5P_tconv_t {
+ /* Initialize element numbering information */
+ size_t (*init)(const struct H5O_layout_t *layout, const H5P_t *mem_space,
+ const H5P_t *file_space, H5P_number_t *numbering/*out*/);
+
+ /* Gather elements from disk to type conversion buffer */
+ size_t (*fgath)(H5F_t *f, const struct H5O_layout_t *layout,
+ size_t elmt_size, const H5P_t *file_space,
+ const H5P_number_t *numbering, intn start, intn nelmts,
+ void *tconv_buf/*out*/);
+
+ /* Scatter elements from type conversion buffer to application buffer */
+ herr_t (*mscat)(const void *tconv_buf, size_t elmt_size,
+ const H5P_t *mem_space, const H5P_number_t *numbering,
+ intn start, intn nelmts, void *buf/*out*/);
+
+ /* Gather elements from app buffer to type conversion buffer */
+ size_t (*mgath)(void /*fill out later*/);
+
+ /* Scatter elements from type conversion buffer to disk */
+ herr_t (*fscat)(void /*fill out later*/);
+} H5P_conv_t;
+
+H5P_t *H5P_copy (const H5P_t *src);
+herr_t H5P_close (H5P_t *ds);
+size_t H5P_get_npoints (const H5P_t *ds);
+intn H5P_get_ndims (const H5P_t *ds);
+intn H5P_get_dims (const H5P_t *ds, size_t dims[]/*out*/);
+herr_t H5P_modify (H5F_t *f, H5G_entry_t *ent, const H5P_t *space);
+H5P_t *H5P_read (H5F_t *f, H5G_entry_t *ent);
+intn H5P_cmp (const H5P_t *ds1, const H5P_t *ds2);
+hbool_t H5P_is_simple (const H5P_t *sdim);
+uintn H5P_nelem (const H5P_t *space);
+const H5P_conv_t *H5P_find (const H5P_t *src, const H5P_t *dst);
-H5P_t *H5P_copy(const H5P_t *src);
-herr_t H5P_close(H5P_t *ds);
-size_t H5P_get_npoints(const H5P_t *ds);
-intn H5P_get_ndims(const H5P_t *ds);
-intn H5P_get_dims(const H5P_t *ds, size_t dims[] /*out */ );
-herr_t H5P_modify(H5F_t *f, H5G_entry_t *ent, const H5P_t *space);
-H5P_t *H5P_read(H5F_t *f, H5G_entry_t *ent);
-intn H5P_cmp(const H5P_t *ds1, const H5P_t *ds2);
-
-hbool_t H5P_is_simple(const H5P_t *sdim);
-uintn H5P_nelem(const H5P_t *space);
+/* Conversion functions for simple data spaces */
+size_t H5P_simp_init (const struct H5O_layout_t *layout,
+ const H5P_t *mem_space, const H5P_t *file_space,
+ H5P_number_t *numbering/*out*/);
+size_t H5P_simp_fgath (H5F_t *f, const struct H5O_layout_t *layout,
+ size_t elmt_size, const H5P_t *file_space,
+ const H5P_number_t *numbering, intn start, intn nelmts,
+ void *tconv_buf/*out*/);
+herr_t H5P_simp_mscat (const void *tconv_buf, size_t elmt_size,
+ const H5P_t *mem_space, const H5P_number_t *numbering,
+ intn start, intn nelmts, void *buf/*out*/);
+size_t H5P_simp_mgath (void);
+herr_t H5P_simp_fscat (void);
#endif