summaryrefslogtreecommitdiffstats
path: root/src/H5Ocont.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1997-08-12 22:44:46 (GMT)
committerRobb Matzke <matzke@llnl.gov>1997-08-12 22:44:46 (GMT)
commitfb947c34b142578774d5bb657c0b3e2a9b4781c7 (patch)
treec695cac8789bbe5fc92a5324e3027856bf3858bc /src/H5Ocont.c
parent326981f421b993815657daecc8b37bd732513d82 (diff)
downloadhdf5-fb947c34b142578774d5bb657c0b3e2a9b4781c7.zip
hdf5-fb947c34b142578774d5bb657c0b3e2a9b4781c7.tar.gz
hdf5-fb947c34b142578774d5bb657c0b3e2a9b4781c7.tar.bz2
[svn-r25] ./src/H5AC.c
We sort the cache before a complete flush because it might be more efficient to write things back to disk in order of increasing address. If you want the old way then undef the SORT_BY_ADDR constant at the top of H5AC.c I haven't determined which systems and I/O libraries this helps or hurts. (This is currently off because of a bug I need to track down that causes qsort() to run for a really long time). ./src/H5B.c Fixed a couple more bugs. ./src/H5Eprivate.h ./src/H5Eproto.h Added major H5E_DIRECTORY and minor H5E_EXISTS, H5E_COMPLEN. ./src/H5G.c Added directory-aware functions. The heap and B-tree are created when a directory is created instead of when the first symbol is added. This simplifies symbol table entry caching for the directory since the cached value never changes now. ./src/H5Gnode.c ./src/H5Gprivate.h Fine tuned the B-tree K values for symbol tables assuming an average number of symbols is about 100 per directory. The tuning minimizes storage space. Fixed a return value in H5G_node_cmp(). ./src/H5H.c ./src/H5Hprivate.h Moved some macros the the header file. ./src/H5O.c ./src/H5Ocont.c ./src/H5Onull.c ./src/H5Ostab.c Changed the arguments for the decode method for messages. The second argument is the raw message size. Added a class variable for native message size. Added H5O_reset() to free memory used internally by a message. ./src/H5Oname.c NEW ./src/H5Oprivate.h ./src/Makefile The object name message. ./src/hdf5port.h Added defn for HDstrdup()
Diffstat (limited to 'src/H5Ocont.c')
-rw-r--r--src/H5Ocont.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/H5Ocont.c b/src/H5Ocont.c
index 7b184cb..045489c 100644
--- a/src/H5Ocont.c
+++ b/src/H5Ocont.c
@@ -26,7 +26,7 @@
#define PABLO_MASK H5O_cont_mask
/* PRIVATE PROTOTYPES */
-static void *H5O_cont_decode (hdf5_file_t *f, const uint8 *p);
+static void *H5O_cont_decode (hdf5_file_t *f, size_t raw_size, 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,
@@ -36,13 +36,14 @@ static herr_t H5O_cont_debug (hdf5_file_t *f, const void *_mesg, FILE *stream,
const H5O_class_t H5O_CONT[1] = {{
H5O_CONT_ID, /*message id number */
"hdr continuation", /*message name for debugging */
+ sizeof (H5O_cont_t), /*native message size */
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 */
+ NULL, /*default reset method */
H5O_cont_debug, /*debugging */
}};
@@ -68,12 +69,18 @@ static intn interface_initialize_g = FALSE;
*-------------------------------------------------------------------------
*/
static void *
-H5O_cont_decode (hdf5_file_t *f, const uint8 *p)
+H5O_cont_decode (hdf5_file_t *f, size_t raw_size, const uint8 *p)
{
H5O_cont_t *cont = NULL;
FUNC_ENTER (H5O_cont_decode, NULL, NULL);
+ /* check args */
+ assert (f);
+ assert (raw_size == H5F_SIZEOF_OFFSET(f) + H5F_SIZEOF_SIZE(f));
+ assert (p);
+
+ /* decode */
cont = H5MM_xcalloc (1, sizeof(H5O_cont_t));
H5F_decode_offset (f, p, cont->addr);
H5F_decode_length (f, p, cont->size);