summaryrefslogtreecommitdiffstats
path: root/src/H5Oprivate.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-04-03 03:29:38 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-04-03 03:29:38 (GMT)
commita780cdd178f849afbc8cbb24e416eef733cbc9f2 (patch)
treec9e0162ab42567a4872a5c37444be0e08d4c1914 /src/H5Oprivate.h
parent2a77c19b2216f04a6f8c50995ca0bf09f69e63d0 (diff)
downloadhdf5-a780cdd178f849afbc8cbb24e416eef733cbc9f2.zip
hdf5-a780cdd178f849afbc8cbb24e416eef733cbc9f2.tar.gz
hdf5-a780cdd178f849afbc8cbb24e416eef733cbc9f2.tar.bz2
[svn-r335] Changes since 19980330
---------------------- ./MANIFEST ./src/Makefile.in ./test/Makefile.in Added new files. ./config/linux ./src/H5HL.c ./src/H5HLprivate.h ./src/H5MF.c ./src/H5MFprivate.h Added `-DH5HL_DEBUG -DH5MF_DEBUG' to the debug list. ./html/H5.format.html Updated shared object message information. ./src/H5D.c Datasets can now share data types. ./src/H5F.c Updated a comment that referred to H5ACC_WRITE. ./src/H5HG.c ./src/H5HGprivate.h Moved a few things around. Made debugging better so you can now give a collection address to ./src/debug and it shows some useful stuff. ./src/H5O.c ./src/H5Ocont.c ./src/H5Odtype.c ./src/H5Oefl.c ./src/H5Olayout.c ./src/H5Oname.c ./src/H5Onull.c ./src/H5Oprivate.h ./src/H5Osdspace.c ./src/H5Oshared.c [NEW] ./src/H5Ostab.c Supports shared messages. ./src/H5T.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h The H5Tshare() function allows the user to give the library hints about how a data type will be used. ./test/shtype.c Tests the H5Tshare() function. ./test/gheap.c Tests the global heap. ./configure.in ./config/BlankForm [NEW] ./config/alpha-dec ./config/freebsd2.2.1 ./config/hpux10.20 ./config/irix6.2 ./config/irix64 ./config/linux ./config/powerpc-ibm-aix4.2.1.0 ./config/rs6000-ibm-aix4.1.4.0 ./config/solaris2.5 Cleaned up lots of configuration stuff and made the site configuration files lots easier and more uniform. To make a new file grab the BlankForm and modify it. By default, debugging is turned on for most packages. Within a package one can use `#ifdef H5AC_DEBUG' to wrap debugging code. Other options are: --enable-debug --enable-debug=yes The default, most but not all packages. --disable-debug --enable-debug=no --enable-debug=none The symbol NDEBUG is defined and none of the package debug symbols. --enable-debug=all Debugging is turned on for all packages. This might produce lots of output. --enable-debug=g,d Debugging is turned on for H5G and H5D. A compile mode is also now supported --enable-production --enable-production=yes The library is compiled with optimizations turned on. The compiler flags are augmented by adding PROD_CFLAGS and PROD_CPPFLAGS which are defined in the site config file. --disable-production --enable-production=no The default. The library is compiled for development by including DEBUG_CFLAGS and DEBUG_CPPFLAGS defined in the site config file. This is usually just `-g'. --enable-production=profile --enable-production=pg Builds a library for profiling by including the flags from PROFILE_CFLAGS and PROFILE_CPPFLAGS defined in the site config file. This is usullay just `-pg' but it could include optimization flags as well depending on the type of profile one wants. In summary, configure by saying `./configure' and you'll get a development version of the library. Configure by saying `./configure --enable-production --disable-debug' and you'll get a production version with no debugging code.
Diffstat (limited to 'src/H5Oprivate.h')
-rw-r--r--src/H5Oprivate.h45
1 files changed, 30 insertions, 15 deletions
diff --git a/src/H5Oprivate.h b/src/H5Oprivate.h
index b20e6ed..90317fc 100644
--- a/src/H5Oprivate.h
+++ b/src/H5Oprivate.h
@@ -19,10 +19,11 @@
#include <H5Opublic.h>
-/* Private headers neede by this file */
+/* Private headers needed by this file */
#include <H5private.h>
#include <H5Fprivate.h>
#include <H5Gprivate.h>
+#include <H5HGprivate.h>
#include <H5Tprivate.h>
#include <H5Sprivate.h>
@@ -40,9 +41,10 @@
#define H5O_NEW_MESG (-1) /*new message */
#define H5O_ALL (-1) /*delete all messages of type */
-/* Flags which are part of the message id */
-#define H5O_FLAG_CONSTANT 0x8000
-#define H5O_FLAG_BITS 0x8000
+/* Flags which are part of a message */
+#define H5O_FLAG_CONSTANT 0x01
+#define H5O_FLAG_SHARED 0x02
+#define H5O_FLAG_BITS 0x03
#define H5O_VERSION 1
/*
@@ -64,21 +66,22 @@
4) /*reserved */
typedef struct H5O_class_t {
- intn id; /*message type ID on disk*/
- const char *name; /*message name for debugging*/
- size_t native_size; /*size of native message*/
- void *(*decode) (H5F_t *, size_t, const uint8 *);
- herr_t (*encode) (H5F_t *, size_t, uint8 *, const void *);
- void *(*copy) (const void *, void *); /*copy native value */
- size_t (*raw_size) (H5F_t *, const void *); /*sizeof raw val */
- herr_t (*reset) (void *); /*free nested data structures*/
- herr_t (*debug) (H5F_t *, const void *, FILE *, intn, intn);
+ intn id; /*message type ID on disk */
+ const char *name; /*for debugging */
+ size_t native_size; /*size of native message */
+ void *(*decode)(H5F_t*, const uint8*, H5HG_t*);
+ herr_t (*encode)(H5F_t*, uint8*, const void*);
+ void *(*copy)(const void*, void*); /*copy native value */
+ size_t (*raw_size)(H5F_t*, const void*);/*sizeof raw val */
+ herr_t (*reset)(void *); /*free nested data structs */
+ herr_t (*share)(H5F_t*, const void*, H5HG_t*);
+ herr_t (*debug)(H5F_t*, const void*, FILE*, intn, intn);
} H5O_class_t;
typedef struct H5O_mesg_t {
const H5O_class_t *type; /*type of message */
hbool_t dirty; /*raw out of date wrt native */
- hbool_t constant; /*is message constant? */
+ uint8 flags; /*message flags */
void *native; /*native format message */
uint8 *raw; /*ptr to raw data */
size_t raw_size; /*size with alignment */
@@ -169,10 +172,20 @@ typedef struct H5O_layout_t {
extern const H5O_class_t H5O_NAME[1];
typedef struct H5O_name_t {
- const char *s; /*ptr to malloc'd memory */
+ char *s; /*ptr to malloc'd memory */
} H5O_name_t;
/*
+ * Shared object message. This message ID never really appears in an object
+ * header. Instead, bit 2 of the `Flags' field will be set and the ID field
+ * will be the ID of the pointed-to message.
+ */
+#define H5O_SHARED_ID 0x000f
+extern const H5O_class_t H5O_SHARED[1];
+
+typedef H5HG_t H5O_shared_t;
+
+/*
* Object header continuation message.
*/
#define H5O_CONT_ID 0x0010
@@ -211,6 +224,8 @@ intn H5O_modify (H5G_entry_t *ent, const H5O_class_t *type, intn overwrite,
uintn flags, const void *mesg);
herr_t H5O_remove (H5G_entry_t *ent, const H5O_class_t *type, intn sequence);
herr_t H5O_reset (const H5O_class_t *type, void *native);
+herr_t H5O_share (H5F_t *f, const H5O_class_t *type, const void *mesg,
+ H5HG_t *hobj/*out*/);
herr_t H5O_debug (H5F_t *f, const haddr_t *addr, FILE * stream, intn indent,
intn fwidth);