diff options
author | Robb Matzke <matzke@llnl.gov> | 1997-08-07 19:23:00 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1997-08-07 19:23:00 (GMT) |
commit | a905a3a1e343d4507049c30512842957e2f6307c (patch) | |
tree | aa01b7418431c48634458a028c2fe6fd354f1684 /src/H5Ocont.c | |
parent | dd0fbd5b0060ebc7703da8eaab747f7a3025be2a (diff) | |
download | hdf5-a905a3a1e343d4507049c30512842957e2f6307c.zip hdf5-a905a3a1e343d4507049c30512842957e2f6307c.tar.gz hdf5-a905a3a1e343d4507049c30512842957e2f6307c.tar.bz2 |
[svn-r15] ./src/H5AC.c
./src/H5ACprivate.h
./src/H5ACproto.h
./src/H5Bproto.h
./src/H5Gproto.h
./src/H5Hproto.h
./src/H5MFprivate.h
./src/H5MFproto.h
./src/H5MM.c
./src/H5MMprivate.h
./src/H5MMproto.h
Changed my e-mail address.
./src/H5O.c NEW
./src/H5Onull.c NEW
./src/H5Ocont. NEW
./src/H5Ostab.c NEW
New functions for dealing with object headers. The H5O.c is
the generic stuff, and each particular message has a source
file for the specific stuff.
Use ./src/H5Ostab.c as a model for implementing other messages.
./src/Makefile
./src/test/Makefile
Added new files
./src/debug.c
Added debugging calls for object headers.
./src/H5B.c
./src/H5Bprivate.h
./src/H5Gnode.c
./src/H5MF.c
Changed my e-mail address.
Improved error handling.
./src/H5Eprivate.h
./src/H5Eproto.h
Added more error symbols
./src/H5F.c
Changed my e-mail address.
Used macros for sizeof offsets and lengths.
Added the interface initialization function to
H5F_block_read() and H5F_block_write().
Updated H5F_debug()
./src/H5Fprivate.h
Got rid of H5F_symbol_table_size(). Use H5G_SIZEOF_ENTRY()
instead.
Reformatted H5F_decode_offset() for readability.
./src/H5G.c
Changed my e-mail address.
Improved error handling.
Replaced not_implemented_yet__*() with real functions from
H5O.
./src/H5Gprivate.h
Changed `symtab' to `stab' to be consistent with other stuff.
./src/H5H.c
./src/H5Hprivate.h
Changed my e-mail address.
Improved error handling.
Added an extra argument to H5H_new() to indicate whether you
want a global heap or a local heap.
./src/hdf5gen.h
Added NELMTS()
Fixed FUNC_ENTER()
Rewrote FUNC_LEAVE() in terms of HRETURN().
./src/hdf5meta.h
Added `const' to the decode macros.
./src/hdf5pabl.h
Added PABLO_SAVE()
./test/testhdf5.c
./test/testhdf5.h
Added calls for object header testing.
./test/theap.c
Turned off some output.
Diffstat (limited to 'src/H5Ocont.c')
-rw-r--r-- | src/H5Ocont.c | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/src/H5Ocont.c b/src/H5Ocont.c new file mode 100644 index 0000000..068a768 --- /dev/null +++ b/src/H5Ocont.c @@ -0,0 +1,164 @@ +/*------------------------------------------------------------------------- + * Copyright (C) 1997 National Center for Supercomputing Applications. + * All rights reserved. + * + *------------------------------------------------------------------------- + * + * Created: H5Ocont.c + * Aug 6 1997 + * Robb Matzke <matzke@llnl.gov> + * + * Purpose: The object header continuation message. This + * message is only generated and read from within + * the H5O package. Therefore, do not change + * any definitions in this file! + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +#include <assert.h> +#include "hdf5.h" +#include "H5private.h" +#include "H5MMprivate.h" +#include "H5Oprivate.h" + +/* PRIVATE PROTOTYPES */ +static void *H5O_cont_decode (hdf5_file_t *f, const uint8 *p); +static herr_t H5O_cont_encode (hdf5_file_t *f, size_t size, uint8 *p, + const void *_mesg); +static herr_t H5O_cont_debug (hdf5_file_t *f, const void *_mesg, FILE *stream, + intn indent, intn fwidth); + +/* This message derives from H5O */ +const H5O_class_t H5O_CONT[1] = {{ + H5O_CONT_ID, /*message id number */ + "hdr continuation", /*message name for debugging */ + H5O_cont_decode, /*decode message */ + H5O_cont_encode, /*encode message */ + NULL, /*no fast method */ + NULL, /*no cache method */ + NULL, /*no copy method */ + NULL, /*no size method */ + NULL, /*default free method */ + H5O_cont_debug, /*debugging */ +}}; + +/* Is the interface initialized? */ +static intn interface_initialize_g = FALSE; + + +/*------------------------------------------------------------------------- + * Function: H5O_cont_decode + * + * Purpose: Decode the raw header continuation message. + * + * Return: Success: Ptr to the new native message + * + * Failure: NULL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Aug 6 1997 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void * +H5O_cont_decode (hdf5_file_t *f, const uint8 *p) +{ + H5O_cont_t *cont = NULL; + + FUNC_ENTER (H5O_cont_decode, NULL, NULL); + + cont = H5MM_xcalloc (1, sizeof(H5O_cont_t)); + H5F_decode_offset (f, p, cont->addr); + H5F_decode_length (f, p, cont->size); + + FUNC_LEAVE ((void*)cont); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_cont_encode + * + * Purpose: Encodes a continuation message. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Aug 7 1997 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_cont_encode (hdf5_file_t *f, size_t size, uint8 *p, const void *_mesg) +{ + const H5O_cont_t *cont = (const H5O_cont_t *)_mesg; + + FUNC_ENTER (H5O_cont_encode, NULL, FAIL); + + /* check args */ + assert (f); + assert (size == H5F_SIZEOF_OFFSET(f) + H5F_SIZEOF_SIZE(f)); + assert (p); + assert (cont); + + /* encode */ + H5F_encode_offset (f, p, cont->addr); + H5F_encode_length (f, p, cont->size); + + FUNC_LEAVE (SUCCEED); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_cont_debug + * + * Purpose: Prints debugging info. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * matzke@llnl.gov + * Aug 6 1997 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_cont_debug (hdf5_file_t *f, const void *_mesg, FILE *stream, + intn indent, intn fwidth) +{ + const H5O_cont_t *cont = (const H5O_cont_t *)_mesg; + + FUNC_ENTER (H5O_cont_debug, NULL, FAIL); + + /* check args */ + assert (f); + assert (cont); + assert (stream); + assert (indent>=0); + assert (fwidth>=0); + + fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Continuation address:", + (unsigned long)(cont->addr)); + fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Continuation size in bytes:", + (unsigned long)(cont->size)); + fprintf (stream, "%*s%-*s %d\n", indent, "", fwidth, + "Points to chunk number:", + (int)(cont->chunkno)); + + FUNC_LEAVE (SUCCEED); +} |