diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-04-03 03:29:38 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-04-03 03:29:38 (GMT) |
commit | a780cdd178f849afbc8cbb24e416eef733cbc9f2 (patch) | |
tree | c9e0162ab42567a4872a5c37444be0e08d4c1914 /src/H5Oprivate.h | |
parent | 2a77c19b2216f04a6f8c50995ca0bf09f69e63d0 (diff) | |
download | hdf5-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.h | 45 |
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); |