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/H5Oshared.c | |
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/H5Oshared.c')
-rw-r--r-- | src/H5Oshared.c | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/src/H5Oshared.c b/src/H5Oshared.c new file mode 100644 index 0000000..a62a562 --- /dev/null +++ b/src/H5Oshared.c @@ -0,0 +1,184 @@ +/* + * Copyright (C) 1998 NCSA + * All rights reserved. + * + * Programmer: Robb Matzke <matzke@llnl.gov> + * Wednesday, April 1, 1998 + * + * Purpose: Functions that operate on a shared message. The shared + * message doesn't ever actually appear in the object header as + * a normal message. Instead, if a message is shared, the + * H5O_FLAG_SHARED bit is set and the message body is that + * defined here for H5O_SHARED. The message ID is the ID of the + * pointed-to message and the pointed-to message is stored in + * the global heap. + */ +#include <H5private.h> +#include <H5Eprivate.h> +#include <H5MMprivate.h> +#include <H5Oprivate.h> + +static void *H5O_shared_decode (H5F_t*, const uint8*, H5HG_t *hobj); +static herr_t H5O_shared_encode (H5F_t*, uint8*, const void*); +static size_t H5O_shared_size (H5F_t*, const void*); +static herr_t H5O_shared_debug (H5F_t*, const void*, FILE*, intn, intn); + +/* This message derives from H5O */ +const H5O_class_t H5O_SHARED[1] = {{ + H5O_SHARED_ID, /*message id number */ + "shared", /*message name for debugging */ + sizeof(H5O_shared_t), /*native message size */ + H5O_shared_decode, /*decode method */ + H5O_shared_encode, /*encode method */ + NULL, /*no copy method */ + H5O_shared_size, /*size method */ + NULL, /*no reset method */ + NULL, /*no share method */ + H5O_shared_debug, /*debug method */ +}}; + +/* Interface initialization */ +#define PABLO_MASK H5O_shared_mask +static hbool_t interface_initialize_g = FALSE; +#define INTERFACE_INIT NULL + + +/*------------------------------------------------------------------------- + * Function: H5O_shared_decode + * + * Purpose: Decodes a shared object message and returns it. + * + * Return: Success: Ptr to a new shared object message. + * + * Failure: NULL + * + * Programmer: Robb Matzke + * Thursday, April 2, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void * +H5O_shared_decode (H5F_t *f, const uint8 *buf, H5HG_t *hobj) +{ + H5O_shared_t *mesg; + + FUNC_ENTER (H5O_shared_decode, NULL); + + /* Check args */ + assert (f); + assert (buf); + assert (!hobj || !H5HG_defined (hobj)); + + /* Decode */ + mesg = H5MM_xcalloc (1, sizeof *mesg); + H5F_addr_decode (f, &buf, &(mesg->addr)); + INT32DECODE (buf, mesg->idx); + + FUNC_LEAVE (mesg); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_shared_encode + * + * Purpose: Encodes message _MESG into buffer BUF. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * Thursday, April 2, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_shared_encode (H5F_t *f, uint8 *buf/*out*/, const void *_mesg) +{ + const H5O_shared_t *mesg = (const H5O_shared_t *)_mesg; + + FUNC_ENTER (H5O_shared_encode, FAIL); + + /* Check args */ + assert (f); + assert (buf); + assert (mesg); + + /* Encode */ + H5F_addr_encode (f, &buf, &(mesg->addr)); + INT32ENCODE (buf, mesg->idx); + + FUNC_LEAVE (SUCCEED); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_shared_size + * + * Purpose: Returns the length of a shared object message. + * + * Return: Success: Length + * + * Failure: 0 + * + * Programmer: Robb Matzke + * Thursday, April 2, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static size_t +H5O_shared_size (H5F_t *f, const void *_mesg) +{ + FUNC_ENTER (H5O_shared_size, 0); + FUNC_LEAVE (H5F_SIZEOF_ADDR(f)+4); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_shared_debug + * + * Purpose: Prints debugging info for the message + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * Thursday, April 2, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_shared_debug (H5F_t *f, const void *_mesg, FILE *stream, intn indent, + intn fwidth) +{ + const H5O_shared_t *mesg = (const H5O_shared_t *)_mesg; + + FUNC_ENTER (H5O_shared_debug, FAIL); + + /* Check args */ + assert (f); + assert (mesg); + assert (stream); + assert (indent>=0); + assert (fwidth>=0); + + fprintf (stream, "%*s%-*s ", indent, "", fwidth, + "Collection address:"); + H5F_addr_print (stream, &(mesg->addr)); + fprintf (stream, "\n"); + + fprintf (stream, "%*s%-*s %d\n", indent, "", fwidth, + "Object ID within collection:", + mesg->idx); + + FUNC_LEAVE (SUCCEED); +} |