summaryrefslogtreecommitdiffstats
path: root/src/H5Opkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2005-11-15 02:55:39 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2005-11-15 02:55:39 (GMT)
commita1708eb023f2c8f8ac6c2c17bf1e598c8dff956e (patch)
tree34c87a3753b36c4c8d689d58bf456eaf261cd235 /src/H5Opkg.h
parentbea1e576c5ef5500678f7ce913d835341b625e8f (diff)
downloadhdf5-a1708eb023f2c8f8ac6c2c17bf1e598c8dff956e.zip
hdf5-a1708eb023f2c8f8ac6c2c17bf1e598c8dff956e.tar.gz
hdf5-a1708eb023f2c8f8ac6c2c17bf1e598c8dff956e.tar.bz2
[svn-r11712] Purpose:
New feature Description: Check in baseline for compact group revisions, which radically revises the source code for managing groups and object headers. WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! This initiates the "unstable" phase of the 1.7.x branch, leading up to the 1.8.0 release. Please test this code, but do _NOT_ keep files created with it - the format will change again before the release and you will not be able to read your old files!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! Solution: There's too many changes to really describe them all, but some of them include: - Stop abusing the H5G_entry_t structure and split it into two separate structures for non-symbol table node use within the library: H5O_loc_t for object locations in a file and H5G_name_t to store the path to an opened object. H5G_entry_t is now only used for storing symbol table entries on disk. - Retire H5G_namei() in favor of a more general mechanism for traversing group paths and issuing callbacks on objects located. This gets us out of the business of hacking H5G_namei() for new features, generally. - Revised H5O* routines to take a H5O_loc_t instead of H5G_entry_t - Lots more... Platforms tested: h5committested and maybe another dozen configurations.... :-)
Diffstat (limited to 'src/H5Opkg.h')
-rw-r--r--src/H5Opkg.h51
1 files changed, 44 insertions, 7 deletions
diff --git a/src/H5Opkg.h b/src/H5Opkg.h
index fdca31a..874ea91 100644
--- a/src/H5Opkg.h
+++ b/src/H5Opkg.h
@@ -23,6 +23,7 @@
#include "H5Oprivate.h" /* Object headers */
/* Other private headers needed by this file */
+#include "H5ACprivate.h" /* Metadata cache */
#include "H5SLprivate.h" /* Skip lists */
/*
@@ -62,7 +63,7 @@ typedef struct H5O_class_t {
int id; /*message type ID on disk */
const char *name; /*for debugging */
size_t native_size; /*size of native message */
- void *(*decode)(H5F_t*, hid_t, const uint8_t*, struct H5O_shared_t*);
+ void *(*decode)(H5F_t*, hid_t, const uint8_t*);
herr_t (*encode)(H5F_t*, uint8_t*, const void*);
void *(*copy)(const void*, void*, unsigned); /*copy native value */
size_t (*raw_size)(const H5F_t*, const void*);/*sizeof raw val */
@@ -73,7 +74,7 @@ typedef struct H5O_class_t {
herr_t (*get_share)(H5F_t*, const void*, struct H5O_shared_t*); /* Get shared information */
herr_t (*set_share)(H5F_t*, void*, const struct H5O_shared_t*); /* Set shared information */
void *(*copy_file)(H5F_t *, void *, H5F_t *, hid_t, H5SL_t *, void *); /*copy native value to file */
- herr_t (*post_copy_file)(H5F_t *, const void *, H5G_entry_t *, hid_t, H5SL_t *); /*"post copy" action when copying native value to file */
+ herr_t (*post_copy_file)(H5F_t *, const void *, H5O_loc_t *, void *, hbool_t *, hid_t, H5SL_t *); /*"post copy" action when copying native value to file */
herr_t (*debug)(H5F_t*, hid_t, const void*, FILE*, int, int);
} H5O_class_t;
@@ -107,6 +108,24 @@ typedef struct H5O_t {
H5O_chunk_t *chunk; /*array of chunks */
} H5O_t;
+/* H5O inherits cache-like properties from H5AC */
+H5_DLLVAR const H5AC_class_t H5AC_OHDR[1];
+
+/* ID to type mapping */
+H5_DLLVAR const H5O_class_t *const message_type_g[19];
+
+/* Declare external the free list for H5O_t's */
+H5FL_EXTERN(H5O_t);
+
+/* Declare external the free list for H5O_mesg_t sequences */
+H5FL_SEQ_EXTERN(H5O_mesg_t);
+
+/* Declare external the free list for H5O_chunk_t sequences */
+H5FL_SEQ_EXTERN(H5O_chunk_t);
+
+/* Declare external the free list for chunk_image blocks */
+H5FL_BLK_EXTERN(chunk_image);
+
/*
* Null Message. (0x0000)
*/
@@ -118,6 +137,11 @@ H5_DLLVAR const H5O_class_t H5O_NULL[1];
H5_DLLVAR const H5O_class_t H5O_SDSPACE[1];
/*
+ * Link Information Message. (0x0002)
+ */
+H5_DLLVAR const H5O_class_t H5O_LINFO[1];
+
+/*
* Datatype Message. (0x0003)
*/
H5_DLLVAR const H5O_class_t H5O_DTYPE[1];
@@ -137,6 +161,12 @@ H5_DLLVAR const H5O_class_t H5O_FILL[1];
H5_DLLVAR const H5O_class_t H5O_FILL_NEW[1];
/*
+ * Link Message. (0x0006)
+ *
+ */
+H5_DLLVAR const H5O_class_t H5O_LINK[1];
+
+/*
* External File List Message. (0x0007)
*/
H5_DLLVAR const H5O_class_t H5O_EFL[1];
@@ -154,6 +184,11 @@ H5_DLLVAR const H5O_class_t H5O_BOGUS[1];
#endif /* H5O_ENABLE_BOGUS */
/*
+ * Group Information Message. (0x000a)
+ */
+H5_DLLVAR const H5O_class_t H5O_GINFO[1];
+
+/*
* Filter pipeline message. (0x000b)
*/
H5_DLLVAR const H5O_class_t H5O_PLINE[1];
@@ -203,16 +238,18 @@ H5_DLLVAR const H5O_class_t H5O_STAB[1];
H5_DLLVAR const H5O_class_t H5O_MTIME_NEW[1];
/* Package-local function prototypes */
-H5_DLL void * H5O_read_real(const H5G_entry_t *ent, const H5O_class_t *type,
- int sequence, void *mesg, hid_t dxpl_id);
+H5_DLL void * H5O_read_real(const H5O_loc_t *loc, const H5O_class_t *type,
+ int sequence, void *mesg, hid_t dxpl_id);
+H5_DLL herr_t H5O_free_mesg(H5O_mesg_t *mesg);
H5_DLL void * H5O_free_real(const H5O_class_t *type, void *mesg);
+H5_DLL herr_t H5O_debug_real(H5F_t *f, hid_t dxpl_id, H5O_t *oh, haddr_t addr, FILE *stream, int indent, int fwidth);
/* Shared object operators */
H5_DLL void * H5O_shared_read(H5F_t *f, hid_t dxpl_id, H5O_shared_t *shared,
const H5O_class_t *type, void *mesg);
-/* Symbol table operators */
-H5_DLL void *H5O_stab_fast(const H5G_cache_t *cache, const struct H5O_class_t *type,
- void *_mesg);
+/* Useful metadata cache callbacks */
+H5_DLL herr_t H5O_dest(H5F_t *f, H5O_t *oh);
#endif /* _H5Opkg_H */
+