From e163a5f6ab2960bea08ef96347e597e07b8927e7 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Tue, 27 Jan 2009 18:16:13 -0500 Subject: [svn-r16368] Description: Bring r16367 back from trunk: Refactor internal address encode/decode routines slightly, to allow for more flexible use. Tested on: Mac OS X/32 (amazon) FreeBSD/32 (duty) (too minor to require h5committest) --- src/H5F.c | 156 +++++++++++++++++++++++++++++++++++++++++-------------- src/H5Fprivate.h | 5 +- 2 files changed, 121 insertions(+), 40 deletions(-) diff --git a/src/H5F.c b/src/H5F.c index 50e26d8..14efa63 100644 --- a/src/H5F.c +++ b/src/H5F.c @@ -2326,7 +2326,7 @@ H5F_decr_nopen_objs(H5F_t *f) /*------------------------------------------------------------------------- - * Function: H5F_addr_encode + * Function: H5F_addr_encode_len * * Purpose: Encodes an address into the buffer pointed to by *PP and * then increments the pointer to the first byte after the @@ -2337,35 +2337,65 @@ H5F_decr_nopen_objs(H5F_t *f) * Programmer: Robb Matzke * Friday, November 7, 1997 * - * Modifications: - * Robb Matzke, 1999-07-28 - * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ void -H5F_addr_encode(const H5F_t *f, uint8_t **pp/*in,out*/, haddr_t addr) +H5F_addr_encode_len(size_t addr_len, uint8_t **pp/*in,out*/, haddr_t addr) { - unsigned i; + unsigned u; /* Local index variable */ + + /* Use FUNC_ENTER_NOAPI_NOINIT_NOFUNC here to avoid performance issues */ + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5F_addr_encode_len) - assert(f); - assert(pp && *pp); + HDassert(addr_len); + HDassert(pp && *pp); - if (H5F_addr_defined(addr)) { - for (i=0; i>= 8; - } - assert("overflow" && 0 == addr); - - } else { - for (i=0; i