From b2f85c54f3b95c76457242fa095b0375b86a9211 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Sat, 27 Nov 2004 11:07:44 -0500 Subject: [svn-r9582] Purpose: Add new internal data structure Description: Add an implementation of skip lists to the library (see comment in src/H5SL.c for references to the papers describing them) as a potential replacement for our current threaded, balanced binary tree container. Skip lists are much simpler to implement and should be faster to use. Also, added new error codes to release branch, so bump the minor version number to indicate that the library is no longer perfectly compatible with the 1.6.3 release. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Solaris 2.7 (arabica) Too minor to require further testing (the skip lists aren't actually used by any library code yet) --- MANIFEST | 3 +++ README.txt | 2 +- c++/configure | 18 +++++++++--------- c++/configure.in | 2 +- configure | 18 +++++++++--------- configure.in | 2 +- fortran/configure | 18 +++++++++--------- fortran/configure.in | 2 +- release_docs/RELEASE.txt | 2 +- src/H5E.c | 28 ++++++++++++++++++---------- src/H5Epublic.h | 24 ++++++++++++++++-------- src/H5HP.c | 23 ++++++++++++----------- src/H5SL.c | 5 +++++ src/H5public.h | 6 +++--- src/Makefile.in | 6 ++++-- test/Makefile.in | 9 +++++---- test/testhdf5.c | 1 + test/testhdf5.h | 1 + 18 files changed, 100 insertions(+), 70 deletions(-) diff --git a/MANIFEST b/MANIFEST index d00fd4b..f127c3c 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1216,6 +1216,8 @@ ./src/H5Spublic.h ./src/H5Sselect.c ./src/H5Stest.c +./src/H5SL.c +./src/H5SLprivate.h ./src/H5ST.c ./src/H5STprivate.h ./src/H5T.c @@ -1339,6 +1341,7 @@ ./test/trefer.c ./test/trefstr.c ./test/tselect.c +./test/tskiplist.c ./test/ttbbt.c ./test/ttst.c ./test/ttsafe.c diff --git a/README.txt b/README.txt index c5d16eb..43a751e 100644 --- a/README.txt +++ b/README.txt @@ -1,4 +1,4 @@ -HDF5 version 1.6.3-post2 currently under development +HDF5 version 1.6.4-pre1 currently under development Please refer to the release_docs/INSTALL file for installation instructions. ------------------------------------------------------------------------------ diff --git a/c++/configure b/c++/configure index 819ef9d..80e0693 100755 --- a/c++/configure +++ b/c++/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in Id: configure.in. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.53 for HDF5 C++ 1.6.3-post2. +# Generated by GNU Autoconf 2.53 for HDF5 C++ 1.6.4-pre1. # # Report bugs to . # @@ -416,8 +416,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='HDF5 C++' PACKAGE_TARNAME='hdf5-c--' -PACKAGE_VERSION='1.6.3-post2' -PACKAGE_STRING='HDF5 C++ 1.6.3-post2' +PACKAGE_VERSION='1.6.4-pre1' +PACKAGE_STRING='HDF5 C++ 1.6.4-pre1' PACKAGE_BUGREPORT='hdfhelp@ncsa.uiuc.edu' ac_unique_file="src/H5Library.cpp" @@ -934,7 +934,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures HDF5 C++ 1.6.3-post2 to adapt to many kinds of systems. +\`configure' configures HDF5 C++ 1.6.4-pre1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -995,7 +995,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HDF5 C++ 1.6.3-post2:";; + short | recursive ) echo "Configuration of HDF5 C++ 1.6.4-pre1:";; esac cat <<\_ACEOF @@ -1101,7 +1101,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -HDF5 C++ configure 1.6.3-post2 +HDF5 C++ configure 1.6.4-pre1 generated by GNU Autoconf 2.53 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @@ -1116,7 +1116,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HDF5 C++ $as_me 1.6.3-post2, which was +It was created by HDF5 C++ $as_me 1.6.4-pre1, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ @@ -10017,7 +10017,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by HDF5 C++ $as_me 1.6.3-post2, which was +This file was extended by HDF5 C++ $as_me 1.6.4-pre1, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10071,7 +10071,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -HDF5 C++ config.status 1.6.3-post2 +HDF5 C++ config.status 1.6.4-pre1 configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/c++/configure.in b/c++/configure.in index f60021c..fe50126 100644 --- a/c++/configure.in +++ b/c++/configure.in @@ -27,7 +27,7 @@ dnl dnl NOTE: Don't forget to change the version number here when we do a dnl release!!! dnl -AC_INIT([HDF5 C++], [1.6.3-post2], [hdfhelp@ncsa.uiuc.edu]) +AC_INIT([HDF5 C++], [1.6.4-pre1], [hdfhelp@ncsa.uiuc.edu]) AC_CONFIG_SRCDIR([src/H5Library.cpp]) AC_CONFIG_AUX_DIR([../bin]) diff --git a/configure b/configure index ca10695..d7cae9d 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in Id: configure.in. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.53 for HDF5 1.6.3-post2. +# Generated by GNU Autoconf 2.53 for HDF5 1.6.4-pre1. # # Report bugs to . # @@ -416,8 +416,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='HDF5' PACKAGE_TARNAME='hdf5' -PACKAGE_VERSION='1.6.3-post2' -PACKAGE_STRING='HDF5 1.6.3-post2' +PACKAGE_VERSION='1.6.4-pre1' +PACKAGE_STRING='HDF5 1.6.4-pre1' PACKAGE_BUGREPORT='hdfhelp@ncsa.uiuc.edu' ac_unique_file="src/H5.c" @@ -924,7 +924,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures HDF5 1.6.3-post2 to adapt to many kinds of systems. +\`configure' configures HDF5 1.6.4-pre1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -985,7 +985,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HDF5 1.6.3-post2:";; + short | recursive ) echo "Configuration of HDF5 1.6.4-pre1:";; esac cat <<\_ACEOF @@ -1130,7 +1130,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -HDF5 configure 1.6.3-post2 +HDF5 configure 1.6.4-pre1 generated by GNU Autoconf 2.53 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @@ -1145,7 +1145,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HDF5 $as_me 1.6.3-post2, which was +It was created by HDF5 $as_me 1.6.4-pre1, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ @@ -32540,7 +32540,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by HDF5 $as_me 1.6.3-post2, which was +This file was extended by HDF5 $as_me 1.6.4-pre1, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -32602,7 +32602,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -HDF5 config.status 1.6.3-post2 +HDF5 config.status 1.6.4-pre1 configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.in b/configure.in index f8dbbcd..dde2851 100644 --- a/configure.in +++ b/configure.in @@ -24,7 +24,7 @@ dnl dnl NOTE: Don't forget to change the version number here when we do a dnl release!!! dnl -AC_INIT([HDF5], [1.6.3-post2], [hdfhelp@ncsa.uiuc.edu]) +AC_INIT([HDF5], [1.6.4-pre1], [hdfhelp@ncsa.uiuc.edu]) AC_CONFIG_SRCDIR([src/H5.c]) AC_CONFIG_HEADER([src/H5config.h]) diff --git a/fortran/configure b/fortran/configure index e813aba..2e94fb5 100755 --- a/fortran/configure +++ b/fortran/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in Id: configure.in. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.53 for HDF5 Fortran 1.6.3-post2. +# Generated by GNU Autoconf 2.53 for HDF5 Fortran 1.6.4-pre1. # # Report bugs to . # @@ -416,8 +416,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='HDF5 Fortran' PACKAGE_TARNAME='hdf5-fortran' -PACKAGE_VERSION='1.6.3-post2' -PACKAGE_STRING='HDF5 Fortran 1.6.3-post2' +PACKAGE_VERSION='1.6.4-pre1' +PACKAGE_STRING='HDF5 Fortran 1.6.4-pre1' PACKAGE_BUGREPORT='hdfhelp@ncsa.uiuc.edu' ac_unique_file="src/HDF5.f90" @@ -922,7 +922,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures HDF5 Fortran 1.6.3-post2 to adapt to many kinds of systems. +\`configure' configures HDF5 Fortran 1.6.4-pre1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -983,7 +983,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HDF5 Fortran 1.6.3-post2:";; + short | recursive ) echo "Configuration of HDF5 Fortran 1.6.4-pre1:";; esac cat <<\_ACEOF @@ -1093,7 +1093,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -HDF5 Fortran configure 1.6.3-post2 +HDF5 Fortran configure 1.6.4-pre1 generated by GNU Autoconf 2.53 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @@ -1108,7 +1108,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HDF5 Fortran $as_me 1.6.3-post2, which was +It was created by HDF5 Fortran $as_me 1.6.4-pre1, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ @@ -11084,7 +11084,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by HDF5 Fortran $as_me 1.6.3-post2, which was +This file was extended by HDF5 Fortran $as_me 1.6.4-pre1, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -11146,7 +11146,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -HDF5 Fortran config.status 1.6.3-post2 +HDF5 Fortran config.status 1.6.4-pre1 configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/fortran/configure.in b/fortran/configure.in index 63b5b5f..9318a07 100644 --- a/fortran/configure.in +++ b/fortran/configure.in @@ -24,7 +24,7 @@ dnl dnl NOTE: Don't forget to change the version number here when we do a dnl release!!! dnl -AC_INIT([HDF5 Fortran], [1.6.3-post2], [hdfhelp@ncsa.uiuc.edu]) +AC_INIT([HDF5 Fortran], [1.6.4-pre1], [hdfhelp@ncsa.uiuc.edu]) AC_CONFIG_SRCDIR([src/HDF5.f90]) AC_CONFIG_HEADER([src/H5config_fortran.h]) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index bebb016..4676f79 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -1,4 +1,4 @@ -HDF5 version 1.6.3-post2 currently under development +HDF5 version 1.6.4-pre1 currently under development ================================================================================ diff --git a/src/H5E.c b/src/H5E.c index 16f8b03..daf45ae 100644 --- a/src/H5E.c +++ b/src/H5E.c @@ -71,9 +71,9 @@ static const H5E_major_mesg_t H5E_major_mesg_g[] = { {H5E_REFERENCE, "References layer"}, {H5E_VFL, "Virtual File Layer"}, {H5E_TBBT, "Threaded, Balanced, Binary Trees"}, - {H5E_FPHDF5, "Flexible Parallel HDF5"}, {H5E_TST, "Ternary Search Trees"}, {H5E_RS, "Reference Counted Strings"}, + {H5E_SLIST, "Skip Lists"}, }; static const H5E_minor_mesg_t H5E_minor_mesg_g[] = { @@ -93,6 +93,8 @@ static const H5E_minor_mesg_t H5E_minor_mesg_g[] = { {H5E_ALREADYEXISTS, "Object already exists"}, {H5E_CANTLOCK, "Unable to lock object"}, {H5E_CANTUNLOCK, "Unable to unlock object"}, + {H5E_CANTGC, "Unable to garbage collect"}, + {H5E_CANTGETSIZE, "Unable to compute size"}, /* File accessability errors */ {H5E_FILEEXISTS, "File already exists"}, @@ -128,9 +130,15 @@ static const H5E_minor_mesg_t H5E_minor_mesg_g[] = { /* Cache related errors */ {H5E_CANTFLUSH, "Unable to flush data from cache"}, - {H5E_CANTLOAD, "Unable to load meta data into cache"}, - {H5E_PROTECT, "Protected meta data error"}, - {H5E_NOTCACHED, "Meta data not currently cached"}, + {H5E_CANTSERIALIZE, "Unable to serialize data from cache"}, + {H5E_CANTLOAD, "Unable to load metadata into cache"}, + {H5E_PROTECT, "Protected metadata error"}, + {H5E_NOTCACHED, "Metadata not currently cached"}, + {H5E_SYSTEM, "Internal error detected"}, + {H5E_CANTINS, "Unable to insert metadata into cache"}, + {H5E_CANTRENAME, "Unable to rename metadata"}, + {H5E_CANTPROTECT, "Unable to protect metadata"}, + {H5E_CANTUNPROTECT, "Unable to unprotect metadata"}, /* B-tree related errors */ {H5E_NOTFOUND, "Object not found"}, @@ -150,6 +158,7 @@ static const H5E_minor_mesg_t H5E_minor_mesg_g[] = { /* Group related errors */ {H5E_CANTOPENOBJ, "Can't open object"}, + {H5E_CANTCLOSEOBJ, "Can't close object"}, {H5E_COMPLEN, "Name component is too long"}, {H5E_CWG, "Problem with current working group"}, {H5E_LINK, "Link count failure"}, @@ -176,12 +185,11 @@ static const H5E_minor_mesg_t H5E_minor_mesg_g[] = { {H5E_MPI, "Some MPI function failed"}, {H5E_MPIERRSTR, "MPI Error String"}, - /* FPHDF5 errors */ - {H5E_CANTMAKETREE, "Can't create a binary tree node"}, - {H5E_CANTRECV, "Can't receive messages from processes"}, - {H5E_CANTSENDMDATA, "Can't send metadata message"}, - {H5E_CANTCHANGE, "Can't register change with server"}, - {H5E_CANTALLOC, "Can't allocate from file"}, + /* Heap errors */ + {H5E_CANTRESTORE, "Can't restore condition"}, + + /* TBBT errors */ + {H5E_CANTMAKETREE, "Can't create TBBT tree"}, /* I/O pipeline errors */ {H5E_NOFILTER, "Requested filter is not available"}, diff --git a/src/H5Epublic.h b/src/H5Epublic.h index 3ac6fd0..bbf2e20 100644 --- a/src/H5Epublic.h +++ b/src/H5Epublic.h @@ -101,9 +101,9 @@ typedef enum H5E_major_t { H5E_REFERENCE, /*References */ H5E_VFL, /*Virtual File Layer */ H5E_TBBT, /*Threaded, Balanced, Binary Trees */ - H5E_FPHDF5, /*Flexible Parallel HDF5 */ H5E_TST, /*Ternary Search Trees */ - H5E_RS /*Reference Counted Strings */ + H5E_RS, /*Reference Counted Strings */ + H5E_SLIST /*Skip Lists */ } H5E_major_t; /* Declare an enumerated type which holds all the valid minor HDF error codes */ @@ -124,6 +124,8 @@ typedef enum H5E_minor_t { H5E_ALREADYEXISTS, /*Object already exists */ H5E_CANTLOCK, /*Unable to lock object */ H5E_CANTUNLOCK, /*Unable to unlock object */ + H5E_CANTGC, /*Unable to garbage collect */ + H5E_CANTGETSIZE, /*Unable to compute size */ /* File accessability errors */ H5E_FILEEXISTS, /*file already exists */ @@ -159,9 +161,15 @@ typedef enum H5E_minor_t { /* Cache related errors */ H5E_CANTFLUSH, /*Can't flush object from cache */ + H5E_CANTSERIALIZE, /*Unable to serialize data from cache */ H5E_CANTLOAD, /*Can't load object into cache */ H5E_PROTECT, /*protected object error */ H5E_NOTCACHED, /*object not currently cached */ + H5E_SYSTEM, /*Internal error detected */ + H5E_CANTINS, /*Unable to insert metadata into cache */ + H5E_CANTRENAME, /*Unable to rename metadata */ + H5E_CANTPROTECT, /*Unable to protect metadata */ + H5E_CANTUNPROTECT, /*Unable to unprotect metadata */ /* B-tree related errors */ H5E_NOTFOUND, /*object not found */ @@ -181,6 +189,7 @@ typedef enum H5E_minor_t { /* Group related errors */ H5E_CANTOPENOBJ, /*Can't open object */ + H5E_CANTCLOSEOBJ, /*Can't close object */ H5E_COMPLEN, /*name component is too long */ H5E_CWG, /*problem with current working group */ H5E_LINK, /*link count failure */ @@ -207,12 +216,11 @@ typedef enum H5E_minor_t { H5E_MPI, /*some MPI function failed */ H5E_MPIERRSTR, /*MPI Error String */ - /* FPHDF5 errors */ - H5E_CANTMAKETREE, /*can't make a TBBT tree */ - H5E_CANTRECV, /*can't receive messages from processes */ - H5E_CANTSENDMDATA, /*can't send metadata message */ - H5E_CANTCHANGE, /*can't register change on server */ - H5E_CANTALLOC, /*can't allocate from file */ + /* Heap errors */ + H5E_CANTRESTORE, /*Can't restore condition */ + + /* TBBT errors */ + H5E_CANTMAKETREE, /*Can't create TBBT tree */ /* I/O pipeline errors */ H5E_NOFILTER, /*requested filter is not available */ diff --git a/src/H5HP.c b/src/H5HP.c index bfcce4e..26b6f39 100644 --- a/src/H5HP.c +++ b/src/H5HP.c @@ -20,15 +20,16 @@ * */ +/* Pablo information */ +/* (Put before include files to avoid problems with inline functions) */ +#define PABLO_MASK H5HP_mask + /* Private headers needed */ #include "H5private.h" /* Generic Functions */ #include "H5Eprivate.h" /* Error handling */ #include "H5HPprivate.h" /* Heap routines */ #include "H5FLprivate.h" /* Memory management functions */ -/* Pablo information */ -#define PABLO_MASK H5HP_mask - /* Interface initialization? */ static int interface_initialize_g = 0; #define INTERFACE_INIT NULL @@ -710,21 +711,21 @@ H5HP_change(H5HP_t *heap, int val, void *_obj) if(valtype==H5HP_MAX_HEAP) { if(H5HP_sink_max(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end if */ else { if(H5HP_swim_min(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end else */ } /* end if */ else { if(heap->type==H5HP_MAX_HEAP) { if(H5HP_swim_max(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end if */ else { if(H5HP_sink_min(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end else */ } /* end else */ @@ -793,11 +794,11 @@ H5HP_incr(H5HP_t *heap, unsigned amt, void *_obj) /* Restore heap condition */ if(heap->type==H5HP_MAX_HEAP) { if(H5HP_swim_max(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end if */ else { if(H5HP_sink_min(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end else */ done: @@ -865,11 +866,11 @@ H5HP_decr(H5HP_t *heap, unsigned amt, void *_obj) /* Restore heap condition */ if(heap->type==H5HP_MAX_HEAP) { if(H5HP_sink_max(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end if */ else { if(H5HP_swim_min(heap,obj_loc)<0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTCHANGE, FAIL, "unable to restore heap condition"); + HGOTO_ERROR(H5E_HEAP, H5E_CANTRESTORE, FAIL, "unable to restore heap condition"); } /* end else */ done: diff --git a/src/H5SL.c b/src/H5SL.c index 4e2e646..7f4b187 100644 --- a/src/H5SL.c +++ b/src/H5SL.c @@ -130,7 +130,12 @@ struct H5SL_t { H5SL_node_t *header; /* Header for nodes in skip list */ }; +/* Interface initialization */ +static int interface_initialize_g = 0; +#define INTERFACE_INIT H5SL_init_interface + /* Static functions */ +static herr_t H5SL_init_interface(void); static size_t H5SL_random_level(double p, size_t max_level); static H5SL_node_t * H5SL_new_node(size_t lvl, void *item, void *key); diff --git a/src/H5public.h b/src/H5public.h index e1051c5..56a93c9 100644 --- a/src/H5public.h +++ b/src/H5public.h @@ -77,10 +77,10 @@ extern "C" { /* Version numbers */ #define H5_VERS_MAJOR 1 /* For major interface/format changes */ #define H5_VERS_MINOR 6 /* For minor interface/format changes */ -#define H5_VERS_RELEASE 3 /* For tweaks, bug-fixes, or development */ -#define H5_VERS_SUBRELEASE "post2" /* For pre-releases like snap0 */ +#define H5_VERS_RELEASE 4 /* For tweaks, bug-fixes, or development */ +#define H5_VERS_SUBRELEASE "pre1" /* For pre-releases like snap0 */ /* Empty string for real releases. */ -#define H5_VERS_INFO "HDF5 library version: 1.6.3-post2" /* Full version string */ +#define H5_VERS_INFO "HDF5 library version: 1.6.4-pre1" /* Full version string */ #define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \ H5_VERS_RELEASE) diff --git a/src/Makefile.in b/src/Makefile.in index f8c6e68..9247513 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -42,7 +42,8 @@ LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5C.c H5D.c H5Dcontig.c H5Dcompact.c H5Defl.c \ H5Oname.c H5Onull.c H5Opline.c H5Osdspace.c H5Oshared.c H5Ostab.c \ H5P.c H5Pdcpl.c H5Pdxpl.c H5Pfapl.c H5Pfcpl.c H5Ptest.c H5R.c H5RC.c \ H5RS.c H5S.c H5Sall.c H5Shyper.c H5Smpio.c H5Snone.c H5Spoint.c \ - H5Sselect.c H5Stest.c H5ST.c H5T.c H5Tarray.c H5Tbit.c H5Tcommit.c \ + H5Sselect.c H5Stest.c H5SL.c H5ST.c H5T.c H5Tarray.c H5Tbit.c \ + H5Tcommit.c \ H5Tcompound.c H5Tconv.c H5Tcset.c H5Tenum.c H5Tfields.c H5Tfixed.c \ H5Tfloat.c H5Tinit.c H5Tnative.c H5Toffset.c H5Topaque.c H5Torder.c \ H5Tpad.c H5Tprecis.c H5Tstrpad.c H5Tvlen.c H5TB.c H5TS.c H5V.c H5Z.c \ @@ -70,7 +71,8 @@ PRIVATE_HDR=H5private.h H5Aprivate.h H5Apkg.h H5ACprivate.h H5Bprivate.h \ H5FOprivate.h H5FSprivate.h H5Gprivate.h H5Gpkg.h \ H5HGprivate.h H5HLprivate.h H5HPprivate.h H5Iprivate.h H5MFprivate.h \ H5MMprivate.h H5Oprivate.h H5Opkg.h H5Pprivate.h H5Ppkg.h \ - H5Rprivate.h H5RCprivate.h H5RSprivate.h H5Sprivate.h H5STprivate.h \ + H5Rprivate.h H5RCprivate.h H5RSprivate.h H5Sprivate.h H5SLprivate.h \ + H5STprivate.h \ H5Tprivate.h H5TBprivate.h H5Tpkg.h H5TSprivate.h H5Vprivate.h \ H5Zprivate.h H5Zpkg.h H5config.h diff --git a/test/Makefile.in b/test/Makefile.in index 942addd..5385c4d 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -74,8 +74,8 @@ TEST_SRC=big.c bittests.c cache.c cmpd_dset.c dsets.c dtypes.c extend.c \ external.c fillval.c flush1.c flush2.c gheap.c h5test.c hyperslab.c \ istore.c lheap.c links.c mount.c mtime.c ohdr.c stab.c tarray.c \ tattr.c tconfig.c testhdf5.c testmeta.c tfile.c \ - tgenprop.c th5s.c theap.c titerate.c tmeta.c trefer.c trefstr.c \ - tselect.c ttime.c ttbbt.c ttst.c tvltypes.c tvlstr.c tmisc.c \ + tgenprop.c th5s.c theap.c titerate.c tmeta.c tmisc.c trefer.c trefstr.c \ + tselect.c tskiplist.c ttime.c ttbbt.c ttst.c tvltypes.c tvlstr.c \ unlink.c enum.c ttsafe.c ttsafe_dcreate.c ttsafe_error.c \ ttsafe_cancel.c ttsafe_acreate.c gass_write.c gass_read.c \ gass_append.c srb_read.c srb_write.c srb_append.c stream_test.c \ @@ -107,8 +107,9 @@ check test _test: $(TEST_PROGS) $(TEST_PROGS): $(LIB) $(LIBHDF5) TESTHDF5_OBJ=testhdf5.lo tarray.lo tattr.lo tconfig.lo tfile.lo \ - tgenprop.lo th5s.lo theap.lo titerate.lo tmeta.lo ttime.lo trefer.lo \ - trefstr.lo tselect.lo ttbbt.lo ttst.lo tvltypes.lo tvlstr.lo tmisc.lo + tgenprop.lo th5s.lo theap.lo titerate.lo tmeta.lo tmisc.lo \ + trefer.lo trefstr.lo tselect.lo tskiplist.lo ttbbt.lo ttime.lo ttst.lo \ + tvltypes.lo tvlstr.lo TTS_OBJ=ttsafe.lo ttsafe_dcreate.lo ttsafe_error.lo \ ttsafe_cancel.lo ttsafe_acreate.lo diff --git a/test/testhdf5.c b/test/testhdf5.c index 6234d01..9d86032 100644 --- a/test/testhdf5.c +++ b/test/testhdf5.c @@ -48,6 +48,7 @@ main(int argc, char *argv[]) AddTest("tbbt", test_tbbt, NULL, "Threaded, Balanced, Binary Trees", NULL); AddTest("tst", test_tst, NULL, "Ternary Search Trees", NULL); AddTest("heap", test_heap, NULL, "Memory Heaps", NULL); + AddTest("skiplist", test_skiplist, NULL, "Skip Lists", NULL); AddTest("refstr", test_refstr, NULL, "Reference Counted Strings", NULL); AddTest("file", test_file, cleanup_file, "Low-Level File I/O", NULL); AddTest("h5s", test_h5s, cleanup_h5s, "Dataspaces", NULL); diff --git a/test/testhdf5.h b/test/testhdf5.h index 9f0171e..fd3976f 100644 --- a/test/testhdf5.h +++ b/test/testhdf5.h @@ -128,6 +128,7 @@ void test_array(void); void test_genprop(void); void test_configure(void); void test_misc(void); +void test_skiplist(void); /* Prototypes for the cleanup routines */ void cleanup_metadata(void); -- cgit v0.12