From 599628fa38e7ffaa576c7da0afbe2249edb8c2c9 Mon Sep 17 00:00:00 2001 From: Maarten ter Huurne Date: Wed, 28 Jul 2010 03:37:40 +0200 Subject: [PATCH] Remove Google sparsehash library. GMenu2X now uses tr1::unordered_map instead, which results in a much smaller binary. The Google library might have its uses when high performance is required, but for us a smaller binary is more important since that reduces startup time. --- src/Makefile.am | 2 +- src/sparsehash-1.6/AUTHORS | 2 - src/sparsehash-1.6/COPYING | 28 - src/sparsehash-1.6/ChangeLog | 182 - src/sparsehash-1.6/INSTALL | 236 - src/sparsehash-1.6/Makefile.am | 157 - src/sparsehash-1.6/NEWS | 0 src/sparsehash-1.6/README | 149 - src/sparsehash-1.6/TODO | 28 - src/sparsehash-1.6/aclocal.m4 | 868 -- src/sparsehash-1.6/configure.ac | 74 - src/sparsehash-1.6/doc/dense_hash_map.html | 1591 --- src/sparsehash-1.6/doc/dense_hash_set.html | 1445 --- src/sparsehash-1.6/doc/designstyle.css | 115 - src/sparsehash-1.6/doc/implementation.html | 371 - src/sparsehash-1.6/doc/index.html | 69 - src/sparsehash-1.6/doc/performance.html | 96 - src/sparsehash-1.6/doc/sparse_hash_map.html | 1527 --- src/sparsehash-1.6/doc/sparse_hash_set.html | 1376 --- src/sparsehash-1.6/doc/sparsetable.html | 1393 --- src/sparsehash-1.6/experimental/Makefile | 9 - src/sparsehash-1.6/experimental/README | 14 - src/sparsehash-1.6/experimental/example.c | 54 - src/sparsehash-1.6/experimental/libchash.c | 1537 --- src/sparsehash-1.6/experimental/libchash.h | 252 - src/sparsehash-1.6/google-sparsehash.sln | 47 - src/sparsehash-1.6/hashtable_unittest | Bin 4575403 -> 0 bytes src/sparsehash-1.6/m4/acx_pthread.m4 | 363 - src/sparsehash-1.6/m4/google_namespace.m4 | 42 - src/sparsehash-1.6/m4/namespaces.m4 | 15 - src/sparsehash-1.6/m4/stl_hash.m4 | 70 - src/sparsehash-1.6/m4/stl_hash_fun.m4 | 36 - src/sparsehash-1.6/m4/stl_namespace.m4 | 25 - src/sparsehash-1.6/missing | 360 - src/sparsehash-1.6/mkinstalldirs | 158 - src/sparsehash-1.6/packages/deb.sh | 74 - src/sparsehash-1.6/packages/deb/README | 7 - src/sparsehash-1.6/packages/deb/changelog | 113 - src/sparsehash-1.6/packages/deb/compat | 1 - src/sparsehash-1.6/packages/deb/control | 17 - src/sparsehash-1.6/packages/deb/copyright | 35 - src/sparsehash-1.6/packages/deb/docs | 16 - src/sparsehash-1.6/packages/deb/rules | 117 - .../packages/deb/sparsehash.dirs | 2 - .../packages/deb/sparsehash.install | 2 - src/sparsehash-1.6/packages/rpm.sh | 86 - src/sparsehash-1.6/packages/rpm/rpm.spec | 61 - src/sparsehash-1.6/simple_test | Bin 546143 -> 0 bytes src/sparsehash-1.6/sparsetable_unittest | Bin 371808 -> 0 bytes src/sparsehash-1.6/src/config.h | 132 - src/sparsehash-1.6/src/config.h.in | 131 - src/sparsehash-1.6/src/config.h.include | 23 - src/sparsehash-1.6/src/google/dense_hash_map | 319 - src/sparsehash-1.6/src/google/dense_hash_set | 296 - src/sparsehash-1.6/src/google/sparse_hash_map | 301 - src/sparsehash-1.6/src/google/sparse_hash_set | 282 - .../src/google/sparsehash/densehashtable.h | 1158 --- .../src/google/sparsehash/sparseconfig.h | 49 - .../src/google/sparsehash/sparsehashtable.h | 1081 -- src/sparsehash-1.6/src/google/sparsetable | 1473 --- src/sparsehash-1.6/src/google/type_traits.h | 250 - src/sparsehash-1.6/src/hashtable_unittest.cc | 1531 --- src/sparsehash-1.6/src/simple_test.cc | 103 - .../src/sparsetable_unittest.cc | 696 -- src/sparsehash-1.6/src/stamp-h1 | 1 - src/sparsehash-1.6/src/time_hash_map.cc | 488 - .../src/type_traits_unittest.cc | 492 - src/sparsehash-1.6/src/windows/config.h | 149 - .../windows/google/sparsehash/sparseconfig.h | 32 - src/sparsehash-1.6/src/windows/port.cc | 63 - src/sparsehash-1.6/src/windows/port.h | 81 - src/sparsehash-1.6/src/words | 8944 ----------------- src/sparsehash-1.6/time_hash_map | Bin 485077 -> 0 bytes src/sparsehash-1.6/type_traits_unittest | Bin 28684 -> 0 bytes .../hashtable_unittest.vcproj | 185 - .../sparsetable_unittest.vcproj | 170 - .../time_hash_map/time_hash_map.vcproj | 185 - .../type_traits_unittest.vcproj | 167 - 78 files changed, 1 insertion(+), 32003 deletions(-) delete mode 100644 src/sparsehash-1.6/AUTHORS delete mode 100644 src/sparsehash-1.6/COPYING delete mode 100644 src/sparsehash-1.6/ChangeLog delete mode 100644 src/sparsehash-1.6/INSTALL delete mode 100644 src/sparsehash-1.6/Makefile.am delete mode 100644 src/sparsehash-1.6/NEWS delete mode 100644 src/sparsehash-1.6/README delete mode 100644 src/sparsehash-1.6/TODO delete mode 100644 src/sparsehash-1.6/aclocal.m4 delete mode 100644 src/sparsehash-1.6/configure.ac delete mode 100644 src/sparsehash-1.6/doc/dense_hash_map.html delete mode 100644 src/sparsehash-1.6/doc/dense_hash_set.html delete mode 100644 src/sparsehash-1.6/doc/designstyle.css delete mode 100644 src/sparsehash-1.6/doc/implementation.html delete mode 100644 src/sparsehash-1.6/doc/index.html delete mode 100644 src/sparsehash-1.6/doc/performance.html delete mode 100644 src/sparsehash-1.6/doc/sparse_hash_map.html delete mode 100644 src/sparsehash-1.6/doc/sparse_hash_set.html delete mode 100644 src/sparsehash-1.6/doc/sparsetable.html delete mode 100644 src/sparsehash-1.6/experimental/Makefile delete mode 100644 src/sparsehash-1.6/experimental/README delete mode 100644 src/sparsehash-1.6/experimental/example.c delete mode 100644 src/sparsehash-1.6/experimental/libchash.c delete mode 100644 src/sparsehash-1.6/experimental/libchash.h delete mode 100755 src/sparsehash-1.6/google-sparsehash.sln delete mode 100755 src/sparsehash-1.6/hashtable_unittest delete mode 100644 src/sparsehash-1.6/m4/acx_pthread.m4 delete mode 100644 src/sparsehash-1.6/m4/google_namespace.m4 delete mode 100644 src/sparsehash-1.6/m4/namespaces.m4 delete mode 100644 src/sparsehash-1.6/m4/stl_hash.m4 delete mode 100644 src/sparsehash-1.6/m4/stl_hash_fun.m4 delete mode 100644 src/sparsehash-1.6/m4/stl_namespace.m4 delete mode 100755 src/sparsehash-1.6/missing delete mode 100755 src/sparsehash-1.6/mkinstalldirs delete mode 100755 src/sparsehash-1.6/packages/deb.sh delete mode 100644 src/sparsehash-1.6/packages/deb/README delete mode 100644 src/sparsehash-1.6/packages/deb/changelog delete mode 100644 src/sparsehash-1.6/packages/deb/compat delete mode 100644 src/sparsehash-1.6/packages/deb/control delete mode 100644 src/sparsehash-1.6/packages/deb/copyright delete mode 100644 src/sparsehash-1.6/packages/deb/docs delete mode 100755 src/sparsehash-1.6/packages/deb/rules delete mode 100644 src/sparsehash-1.6/packages/deb/sparsehash.dirs delete mode 100644 src/sparsehash-1.6/packages/deb/sparsehash.install delete mode 100755 src/sparsehash-1.6/packages/rpm.sh delete mode 100644 src/sparsehash-1.6/packages/rpm/rpm.spec delete mode 100755 src/sparsehash-1.6/simple_test delete mode 100755 src/sparsehash-1.6/sparsetable_unittest delete mode 100644 src/sparsehash-1.6/src/config.h delete mode 100644 src/sparsehash-1.6/src/config.h.in delete mode 100644 src/sparsehash-1.6/src/config.h.include delete mode 100644 src/sparsehash-1.6/src/google/dense_hash_map delete mode 100644 src/sparsehash-1.6/src/google/dense_hash_set delete mode 100644 src/sparsehash-1.6/src/google/sparse_hash_map delete mode 100644 src/sparsehash-1.6/src/google/sparse_hash_set delete mode 100644 src/sparsehash-1.6/src/google/sparsehash/densehashtable.h delete mode 100644 src/sparsehash-1.6/src/google/sparsehash/sparseconfig.h delete mode 100644 src/sparsehash-1.6/src/google/sparsehash/sparsehashtable.h delete mode 100644 src/sparsehash-1.6/src/google/sparsetable delete mode 100644 src/sparsehash-1.6/src/google/type_traits.h delete mode 100644 src/sparsehash-1.6/src/hashtable_unittest.cc delete mode 100644 src/sparsehash-1.6/src/simple_test.cc delete mode 100644 src/sparsehash-1.6/src/sparsetable_unittest.cc delete mode 100644 src/sparsehash-1.6/src/stamp-h1 delete mode 100644 src/sparsehash-1.6/src/time_hash_map.cc delete mode 100644 src/sparsehash-1.6/src/type_traits_unittest.cc delete mode 100644 src/sparsehash-1.6/src/windows/config.h delete mode 100644 src/sparsehash-1.6/src/windows/google/sparsehash/sparseconfig.h delete mode 100644 src/sparsehash-1.6/src/windows/port.cc delete mode 100644 src/sparsehash-1.6/src/windows/port.h delete mode 100644 src/sparsehash-1.6/src/words delete mode 100755 src/sparsehash-1.6/time_hash_map delete mode 100755 src/sparsehash-1.6/type_traits_unittest delete mode 100755 src/sparsehash-1.6/vsprojects/hashtable_unittest/hashtable_unittest.vcproj delete mode 100755 src/sparsehash-1.6/vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj delete mode 100755 src/sparsehash-1.6/vsprojects/time_hash_map/time_hash_map.vcproj delete mode 100755 src/sparsehash-1.6/vsprojects/type_traits_unittest/type_traits_unittest.vcproj diff --git a/src/Makefile.am b/src/Makefile.am index 5c2d7c8..19d9476 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,7 +27,7 @@ noinst_HEADERS = asfont.h button.h cpu.h dirdialog.h FastDelegate.h \ AM_CFLAGS= @CFLAGS@ @SDL_CFLAGS@ -AM_CXXFLAGS = @CXXFLAGS@ @SDL_CFLAGS@ -Isparsehash-1.6/src -DTARGET_GP2X \ +AM_CXXFLAGS = @CXXFLAGS@ @SDL_CFLAGS@ -DTARGET_GP2X \ -Wall -Wextra -Wundef -Wunused-macros gmenu2x_LDADD = @LIBS@ @SDL_LIBS@ -lSDL_image -lSDL_gfx -lSDL -ljpeg -lpng12 -lz -ldl -lpthread diff --git a/src/sparsehash-1.6/AUTHORS b/src/sparsehash-1.6/AUTHORS deleted file mode 100644 index ee92be8..0000000 --- a/src/sparsehash-1.6/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -opensource@google.com - diff --git a/src/sparsehash-1.6/COPYING b/src/sparsehash-1.6/COPYING deleted file mode 100644 index e4956cf..0000000 --- a/src/sparsehash-1.6/COPYING +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2005, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/sparsehash-1.6/ChangeLog b/src/sparsehash-1.6/ChangeLog deleted file mode 100644 index 789eb16..0000000 --- a/src/sparsehash-1.6/ChangeLog +++ /dev/null @@ -1,182 +0,0 @@ -Fri Jan 8 14:47:55 2010 Google Inc. - - * sparsehash: version 1.6 release - * New accessor methods for deleted_key, empty_key (sjackman) - * Use explicit hash functions in sparsehash tests (csilvers) - * BUGFIX: Cast resize to fix SUNWspro bug (csilvers) - * Check for sz overflow in min_size (csilvers) - * Speed up clear() for dense and sparse hashtables (jeff) - * Avoid shrinking in all cases when min-load is 0 (shaunj, csilvers) - * Improve densehashtable code for the deleted key (gpike) - * BUGFIX: Fix operator= when the 2 empty-keys differ (andreidam) - * BUGFIX: Fix ht copying when empty-key isn't set (andreidam) - * PORTING: Use TmpFile() instead of /tmp on MinGW (csilvers) - * PORTING: Use filenames that work with Stratus VOS. - -Tue May 12 14:16:38 2009 Google Inc. - - * sparsehash: version 1.5.2 release - * Fix compile error: not initializing set_key in all constructors - -Fri May 8 15:23:44 2009 Google Inc. - - * sparsehash: version 1.5.1 release - * Fix broken equal_range() for all the hash-classes (csilvers) - -Wed May 6 11:28:49 2009 Google Inc. - - * sparsehash: version 1.5 release - * Support the tr1 unordered_map (and unordered_set) API (csilvers) - * Store only key for delkey; reduces need for 0-arg c-tor (csilvers) - * Prefer unordered_map to hash_map for the timing test (csilvers) - * PORTING: update the resource use for 64-bit machines (csilvers) - * PORTING: fix MIN/MAX collisions by un-#including windows.h (csilvers) - * Updated autoconf version to 2.61 and libtool version to 1.5.26 - -Wed Jan 28 17:11:31 2009 Google Inc. - - * sparsehash: version 1.4 release - * Allow hashtables to be <32 buckets (csilvers) - * Fix initial-sizing bug: was sizing tables too small (csilvers) - * Add asserts that clients don't abuse deleted/empty key (csilvers) - * Improve determination of 32/64 bit for C code (csilvers) - * Small fix for doc files in rpm (csilvers) - -Thu Nov 6 15:06:09 2008 Google Inc. - - * sparsehash: version 1.3 release - * Add an interface to change the parameters for resizing (myl) - * Document another potentially good hash function (csilvers) - -Thu Sep 18 13:53:20 2008 Google Inc. - - * sparsehash: version 1.2 release - * Augment documentation to better describe namespace issues (csilvers) - * BUG FIX: replace hash<> with SPARSEHASH_HASH, for windows (csilvers) - * Add timing test to unittest to test repeated add+delete (csilvers) - * Do better picking a new size when resizing (csilvers) - * Use ::google instead of google as a namespace (csilvers) - * Improve threading test at config time (csilvers) - -Mon Feb 11 16:30:11 2008 Google Inc. - - * sparsehash: version 1.1 release - * Fix brown-paper-bag bug in some constructors (rafferty) - * Fix problem with variables shadowing member vars, add -Wshadow - -Thu Nov 29 11:44:38 2007 Google Inc. - - * sparsehash: version 1.0.2 release - * Fix a final reference to hash<> to use SPARSEHASH_HASH<> instead. - -Wed Nov 14 08:47:48 2007 Google Inc. - - * sparsehash: version 1.0.1 release :-( - * Remove an unnecessary (harmful) "#define hash" in windows' config.h - -Tue Nov 13 15:15:46 2007 Google Inc. - - * sparsehash: version 1.0 release! We are now out of beta. - * Clean up Makefile awk script to be more readable (csilvers) - * Namespace fixes: use fewer #defines, move typedefs into namespace - -Fri Oct 12 12:35:24 2007 Google Inc. - - * sparsehash: version 0.9.1 release - * Fix Makefile awk script to work on more architectures (csilvers) - * Add test to test code in more 'real life' situations (csilvers) - -Tue Oct 9 14:15:21 2007 Google Inc. - - * sparsehash: version 0.9 release - * More type-hygiene improvements, especially for 64-bit (csilvers) - * Some configure improvements to improve portability, utility (austern) - * Small bugfix for operator== for dense_hash_map (jeff) - -Tue Jul 3 12:55:04 2007 Google Inc. - - * sparsehash: version 0.8 release - * Minor type-hygiene improvements: size_t for int, etc. (csilvers) - * Porting improvements: tests pass on OS X, FreeBSD, Solaris (csilvers) - * Full windows port! VS solution provided for all unittests (csilvers) - -Mon Jun 11 11:33:41 2007 Google Inc. - - * sparsehash: version 0.7 release - * Syntax fixes to better support gcc 4.3 and VC++ 7 (mec, csilvers) - * Improved windows/VC++ support (see README.windows) (csilvers) - * Config improvements: better tcmalloc support and config.h (csilvers) - * More robust with missing hash_map + nix 'trampoline' .h's (csilvers) - * Support for STLport's hash_map/hash_fun locations (csilvers) - * Add .m4 files to distribution; now all source is there (csilvers) - * Tiny modification of shrink-threshhold to allow never-shrinking (amc) - * Protect timing tests against aggressive optimizers (csilvers) - * Extend time_hash_map to test bigger objects (csilvers) - * Extend type-trait support to work with const objects (csilvers) - * USER VISIBLE: speed up all code by replacing memmove with memcpy - (csilvers) - -Tue Mar 20 17:29:34 2007 Google Inc. - - * sparsehash: version 0.6 release - * Some improvement to type-traits (jyasskin) - * Better timing results when google-perftools is installed (sanjay) - * Updates and fixes to html documentation and README (csilvers) - * A bit more careful about #includes (csilvers) - * Fix for typo that broken compilation on some systems (csilvers) - * USER VISIBLE: New clear_no_resize() method added to dense_hash_map - (uszkoreit) - -Sat Oct 21 13:47:47 2006 Google Inc. - - * sparsehash: version 0.5 release - * Support uint16_t (SunOS) in addition to u_int16_t (BSD) (csilvers) - * Get rid of UNDERSTANDS_ITERATOR_TAGS; everyone understands (csilvers) - * Test that empty-key and deleted-key differ (rbayardo) - * Fix example docs: strcmp needs to test for NULL (csilvers) - -Sun Apr 23 22:42:35 2006 Google Inc. - - * sparsehash: version 0.4 release - * Remove POD requirement for keys and values! (austern) - * Add tr1-compatible type-traits system to speed up POD ops. (austern) - * Fixed const-iterator bug where postfix ++ didn't compile. (csilvers) - * Fixed iterator comparison bugs where <= was incorrect. (csilvers) - * Clean up config.h to keep its #defines from conflicting. (csilvers) - * Big documentation sweep and cleanup. (csilvers) - * Update documentation to talk more about good hash fns. (csilvers) - * Fixes to compile on MSVC (working around some MSVC bugs). (rennie) - * Avoid resizing hashtable on operator[] lookups (austern) - -Thu Nov 3 20:12:31 2005 Google Inc. - - * sparsehash: version 0.3 release - * Quiet compiler warnings on some compilers. (csilvers) - * Some documentation fixes: example code for dense_hash_map. (csilvers) - * Fix a bug where swap() wasn't swapping delete_key(). (csilvers) - * set_deleted_key() and set_empty_key() now take a key only, - allowing hash-map values to be forward-declared. (csilvers) - * support for std::insert_iterator (and std::inserter). (csilvers) - -Mon May 2 07:04:46 2005 Google Inc. - - * sparsehash: version 0.2 release - * Preliminary support for msvc++ compilation. (csilvers) - * Documentation fixes -- some example code was incomplete! (csilvers) - * Minimize size of config.h to avoid other-package conflicts (csilvers) - * Contribute a C-based version of sparsehash that served as the - inspiration for this code. One day, I hope to clean it up and - support it, but for now it's just in experimental/, for playing - around with. (csilvers) - * Change default namespace from std to google. (csilvers) - -Fri Jan 14 16:53:32 2005 Google Inc. - - * sparsehash: initial release: - The sparsehash package contains several hash-map implementations, - similar in API to SGI's hash_map class, but with different - performance characteristics. sparse_hash_map uses very little - space overhead: 1-2 bits per entry. dense_hash_map is typically - faster than the default SGI STL implementation. This package - also includes hash-set analogues of these classes. - diff --git a/src/sparsehash-1.6/INSTALL b/src/sparsehash-1.6/INSTALL deleted file mode 100644 index 23e5f25..0000000 --- a/src/sparsehash-1.6/INSTALL +++ /dev/null @@ -1,236 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free -Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - -By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). Here is a another example: - - /bin/bash ./configure CONFIG_SHELL=/bin/bash - -Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent -configuration-related scripts to be executed by `/bin/bash'. - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/src/sparsehash-1.6/Makefile.am b/src/sparsehash-1.6/Makefile.am deleted file mode 100644 index 783baa6..0000000 --- a/src/sparsehash-1.6/Makefile.am +++ /dev/null @@ -1,157 +0,0 @@ -## Process this file with automake to produce Makefile.in - -# Make sure that when we re-make ./configure, we get the macros we need -ACLOCAL_AMFLAGS = -I m4 - -# This is so we can #include -AM_CPPFLAGS = -I$(top_srcdir)/src - -# These are good warnings to turn on by default -if GCC -AM_CXXFLAGS = -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -Wshadow -endif - -googleincludedir = $(includedir)/google -## The .h files you want to install (that is, .h files that people -## who install this package can include in their own applications.) -googleinclude_HEADERS = \ - src/google/dense_hash_map \ - src/google/dense_hash_set \ - src/google/sparse_hash_map \ - src/google/sparse_hash_set \ - src/google/sparsetable \ - src/google/type_traits.h - -docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION) -## This is for HTML and other documentation you want to install. -## Add your documentation files (in doc/) in addition to these boilerplate -## Also add a TODO file if you have one -dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL NEWS README README.windows \ - TODO \ - doc/dense_hash_map.html \ - doc/dense_hash_set.html \ - doc/sparse_hash_map.html \ - doc/sparse_hash_set.html \ - doc/sparsetable.html \ - doc/implementation.html \ - doc/performance.html \ - doc/index.html \ - doc/designstyle.css - -## The libraries (.so's) you want to install -lib_LTLIBRARIES = -## The location of the windows project file for each binary we make -WINDOWS_PROJECTS = google-sparsehash.sln - -## unittests you want to run when people type 'make check'. -## TESTS is for binary unittests, check_SCRIPTS for script-based unittests. -## TESTS_ENVIRONMENT sets environment variables for when you run unittest, -## but it only seems to take effect for *binary* unittests (argh!) -TESTS = type_traits_unittest sparsetable_unittest hashtable_unittest \ - simple_test -# TODO(csilvers): get simple_test working on windows -WINDOWS_PROJECTS += vsprojects/type_traits_unittest/type_traits_unittest.vcproj \ - vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj \ - vsprojects/hashtable_unittest/hashtable_unittest.vcproj -check_SCRIPTS = -TESTS_ENVIRONMENT = - -## This should always include $(TESTS), but may also include other -## binaries that you compile but don't want automatically installed. -noinst_PROGRAMS = $(TESTS) time_hash_map -WINDOWS_PROJECTS += vsprojects/time_hash_map/time_hash_map.vcproj - - -## vvvv RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS - -# All our .h files need to read the config information in config.h. The -# autoheader config.h has too much info, including PACKAGENAME, that -# might conflict with other config.h's an application might #include. -# Thus, we create a "minimal" config.h, called sparseconfig.h, that -# includes only the #defines we really need, and that are unlikely to -# change from system to system. NOTE: The awk command is equivalent to -# fgrep -B2 -f- $(top_builddir)/src/config.h \ -# fgrep -vx -e -- > _sparsehash_config -# For correctness, it depends on the fact config.h.include does not have -# any lines starting with #. -src/google/sparsehash/sparseconfig.h: $(top_builddir)/src/config.h \ - $(top_srcdir)/src/config.h.include - [ -d $(@D) ] || mkdir -p $(@D) - echo "/*" > $(@D)/_sparsehash_config - echo " * NOTE: This file is for internal use only." >> $(@D)/_sparsehash_config - echo " * Do not use these #defines in your own program!" >> $(@D)/_sparsehash_config - echo " */" >> $(@D)/_sparsehash_config - $(AWK) '{prevline=currline; currline=$$0;} \ - /^#/ {in_second_file = 1;} \ - !in_second_file {if (currline !~ /^ *$$/) {inc[currline]=0}}; \ - in_second_file { for (i in inc) { \ - if (index(currline, i) != 0) { \ - print "\n"prevline"\n"currline; \ - delete inc[i]; \ - } \ - } }' \ - $(top_srcdir)/src/config.h.include $(top_builddir)/src/config.h \ - >> $(@D)/_sparsehash_config - mv -f $(@D)/_sparsehash_config $@ -# This is how we tell automake about auto-generated .h files -BUILT_SOURCES = src/google/sparsehash/sparseconfig.h -CLEANFILES = src/google/sparsehash/sparseconfig.h - -sparsehashincludedir = $(googleincludedir)/sparsehash -sparsehashinclude_HEADERS = \ - src/google/sparsehash/densehashtable.h \ - src/google/sparsehash/sparsehashtable.h -nodist_sparsehashinclude_HEADERS = src/google/sparsehash/sparseconfig.h - -type_traits_unittest_SOURCES = \ - src/type_traits_unittest.cc \ - $(sparsehashinclude_HEADERS) \ - src/google/type_traits.h -nodist_type_traits_unittest_SOURCES = $(nodist_sparsehashinclude_HEADERS) - -sparsetable_unittest_SOURCES = \ - src/sparsetable_unittest.cc \ - $(sparsehashinclude_HEADERS) \ - src/google/sparsetable -nodist_sparsetable_unittest_SOURCES = $(nodist_sparsehashinclude_HEADERS) - -hashtable_unittest_SOURCES = \ - src/hashtable_unittest.cc \ - $(googleinclude_HEADERS) \ - $(sparsehashinclude_HEADERS) \ - src/words -nodist_hashtable_unittest_SOURCES = $(nodist_sparsehashinclude_HEADERS) - -simple_test_SOURCES = \ - src/simple_test.cc \ - $(sparsehashinclude_HEADERS) -nodist_simple_test_SOURCES = $(nodist_sparsehashinclude_HEADERS) - -time_hash_map_SOURCES = \ - src/time_hash_map.cc \ - $(sparsehashinclude_HEADERS) \ - $(googleinclude_HEADERS) -nodist_time_hash_map_SOURCES = $(nodist_sparsehashinclude_HEADERS) - -# If tcmalloc is installed, use it with time_hash_map; it gives us -# heap-usage statistics for the hash_map routines, which is very nice -time_hash_map_CXXFLAGS = @tcmalloc_flags@ $(AM_CXXFLAGS) -time_hash_map_LDFLAGS = @tcmalloc_flags@ -time_hash_map_LDADD = @tcmalloc_libs@ - -## ^^^^ END OF RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS - - -rpm: dist-gzip packages/rpm.sh packages/rpm/rpm.spec - @cd packages && ./rpm.sh ${PACKAGE} ${VERSION} - -deb: dist-gzip packages/deb.sh packages/deb/* - @cd packages && ./deb.sh ${PACKAGE} ${VERSION} - -# Windows wants write permission to .vcproj files and maybe even sln files. -dist-hook: - test -e "$(distdir)/vsprojects" \ - && chmod -R u+w $(distdir)/*.sln $(distdir)/vsprojects/ - -EXTRA_DIST = packages/rpm.sh packages/rpm/rpm.spec packages/deb.sh packages/deb \ - src/config.h.include src/windows $(WINDOWS_PROJECTS) experimental diff --git a/src/sparsehash-1.6/NEWS b/src/sparsehash-1.6/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/src/sparsehash-1.6/README b/src/sparsehash-1.6/README deleted file mode 100644 index 11df6ed..0000000 --- a/src/sparsehash-1.6/README +++ /dev/null @@ -1,149 +0,0 @@ -This directory contains several hash-map implementations, similar in -API to SGI's hash_map class, but with different performance -characteristics. sparse_hash_map uses very little space overhead, 1-2 -bits per entry. dense_hash_map is very fast, particulary on lookup. -(sparse_hash_set and dense_hash_set are the set versions of these -routines.) On the other hand, these classes have requirements that -may not make them appropriate for all applications. - -All these implementation use a hashtable with internal quadratic -probing. This method is space-efficient -- there is no pointer -overhead -- and time-efficient for good hash functions. - -COMPILING ---------- -To compile test applications with these classes, run ./configure -followed by make. To install these header files on your system, run -'make install'. (On Windows, the instructions are different; see -README.windows.) See INSTALL for more details. - -This code should work on any modern C++ system. It has been tested on -Linux (Ubuntu, Fedora, RedHat, Debian), Solaris 10 x86, FreeBSD 6.0, -OS X 10.3 and 10.4, and Windows under both VC++7 and VC++8. - -USING ------ -See the html files in the doc directory for small example programs -that use these classes. It's enough to just include the header file: - - #include // or sparse_hash_set, dense_hash_map, ... - google::sparse_hash_set number_mapper; - -and use the class the way you would other hash-map implementations. -(Though see "API" below for caveats.) - -By default (you can change it via a flag to ./configure), these hash -implementations are defined in the google namespace. - -API ---- -The API for sparse_hash_map, dense_hash_map, sparse_hash_set, and -dense_hash_set, are a superset of the API of SGI's hash_map class. -See doc/sparse_hash_map.html, et al., for more information about the -API. - -The usage of these classes differ from SGI's hash_map, and other -hashtable implementations, in the following major ways: - -1) dense_hash_map requires you to set aside one key value as the - 'empty bucket' value, set via the set_empty_key() method. This - *MUST* be called before you can use the dense_hash_map. It is - illegal to insert any elements into a dense_hash_map whose key is - equal to the empty-key. - -2) For both dense_hash_map and sparse_hash_map, if you wish to delete - elements from the hashtable, you must set aside a key value as the - 'deleted bucket' value, set via the set_deleted_key() method. If - your hash-map is insert-only, there is no need to call this - method. If you call set_deleted_key(), it is illegal to insert any - elements into a dense_hash_map or sparse_hash_map whose key is - equal to the deleted-key. - -3) These hash-map implementation support I/O. See below. - -There are also some smaller differences: - -1) The constructor takes an optional argument that specifies the - number of elements you expect to insert into the hashtable. This - differs from SGI's hash_map implementation, which takes an optional - number of buckets. - -2) erase() does not immediately reclaim memory. As a consequence, - erase() does not invalidate any iterators, making loops like this - correct: - for (it = ht.begin(); it != ht.end(); ++it) - if (...) ht.erase(it); - As another consequence, a series of erase() calls can leave your - hashtable using more memory than it needs to. The hashtable will - automatically compact() at the next call to insert(), but to - manually compact a hashtable, you can call - ht.resize(0) - -3) While sparse_hash_map et al. accept an Allocator template argument, - they ignore it. They use malloc() and free() for all memory - allocations. - -4) sparse_hash_map et al. do not use exceptions. - -I/O ---- -In addition to the normal hash-map operations, sparse_hash_map can -read and write hashtables to disk. (dense_hash_map also has the API, -but it has not yet been implemented, and writes will always fail.) - -In the simplest case, writing a hashtable is as easy as calling two -methods on the hashtable: - ht.write_metadata(fp); - ht.write_nopointer_data(fp); - -Reading in this data is equally simple: - google::sparse_hash_map<...> ht; - ht.read_metadata(fp); - ht.read_nopointer_data(fp); - -The above is sufficient if the key and value do not contain any -pointers: they are basic C types or agglomorations of basic C types. -If the key and/or value do contain pointers, you can still store the -hashtable by replacing write_nopointer_data() with a custom writing -routine. See sparse_hash_map.html et al. for more information. - -SPARSETABLE ------------ -In addition to the hash-map and hash-set classes, this package also -provides sparsetable.h, an array implementation that uses space -proportional to the number of elements in the array, rather than the -maximum element index. It uses very little space overhead: 1 bit per -entry. See doc/sparsetable.html for the API. - -RESOURCE USAGE --------------- -* sparse_hash_map has memory overhead of about 2 bits per hash-map - entry. -* dense_hash_map has a factor of 2-3 memory overhead: if your - hashtable data takes X bytes, dense_hash_map will use 3X-4X memory - total. - -Hashtables tend to double in size when resizing, creating an -additional 50% space overhead. dense_hash_map does in fact have a -significant "high water mark" memory use requirement. -sparse_hash_map, however, is written to need very little space -overhead when resizing: only a few bits per hashtable entry. - -PERFORMANCE ------------ -You can compile and run the included file time_hash_map.cc to examine -the performance of sparse_hash_map, dense_hash_map, and your native -hash_map implementation on your system. One test against the -SGI hash_map implementation gave the following timing information for -a simple find() call: - SGI hash_map: 22 ns - dense_hash_map: 13 ns - sparse_hash_map: 117 ns - SGI map: 113 ns - -See doc/performance.html for more detailed charts on resource usage -and performance data. - ---- -16 March 2005 -(Last updated: 20 March 2007) diff --git a/src/sparsehash-1.6/TODO b/src/sparsehash-1.6/TODO deleted file mode 100644 index e9b0263..0000000 --- a/src/sparsehash-1.6/TODO +++ /dev/null @@ -1,28 +0,0 @@ -1) TODO: I/O implementation in densehashtable.h - -2) TODO: document SPARSEHASH_STAT_UPDATE macro, and also macros that - tweak performance. Perhaps add support to these to the API? - -3) TODO: support exceptions? - -4) BUG: sparsetable's operator[] doesn't work well with printf: you - need to explicitly cast the result to value_type to print it. (It - works fine with streams.) - -5) TODO: consider rewriting dense_hash_map to use a 'groups' scheme, - like sparsetable, but without the sparse-allocation within a - group. This makes resizing have better memory-use properties. The - downside is that probes across groups might take longer since - groups are not contiguous in memory. Making groups the same size - as a cache-line, and ensuring they're loaded on cache-line - boundaries, might help. Needs careful testing to make sure it - doesn't hurt performance. - -6) TODO: Get the C-only version of sparsehash in experimental/ ready - for prime-time. - -7) TODO: use cmake (www.cmake.org) to make it easy to isntall this on - a windows system. - ---- -28 February 2007 diff --git a/src/sparsehash-1.6/aclocal.m4 b/src/sparsehash-1.6/aclocal.m4 deleted file mode 100644 index 2bdc7db..0000000 --- a/src/sparsehash-1.6/aclocal.m4 +++ /dev/null @@ -1,868 +0,0 @@ -# generated automatically by aclocal 1.9.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.9.6])]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 7 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 3 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 12 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. -# -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -# -# We cannot accept any implementation of `mkdir' that recognizes `-p'. -# Some implementations (such as Solaris 8's) are not thread-safe: if a -# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -# concurrently, both version can detect that a/ is missing, but only -# one can create it and the other will error out. Consequently we -# restrict ourselves to GNU make (using the --version option ensures -# this.) -AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/acx_pthread.m4]) -m4_include([m4/google_namespace.m4]) -m4_include([m4/namespaces.m4]) -m4_include([m4/stl_hash.m4]) -m4_include([m4/stl_hash_fun.m4]) -m4_include([m4/stl_namespace.m4]) diff --git a/src/sparsehash-1.6/configure.ac b/src/sparsehash-1.6/configure.ac deleted file mode 100644 index dea367c..0000000 --- a/src/sparsehash-1.6/configure.ac +++ /dev/null @@ -1,74 +0,0 @@ -## Process this file with autoconf to produce configure. -## In general, the safest way to proceed is to run ./autogen.sh - -# make sure we're interpreted by some minimal autoconf -AC_PREREQ(2.57) - -AC_INIT(sparsehash, 1.6, opensource@google.com) -# The argument here is just something that should be in the current directory -# (for sanity checking) -AC_CONFIG_SRCDIR(README) -AM_INIT_AUTOMAKE([dist-zip]) -AM_CONFIG_HEADER(src/config.h) - -# Checks for programs. -AC_PROG_CC -AC_PROG_CPP -AC_PROG_CXX -AM_CONDITIONAL(GCC, test "$GCC" = yes) # let the Makefile know if we're gcc - -# Check whether some low-level functions/files are available -AC_HEADER_STDC -AC_CHECK_FUNCS(memcpy memmove) -AC_CHECK_TYPES([uint16_t]) # defined in C99 systems -AC_CHECK_TYPES([u_int16_t]) # defined in BSD-derived systems, and gnu -AC_CHECK_TYPES([__uint16]) # defined in some windows systems (vc7) -AC_CHECK_TYPES([long long]) # probably defined everywhere, but... - -# These are 'only' needed for unittests -AC_CHECK_HEADERS(sys/resource.h unistd.h sys/time.h sys/utsname.h) - -# If you have google-perftools installed, we can do a bit more testing. -# We not only want to set HAVE_MALLOC_EXTENSION_H, we also want to set -# a variable to let the Makefile to know to link in tcmalloc. -AC_LANG([C++]) -AC_CHECK_HEADERS(google/malloc_extension.h, - tcmalloc_libs=-ltcmalloc, - tcmalloc_libs=) -# On some systems, when linking in tcmalloc you also need to link in -# pthread. That's a bug somewhere, but we'll work around it for now. -tcmalloc_flags="" -if test -n "$tcmalloc_libs"; then - ACX_PTHREAD - tcmalloc_flags="\$(PTHREAD_CFLAGS)" - tcmalloc_libs="$tcmalloc_libs \$(PTHREAD_LIBS)" -fi -AC_SUBST(tcmalloc_flags) -AC_SUBST(tcmalloc_libs) - -# Figure out where hash_map lives and also hash_fun.h (or stl_hash_fun.h). -# This also tells us what namespace hash code lives in. -AC_CXX_STL_HASH -AC_CXX_STL_HASH_FUN - -# Find out what namespace 'normal' STL code lives in, and also what namespace -# the user wants our classes to be defined in -AC_CXX_STL_NAMESPACE -AC_DEFINE_GOOGLE_NAMESPACE(google) - -# In unix-based systems, hash is always defined as hash<> (in namespace. -# HASH_NAMESPACE.) So we can use a simple AC_DEFINE here. On -# windows, and possibly on future unix STL implementations, this -# macro will evaluate to something different.) -AC_DEFINE(SPARSEHASH_HASH_NO_NAMESPACE, hash, - [The system-provided hash function, in namespace HASH_NAMESPACE.]) - -# Do *not* define this in terms of SPARSEHASH_HASH_NO_NAMESPACE, because -# SPARSEHASH_HASH is exported to sparseconfig.h, but S_H_NO_NAMESPACE isn't. -AC_DEFINE(SPARSEHASH_HASH, HASH_NAMESPACE::hash, - [The system-provided hash function including the namespace.]) - - -# Write generated configuration file -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/src/sparsehash-1.6/doc/dense_hash_map.html b/src/sparsehash-1.6/doc/dense_hash_map.html deleted file mode 100644 index eaef87e..0000000 --- a/src/sparsehash-1.6/doc/dense_hash_map.html +++ /dev/null @@ -1,1591 +0,0 @@ - - - - - -dense_hash_map<Key, Data, HashFcn, EqualKey, Alloc> - - - - -

[Note: this document is formatted similarly to the SGI STL -implementation documentation pages, and refers to concepts and classes -defined there. However, neither this document nor the code it -describes is associated with SGI, nor is it necessary to have SGI's -STL implementation installed in order to use this class.]

- - -

dense_hash_map<Key, Data, HashFcn, EqualKey, Alloc>

- -

dense_hash_map is a Hashed -Associative Container that associates objects of type Key -with objects of type Data. dense_hash_map is a Pair -Associative Container, meaning that its value type is pair<const Key, Data>. It is also a -Unique -Associative Container, meaning that no two elements have keys that -compare equal using EqualKey.

- -

Looking up an element in a dense_hash_map by its key is -efficient, so dense_hash_map is useful for "dictionaries" -where the order of elements is irrelevant. If it is important for the -elements to be in a particular order, however, then map is more appropriate.

- -

dense_hash_map is distinguished from other hash-map -implementations by its speed and by the ability to save -and restore contents to disk. On the other hand, this hash-map -implementation can use significantly more space than other hash-map -implementations, and it also has requirements -- for instance, for a -distinguished "empty key" -- that may not be easy for all -applications to satisfy.

- -

This class is appropriate for applications that need speedy access -to relatively small "dictionaries" stored in memory, or for -applications that need these dictionaries to be persistent. [implementation note])

- - -

Example

- -(Note: this example uses SGI semantics for hash<> --- the kind used by gcc and most Unix compiler suites -- and not -Dinkumware semantics -- the kind used by Microsoft Visual Studio. If -you are using MSVC, this example will not compile as-is: you'll need -to change hash to hash_compare, and you -won't use eqstr at all. See the MSVC documentation for -hash_map and hash_compare, for more -details.) - -
-#include <iostream>
-#include <google/dense_hash_map>
-
-using google::dense_hash_map;      // namespace where class lives by default
-using std::cout;
-using std::endl;
-using ext::hash;  // or __gnu_cxx::hash, or maybe tr1::hash, depending on your OS
-
-struct eqstr
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return (s1 == s2) || (s1 && s2 && strcmp(s1, s2) == 0);
-  }
-};
-
-int main()
-{
-  dense_hash_map<const char*, int, hash<const char*>, eqstr> months;
-  
-  months.set_empty_key(NULL);
-  months["january"] = 31;
-  months["february"] = 28;
-  months["march"] = 31;
-  months["april"] = 30;
-  months["may"] = 31;
-  months["june"] = 30;
-  months["july"] = 31;
-  months["august"] = 31;
-  months["september"] = 30;
-  months["october"] = 31;
-  months["november"] = 30;
-  months["december"] = 31;
-  
-  cout << "september -> " << months["september"] << endl;
-  cout << "april     -> " << months["april"] << endl;
-  cout << "june      -> " << months["june"] << endl;
-  cout << "november  -> " << months["november"] << endl;
-}
-
- - -

Definition

- -Defined in the header dense_hash_map. -This class is not part of the C++ standard, though it is mostly -compatible with the tr1 class unordered_map. - - -

Template parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
- Key - - The hash_map's key type. This is also defined as - dense_hash_map::key_type. - -   -
- Data - - The hash_map's data type. This is also defined as - dense_hash_map::data_type. [7] - -   -
- HashFcn - - The hash function used by the - hash_map. This is also defined as dense_hash_map::hasher. -
Note: Hashtable performance depends heavliy on the choice of - hash function. See the performance - page for more information. -
- hash<Key> -
- EqualKey - - The hash_map key equality function: a binary predicate that determines - whether two keys are equal. This is also defined as - dense_hash_map::key_equal. - - equal_to<Key> -
- Alloc - - Ignored; this is included only for API-compatibility - with SGI's (and tr1's) STL implementation. - -
- - -

Model of

- -Unique Hashed Associative Container, -Pair Associative Container - - -

Type requirements

- -
    -
  • -Key is Assignable. -
  • -EqualKey is a Binary Predicate whose argument type is Key. -
  • -EqualKey is an equivalence relation. -
  • -Alloc is an Allocator. -
- - -

Public base classes

- -None. - - -

Members

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberWhere definedDescription
- key_type - - Associative - Container - - The dense_hash_map's key type, Key. -
- data_type - - Pair - Associative Container - - The type of object associated with the keys. -
- value_type - - Pair - Associative Container - - The type of object, pair<const key_type, data_type>, - stored in the hash_map. -
- hasher - - Hashed - Associative Container - - The dense_hash_map's hash - function. -
- key_equal - - Hashed - Associative Container - - Function - object that compares keys for equality. -
- allocator_type - - Unordered Associative Container (tr1) - - The type of the Allocator given as a template parameter. -
- pointer - - Container - - Pointer to T. -
- reference - - Container - - Reference to T -
- const_reference - - Container - - Const reference to T -
- size_type - - Container - - An unsigned integral type. -
- difference_type - - Container - - A signed integral type. -
- iterator - - Container - - Iterator used to iterate through a dense_hash_map. [1] -
- const_iterator - - Container - - Const iterator used to iterate through a dense_hash_map. -
- local_iterator - - Unordered Associative Container (tr1) - - Iterator used to iterate through a subset of - dense_hash_map. [1] -
- const_local_iterator - - Unordered Associative Container (tr1) - - Const iterator used to iterate through a subset of - dense_hash_map. -
- iterator begin() - - Container - - Returns an iterator pointing to the beginning of the - dense_hash_map. -
- iterator end() - - Container - - Returns an iterator pointing to the end of the - dense_hash_map. -
- const_iterator begin() const - - Container - - Returns an const_iterator pointing to the beginning of the - dense_hash_map. -
- const_iterator end() const - - Container - - Returns an const_iterator pointing to the end of the - dense_hash_map. -
- local_iterator begin(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the beginning of bucket - i in the dense_hash_map. -
- local_iterator end(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the end of bucket - i in the dense_hash_map. For - dense_hash_map, each bucket contains either 0 or 1 item. -
- const_local_iterator begin(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the beginning of bucket - i in the dense_hash_map. -
- const_local_iterator end(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the end of bucket - i in the dense_hash_map. For - dense_hash_map, each bucket contains either 0 or 1 item. -
- size_type size() const - - Container - - Returns the size of the dense_hash_map. -
- size_type max_size() const - - Container - - Returns the largest possible size of the dense_hash_map. -
- bool empty() const - - Container - - true if the dense_hash_map's size is 0. -
- size_type bucket_count() const - - Hashed - Associative Container - - Returns the number of buckets used by the dense_hash_map. -
- size_type max_bucket_count() const - - Hashed - Associative Container - - Returns the largest possible number of buckets used by the dense_hash_map. -
- size_type bucket_size(size_type i) const - - Unordered Associative Container (tr1) - - Returns the number of elements in bucket i. For - dense_hash_map, this will be either 0 or 1. -
- size_type bucket(const key_type& key) const - - Unordered Associative Container (tr1) - - If the key exists in the map, returns the index of the bucket - containing the given key, otherwise, return the bucket the key - would be inserted into. - This value may be passed to begin(size_type) and - end(size_type). -
- float load_factor() const - - Unordered Associative Container (tr1) - - The number of elements in the dense_hash_map divided by - the number of buckets. -
- float max_load_factor() const - - Unordered Associative Container (tr1) - - The maximum load factor before increasing the number of buckets in - the dense_hash_map. -
- void max_load_factor(float new_grow) - - Unordered Associative Container (tr1) - - Sets the maximum load factor before increasing the number of - buckets in the dense_hash_map. -
- float min_load_factor() const - - dense_hash_map - - The minimum load factor before decreasing the number of buckets in - the dense_hash_map. -
- void min_load_factor(float new_grow) - - dense_hash_map - - Sets the minimum load factor before decreasing the number of - buckets in the dense_hash_map. -
- void set_resizing_parameters(float shrink, float grow) - - dense_hash_map - - DEPRECATED. See below. -
- void resize(size_type n) - - Hashed - Associative Container - - Increases the bucket count to hold at least n items. - [4] [5] -
- void rehash(size_type n) - - Unordered Associative Container (tr1) - - Increases the bucket count to hold at least n items. - This is identical to resize. - [4] [5] -
- hasher hash_funct() const - - Hashed - Associative Container - - Returns the hasher object used by the dense_hash_map. -
- hasher hash_function() const - - Unordered Associative Container (tr1) - - Returns the hasher object used by the dense_hash_map. - This is idential to hash_funct. -
- key_equal key_eq() const - - Hashed - Associative Container - - Returns the key_equal object used by the - dense_hash_map. -
- dense_hash_map() - - Container - - Creates an empty dense_hash_map. -
- dense_hash_map(size_type n) - - Hashed - Associative Container - - Creates an empty dense_hash_map that's optimized for holding - up to n items. - [5] -
- dense_hash_map(size_type n, const hasher& h) - - Hashed - Associative Container - - Creates an empty dense_hash_map that's optimized for up - to n items, using h as the hash function. -
- dense_hash_map(size_type n, const hasher& h, const - key_equal& k) - - Hashed - Associative Container - - Creates an empty dense_hash_map that's optimized for up - to n items, using h as the hash function and - k as the key equal function. -
-
template <class InputIterator>
-dense_hash_map(InputIterator f, InputIterator l) 
-[2] -
- Unique - Hashed Associative Container - - Creates a dense_hash_map with a copy of a range. -
-
template <class InputIterator>
-dense_hash_map(InputIterator f, InputIterator l, size_type n) 
-[2] -
- Unique - Hashed Associative Container - - Creates a hash_map with a copy of a range that's optimized to - hold up to n items. -
-
template <class InputIterator>
-dense_hash_map(InputIterator f, InputIterator l, size_type n, const
-hasher& h) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_map with a copy of a range that's optimized to hold - up to n items, using h as the hash function. -
-
template <class InputIterator>
-dense_hash_map(InputIterator f, InputIterator l, size_type n, const
-hasher& h, const key_equal& k) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_map with a copy of a range that's optimized for - holding up to n items, using h as the hash - function and k as the key equal function. -
- dense_hash_map(const hash_map&) - - Container - - The copy constructor. -
- dense_hash_map& operator=(const hash_map&) - - Container - - The assignment operator -
- void swap(hash_map&) - - Container - - Swaps the contents of two hash_maps. -
-
pair<iterator, bool> insert(const value_type& x)
-
-
- Unique - Associative Container - - Inserts x into the dense_hash_map. -
-
template <class InputIterator>
-void insert(InputIterator f, InputIterator l) 
[2] -
- Unique - Associative Container - - Inserts a range into the dense_hash_map. -
- void set_empty_key(const key_type& key) [6] - - dense_hash_map - - See below. -
- void set_deleted_key(const key_type& key) [6] - - dense_hash_map - - See below. -
- void clear_deleted_key() [6] - - dense_hash_map - - See below. -
- void erase(iterator pos) - - Associative - Container - - Erases the element pointed to by pos. - [6] -
- size_type erase(const key_type& k) - - Associative - Container - - Erases the element whose key is k. - [6] -
- void erase(iterator first, iterator last) - - Associative - Container - - Erases all elements in a range. - [6] -
- void clear() - - Associative - Container - - Erases all of the elements. -
- void clear_no_resize() - - dense_hash_map - - See below. -
- const_iterator find(const key_type& k) const - - Associative - Container - - Finds an element whose key is k. -
- iterator find(const key_type& k) - - Associative - Container - - Finds an element whose key is k. -
- size_type count(const key_type& k) const - - Unique - Associative Container - - Counts the number of elements whose key is k. -
-
pair<const_iterator, const_iterator> equal_range(const
-key_type& k) const 
-
- Associative - Container - - Finds a range containing all elements whose key is k. -
-
pair<iterator, iterator> equal_range(const
-key_type& k) 
-
- Associative - Container - - Finds a range containing all elements whose key is k. -
-
data_type& operator[](const key_type& k) [3] 
-
- dense_hash_map - - See below. -
- bool write_metadata(FILE *fp) - - dense_hash_map - - See below. -
- bool read_metadata(FILE *fp) - - dense_hash_map - - See below. -
- bool write_nopointer_data(FILE *fp) - - dense_hash_map - - See below. -
- bool read_nopointer_data(FILE *fp) - - dense_hash_map - - See below. -
-
bool operator==(const hash_map&, const hash_map&)
-
-
- Hashed - Associative Container - - Tests two hash_maps for equality. This is a global function, not a - member function. -
- - -

New members

- -These members are not defined in the Unique -Hashed Associative Container, Pair -Associative Container, or tr1's +Unordered Associative -Container requirements, but are specific to -dense_hash_map. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberDescription
- void set_empty_key(const key_type& key) - - Sets the distinguished "empty" key to key. This must be - called immediately after construct time, before calls to another - other dense_hash_map operation. [6] -
- void set_deleted_key(const key_type& key) - - Sets the distinguished "deleted" key to key. This must be - called before any calls to erase(). [6] -
- void clear_deleted_key() - - Clears the distinguished "deleted" key. After this is called, - calls to erase() are not valid on this object. - [6] -
- void clear_no_resize() - - Clears the hashtable like clear() does, but does not - recover the memory used for hashtable buckets. (The memory - used by the items in the hashtable is still recovered.) - This can save time for applications that want to reuse a - dense_hash_map many times, each time with a similar number - of objects. -
-
-data_type& 
-operator[](const key_type& k) [3]
-
-
- Returns a reference to the object that is associated with - a particular key. If the dense_hash_map does not already - contain such an object, operator[] inserts the default - object data_type(). [3] -
- void set_resizing_parameters(float shrink, float grow) - - This function is DEPRECATED. It is equivalent to calling - min_load_factor(shrink); max_load_factor(grow). -
- bool write_metadata(FILE *fp) - - Write hashtable metadata to fp. See below. -
- bool read_metadata(FILE *fp) - - Read hashtable metadata from fp. See below. -
- bool write_nopointer_data(FILE *fp) - - Write hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- bool read_nopointer_data(FILE *fp) - - Read hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- - -

Notes

- -

[1] - -dense_hash_map::iterator is not a mutable iterator, because -dense_hash_map::value_type is not Assignable. -That is, if i is of type dense_hash_map::iterator -and p is of type dense_hash_map::value_type, then -*i = p is not a valid expression. However, -dense_hash_map::iterator isn't a constant iterator either, -because it can be used to modify the object that it points to. Using -the same notation as above, (*i).second = p is a valid -expression.

- -

[2] - -This member function relies on member template functions, which -may not be supported by all compilers. If your compiler supports -member templates, you can call this function with any type of input -iterator. If your compiler does not yet support member templates, -though, then the arguments must either be of type const -value_type* or of type dense_hash_map::const_iterator.

- -

[3] - -Since operator[] might insert a new element into the -dense_hash_map, it can't possibly be a const member -function. Note that the definition of operator[] is -extremely simple: m[k] is equivalent to -(*((m.insert(value_type(k, data_type()))).first)).second. -Strictly speaking, this member function is unnecessary: it exists only -for convenience.

- -

[4] - -In order to preserve iterators, erasing hashtable elements does not -cause a hashtable to resize. This means that after a string of -erase() calls, the hashtable will use more space than is -required. At a cost of invalidating all current iterators, you can -call resize() to manually compact the hashtable. The -hashtable promotes too-small resize() arguments to the -smallest legal value, so to compact a hashtable, it's sufficient to -call resize(0).

- -

[5] - -Unlike some other hashtable implementations, the optional n in -the calls to the constructor, resize, and rehash -indicates not the desired number of buckets that -should be allocated, but instead the expected number of items to be -inserted. The class then sizes the hash-map appropriately for the -number of items specified. It's not an error to actually insert more -or fewer items into the hashtable, but the implementation is most -efficient -- does the fewest hashtable resizes -- if the number of -inserted items is n or slightly less.

- -

[6] - -dense_hash_map requires you call -set_empty_key() immediately after constructing the hash-map, -and before calling any other dense_hash_map method. (This is -the largest difference between the dense_hash_map API and -other hash-map APIs. See implementation.html -for why this is necessary.) -The argument to set_empty_key() should be a key-value that -is never used for legitimate hash-map entries. If you have no such -key value, you will be unable to use dense_hash_map. It is -an error to call insert() with an item whose key is the -"empty key."

- -dense_hash_map also requires you call -set_deleted_key() before calling erase(). -The argument to set_deleted_key() should be a key-value that -is never used for legitimate hash-map entries. It must be different -from the key-value used for set_empty_key(). It is an error to call -erase() without first calling set_deleted_key(), and -it is also an error to call insert() with an item whose key -is the "deleted key."

- -

There is no need to call set_deleted_key if you do not -wish to call erase() on the hash-map.

- -

It is acceptable to change the deleted-key at any time by calling -set_deleted_key() with a new argument. You can also call -clear_deleted_key(), at which point all keys become valid for -insertion but no hashtable entries can be deleted until -set_deleted_key() is called again.

- -

[7] - -dense_hash_map requires that data_type has a -zero-argument default constructor. This is because -dense_hash_map uses the special value pair(empty_key, -data_type()) to denote empty buckets, and thus needs to be able -to create data_type using a zero-argument constructor.

- -

If your data_type does not have a zero-argument default -constructor, there are several workarounds:

-
    -
  • Store a pointer to data_type in the map, instead of - data_type directly. This may yield faster code as - well, since hashtable-resizes will just have to move pointers - around, rather than copying the entire data_type. -
  • Add a zero-argument default constructor to data_type. -
  • Subclass data_type and add a zero-argument default - constructor to the subclass. -
- - -

Input/Output

- -
-

IMPORTANT IMPLEMENTATION NOTE: In the current version of -this code, the input/output routines for dense_hash_map have -not yet been implemented. This section explains the API, but -note that all calls to these routines will fail (return -false). It is a TODO to remedy this situation.

-
- -

It is possible to save and restore dense_hash_map objects -to disk. Storage takes place in two steps. The first writes the -hashtable metadata. The second writes the actual data.

- -

To write a hashtable to disk, first call write_metadata() -on an open file pointer. This saves the hashtable information in a -byte-order-independent format.

- -

After the metadata has been written to disk, you must write the -actual data stored in the hash-map to disk. If both the key and data -are "simple" enough, you can do this by calling -write_nopointer_data(). "Simple" data is data that can be -safely copied to disk via fwrite(). Native C data types fall -into this category, as do structs of native C data types. Pointers -and STL objects do not.

- -

Note that write_nopointer_data() does not do any endian -conversion. Thus, it is only appropriate when you intend to read the -data on the same endian architecture as you write the data.

- -

If you cannot use write_nopointer_data() for any reason, -you can write the data yourself by iterating over the -dense_hash_map with a const_iterator and writing -the key and data in any manner you wish.

- -

To read the hashtable information from disk, first you must create -a dense_hash_map object. Then open a file pointer to point -to the saved hashtable, and call read_metadata(). If you -saved the data via write_nopointer_data(), you can follow the -read_metadata() call with a call to -read_nopointer_data(). This is all that is needed.

- -

If you saved the data through a custom write routine, you must call -a custom read routine to read in the data. To do this, iterate over -the dense_hash_map with an iterator; this operation -is sensical because the metadata has already been set up. For each -iterator item, you can read the key and value from disk, and set it -appropriately. You will need to do a const_cast on the -iterator, since it->first is always const. You -will also need to use placement-new if the key or value is a C++ -object. The code might look like this:

-
-   for (dense_hash_map<int*, ComplicatedClass>::iterator it = ht.begin();
-        it != ht.end(); ++it) {
-       // The key is stored in the dense_hash_map as a pointer
-       const_cast<int*>(it->first) = new int;
-       fread(const_cast<int*>(it->first), sizeof(int), 1, fp);
-       // The value is a complicated C++ class that takes an int to construct
-       int ctor_arg;
-       fread(&ctor_arg, sizeof(int), 1, fp);
-       new (&it->second) ComplicatedClass(ctor_arg);  // "placement new"
-   }
-
- - -

Validity of Iterators

- -

erase() is guaranteed not to invalidate any iterators -- -except for any iterators pointing to the item being erased, of course. -insert() invalidates all iterators, as does -resize().

- -

This is implemented by making erase() not resize the -hashtable. If you desire maximum space efficiency, you can call -resize(0) after a string of erase() calls, to force -the hashtable to resize to the smallest possible size.

- -

In addition to invalidating iterators, insert() -and resize() invalidate all pointers into the hashtable. If -you want to store a pointer to an object held in a dense_hash_map, -either do so after finishing hashtable inserts, or store the object on -the heap and a pointer to it in the dense_hash_map.

- - -

See also

- -

The following are SGI STL, and some Google STL, concepts and -classes related to dense_hash_map.

- -hash_map, -Associative Container, -Hashed Associative Container, -Pair Associative Container, -Unique Hashed Associative Container, -set, -map -multiset, -multimap, -hash_set, -hash_multiset, -hash_multimap, -sparse_hash_map, -sparse_hash_set, -dense_hash_set - - - diff --git a/src/sparsehash-1.6/doc/dense_hash_set.html b/src/sparsehash-1.6/doc/dense_hash_set.html deleted file mode 100644 index 2a5ff2e..0000000 --- a/src/sparsehash-1.6/doc/dense_hash_set.html +++ /dev/null @@ -1,1445 +0,0 @@ - - - - - -dense_hash_set<Key, HashFcn, EqualKey, Alloc> - - - - -

[Note: this document is formatted similarly to the SGI STL -implementation documentation pages, and refers to concepts and classes -defined there. However, neither this document nor the code it -describes is associated with SGI, nor is it necessary to have SGI's -STL implementation installed in order to use this class.]

- - -

dense_hash_set<Key, HashFcn, EqualKey, Alloc>

- -

dense_hash_set is a Hashed -Associative Container that stores objects of type Key. -dense_hash_set is a Simple -Associative Container, meaning that its value type, as well as its -key type, is key. It is also a -Unique -Associative Container, meaning that no two elements have keys that -compare equal using EqualKey.

- -

Looking up an element in a dense_hash_set by its key is -efficient, so dense_hash_set is useful for "dictionaries" -where the order of elements is irrelevant. If it is important for the -elements to be in a particular order, however, then map is more appropriate.

- -

dense_hash_set is distinguished from other hash-set -implementations by its speed and by the ability to save -and restore contents to disk. On the other hand, this hash-set -implementation can use significantly more space than other hash-set -implementations, and it also has requirements -- for instance, for a -distinguished "empty key" -- that may not be easy for all -applications to satisfy.

- -

This class is appropriate for applications that need speedy access -to relatively small "dictionaries" stored in memory, or for -applications that need these dictionaries to be persistent. [implementation note])

- - -

Example

- -(Note: this example uses SGI semantics for hash<> --- the kind used by gcc and most Unix compiler suites -- and not -Dinkumware semantics -- the kind used by Microsoft Visual Studio. If -you are using MSVC, this example will not compile as-is: you'll need -to change hash to hash_compare, and you -won't use eqstr at all. See the MSVC documentation for -hash_map and hash_compare, for more -details.) - -
-#include <iostream>
-#include <google/dense_hash_set>
-
-using google::dense_hash_set;      // namespace where class lives by default
-using std::cout;
-using std::endl;
-using ext::hash;  // or __gnu_cxx::hash, or maybe tr1::hash, depending on your OS
-
-struct eqstr
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return (s1 == s2) || (s1 && s2 && strcmp(s1, s2) == 0);
-  }
-};
-
-void lookup(const hash_set<const char*, hash<const char*>, eqstr>& Set,
-            const char* word)
-{
-  dense_hash_set<const char*, hash<const char*>, eqstr>::const_iterator it
-    = Set.find(word);
-  cout << word << ": "
-       << (it != Set.end() ? "present" : "not present")
-       << endl;
-}
-
-int main()
-{
-  dense_hash_set<const char*, hash<const char*>, eqstr> Set;
-  Set.set_empty_key(NULL);
-  Set.insert("kiwi");
-  Set.insert("plum");
-  Set.insert("apple");
-  Set.insert("mango");
-  Set.insert("apricot");
-  Set.insert("banana");
-
-  lookup(Set, "mango");
-  lookup(Set, "apple");
-  lookup(Set, "durian");
-}
-
- - -

Definition

- -Defined in the header dense_hash_set. -This class is not part of the C++ standard, though it is mostly -compatible with the tr1 class unordered_set. - - -

Template parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
- Key - - The hash_set's key and value type. This is also defined as - dense_hash_set::key_type and - dense_hash_set::value_type. - -   -
- HashFcn - - The hash function used by the - hash_set. This is also defined as dense_hash_set::hasher. -
Note: Hashtable performance depends heavliy on the choice of - hash function. See the performance - page for more information. -
- hash<Key> -
- EqualKey - - The hash_set key equality function: a binary predicate that determines - whether two keys are equal. This is also defined as - dense_hash_set::key_equal. - - equal_to<Key> -
- Alloc - - Ignored; this is included only for API-compatibility - with SGI's (and tr1's) STL implementation. - -
- - -

Model of

- -Unique Hashed Associative Container, -Simple Associative Container - - -

Type requirements

- -
    -
  • -Key is Assignable. -
  • -EqualKey is a Binary Predicate whose argument type is Key. -
  • -EqualKey is an equivalence relation. -
  • -Alloc is an Allocator. -
- - -

Public base classes

- -None. - - -

Members

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberWhere definedDescription
- value_type - - Container - - The type of object, T, stored in the hash_set. -
- key_type - - Associative - Container - - The key type associated with value_type. -
- hasher - - Hashed - Associative Container - - The dense_hash_set's hash - function. -
- key_equal - - Hashed - Associative Container - - Function - object that compares keys for equality. -
- allocator_type - - Unordered Associative Container (tr1) - - The type of the Allocator given as a template parameter. -
- pointer - - Container - - Pointer to T. -
- reference - - Container - - Reference to T -
- const_reference - - Container - - Const reference to T -
- size_type - - Container - - An unsigned integral type. -
- difference_type - - Container - - A signed integral type. -
- iterator - - Container - - Iterator used to iterate through a dense_hash_set. -
- const_iterator - - Container - - Const iterator used to iterate through a dense_hash_set. - (iterator and const_iterator are the same type.) -
- local_iterator - - Unordered Associative Container (tr1) - - Iterator used to iterate through a subset of - dense_hash_set. -
- const_local_iterator - - Unordered Associative Container (tr1) - - Const iterator used to iterate through a subset of - dense_hash_set. -
- iterator begin() const - - Container - - Returns an iterator pointing to the beginning of the - dense_hash_set. -
- iterator end() const - - Container - - Returns an iterator pointing to the end of the - dense_hash_set. -
- local_iterator begin(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the beginning of bucket - i in the dense_hash_set. -
- local_iterator end(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the end of bucket - i in the dense_hash_set. For - dense_hash_set, each bucket contains either 0 or 1 item. -
- const_local_iterator begin(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the beginning of bucket - i in the dense_hash_set. -
- const_local_iterator end(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the end of bucket - i in the dense_hash_set. For - dense_hash_set, each bucket contains either 0 or 1 item. -
- size_type size() const - - Container - - Returns the size of the dense_hash_set. -
- size_type max_size() const - - Container - - Returns the largest possible size of the dense_hash_set. -
- bool empty() const - - Container - - true if the dense_hash_set's size is 0. -
- size_type bucket_count() const - - Hashed - Associative Container - - Returns the number of buckets used by the dense_hash_set. -
- size_type max_bucket_count() const - - Hashed - Associative Container - - Returns the largest possible number of buckets used by the dense_hash_set. -
- size_type bucket_size(size_type i) const - - Unordered Associative Container (tr1) - - Returns the number of elements in bucket i. For - dense_hash_set, this will be either 0 or 1. -
- size_type bucket(const key_type& key) const - - Unordered Associative Container (tr1) - - If the key exists in the map, returns the index of the bucket - containing the given key, otherwise, return the bucket the key - would be inserted into. - This value may be passed to begin(size_type) and - end(size_type). -
- float load_factor() const - - Unordered Associative Container (tr1) - - The number of elements in the dense_hash_set divided by - the number of buckets. -
- float max_load_factor() const - - Unordered Associative Container (tr1) - - The maximum load factor before increasing the number of buckets in - the dense_hash_set. -
- void max_load_factor(float new_grow) - - Unordered Associative Container (tr1) - - Sets the maximum load factor before increasing the number of - buckets in the dense_hash_set. -
- float min_load_factor() const - - dense_hash_set - - The minimum load factor before decreasing the number of buckets in - the dense_hash_set. -
- void min_load_factor(float new_grow) - - dense_hash_set - - Sets the minimum load factor before decreasing the number of - buckets in the dense_hash_set. -
- void set_resizing_parameters(float shrink, float grow) - - dense_hash_set - - DEPRECATED. See below. -
- void resize(size_type n) - - Hashed - Associative Container - - Increases the bucket count to hold at least n items. - [2] [3] -
- void rehash(size_type n) - - Unordered Associative Container (tr1) - - Increases the bucket count to hold at least n items. - This is identical to resize. - [2] [3] -
- hasher hash_funct() const - - Hashed - Associative Container - - Returns the hasher object used by the dense_hash_set. -
- hasher hash_function() const - - Unordered Associative Container (tr1) - - Returns the hasher object used by the dense_hash_set. - This is idential to hash_funct. -
- key_equal key_eq() const - - Hashed - Associative Container - - Returns the key_equal object used by the - dense_hash_set. -
- dense_hash_set() - - Container - - Creates an empty dense_hash_set. -
- dense_hash_set(size_type n) - - Hashed - Associative Container - - Creates an empty dense_hash_set that's optimized for holding - up to n items. - [3] -
- dense_hash_set(size_type n, const hasher& h) - - Hashed - Associative Container - - Creates an empty dense_hash_set that's optimized for up - to n items, using h as the hash function. -
- dense_hash_set(size_type n, const hasher& h, const - key_equal& k) - - Hashed - Associative Container - - Creates an empty dense_hash_set that's optimized for up - to n items, using h as the hash function and - k as the key equal function. -
-
template <class InputIterator>
-dense_hash_set(InputIterator f, InputIterator l) 
-[2] -
- Unique - Hashed Associative Container - - Creates a dense_hash_set with a copy of a range. -
-
template <class InputIterator>
-dense_hash_set(InputIterator f, InputIterator l, size_type n) 
-[2] -
- Unique - Hashed Associative Container - - Creates a hash_set with a copy of a range that's optimized to - hold up to n items. -
-
template <class InputIterator>
-dense_hash_set(InputIterator f, InputIterator l, size_type n, const
-hasher& h) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_set with a copy of a range that's optimized to hold - up to n items, using h as the hash function. -
-
template <class InputIterator>
-dense_hash_set(InputIterator f, InputIterator l, size_type n, const
-hasher& h, const key_equal& k) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_set with a copy of a range that's optimized for - holding up to n items, using h as the hash - function and k as the key equal function. -
- dense_hash_set(const hash_set&) - - Container - - The copy constructor. -
- dense_hash_set& operator=(const hash_set&) - - Container - - The assignment operator -
- void swap(hash_set&) - - Container - - Swaps the contents of two hash_sets. -
-
pair<iterator, bool> insert(const value_type& x)
-
-
- Unique - Associative Container - - Inserts x into the dense_hash_set. -
-
template <class InputIterator>
-void insert(InputIterator f, InputIterator l) 
[2] -
- Unique - Associative Container - - Inserts a range into the dense_hash_set. -
- void set_empty_key(const key_type& key) [4] - - dense_hash_set - - See below. -
- void set_deleted_key(const key_type& key) [4] - - dense_hash_set - - See below. -
- void clear_deleted_key() [4] - - dense_hash_set - - See below. -
- void erase(iterator pos) - - Associative - Container - - Erases the element pointed to by pos. - [4] -
- size_type erase(const key_type& k) - - Associative - Container - - Erases the element whose key is k. - [4] -
- void erase(iterator first, iterator last) - - Associative - Container - - Erases all elements in a range. - [4] -
- void clear() - - Associative - Container - - Erases all of the elements. -
- void clear_no_resize() - - dense_hash_map - - See below. -
- iterator find(const key_type& k) const - - Associative - Container - - Finds an element whose key is k. -
- size_type count(const key_type& k) const - - Unique - Associative Container - - Counts the number of elements whose key is k. -
-
pair<iterator, iterator> equal_range(const
-key_type& k) const
-
- Associative - Container - - Finds a range containing all elements whose key is k. -
- bool write_metadata(FILE *fp) - - dense_hash_set - - See below. -
- bool read_metadata(FILE *fp) - - dense_hash_set - - See below. -
- bool write_nopointer_data(FILE *fp) - - dense_hash_set - - See below. -
- bool read_nopointer_data(FILE *fp) - - dense_hash_set - - See below. -
-
bool operator==(const hash_set&, const hash_set&)
-
-
- Hashed - Associative Container - - Tests two hash_sets for equality. This is a global function, not a - member function. -
- - -

New members

- -These members are not defined in the Unique -Hashed Associative Container, Simple -Associative Container, or tr1's Unordered Associative -Container requirements, but are specific to -dense_hash_set. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberDescription
- void set_empty_key(const key_type& key) - - Sets the distinguished "empty" key to key. This must be - called immediately after construct time, before calls to another - other dense_hash_set operation. [4] -
- void set_deleted_key(const key_type& key) - - Sets the distinguished "deleted" key to key. This must be - called before any calls to erase(). [4] -
- void clear_deleted_key() - - Clears the distinguished "deleted" key. After this is called, - calls to erase() are not valid on this object. - [4] -
- void clear_no_resize() - - Clears the hashtable like clear() does, but does not - recover the memory used for hashtable buckets. (The memory - used by the items in the hashtable is still recovered.) - This can save time for applications that want to reuse a - dense_hash_set many times, each time with a similar number - of objects. -
- void set_resizing_parameters(float shrink, float grow) - - This function is DEPRECATED. It is equivalent to calling - min_load_factor(shrink); max_load_factor(grow). -
- bool write_metadata(FILE *fp) - - Write hashtable metadata to fp. See below. -
- bool read_metadata(FILE *fp) - - Read hashtable metadata from fp. See below. -
- bool write_nopointer_data(FILE *fp) - - Write hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- bool read_nopointer_data(FILE *fp) - - Read hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- - -

Notes

- -

[1] - -This member function relies on member template functions, which -may not be supported by all compilers. If your compiler supports -member templates, you can call this function with any type of input -iterator. If your compiler does not yet support member templates, -though, then the arguments must either be of type const -value_type* or of type dense_hash_set::const_iterator.

- -

[2] - -In order to preserve iterators, erasing hashtable elements does not -cause a hashtable to resize. This means that after a string of -erase() calls, the hashtable will use more space than is -required. At a cost of invalidating all current iterators, you can -call resize() to manually compact the hashtable. The -hashtable promotes too-small resize() arguments to the -smallest legal value, so to compact a hashtable, it's sufficient to -call resize(0). - -

[3] - -Unlike some other hashtable implementations, the optional n in -the calls to the constructor, resize, and rehash -indicates not the desired number of buckets that -should be allocated, but instead the expected number of items to be -inserted. The class then sizes the hash-set appropriately for the -number of items specified. It's not an error to actually insert more -or fewer items into the hashtable, but the implementation is most -efficient -- does the fewest hashtable resizes -- if the number of -inserted items is n or slightly less.

- -

[4] - -dense_hash_set requires you call -set_empty_key() immediately after constructing the hash-set, -and before calling any other dense_hash_set method. (This is -the largest difference between the dense_hash_set API and -other hash-set APIs. See implementation.html -for why this is necessary.) -The argument to set_empty_key() should be a key-value that -is never used for legitimate hash-set entries. If you have no such -key value, you will be unable to use dense_hash_set. It is -an error to call insert() with an item whose key is the -"empty key."

- -dense_hash_set also requires you call -set_deleted_key() before calling erase(). -The argument to set_deleted_key() should be a key-value that -is never used for legitimate hash-set entries. It must be different -from the key-value used for set_empty_key(). It is an error to call -erase() without first calling set_deleted_key(), and -it is also an error to call insert() with an item whose key -is the "deleted key."

- -

There is no need to call set_deleted_key if you do not -wish to call erase() on the hash-set.

- -

It is acceptable to change the deleted-key at any time by calling -set_deleted_key() with a new argument. You can also call -clear_deleted_key(), at which point all keys become valid for -insertion but no hashtable entries can be deleted until -set_deleted_key() is called again.

- - -

Input/Output

- -
-

IMPORTANT IMPLEMENTATION NOTE: In the current version of -this code, the input/output routines for dense_hash_set have -not yet been implemented. This section explains the API, but -note that all calls to these routines will fail (return -false). It is a TODO to remedy this situation.

-
- -

It is possible to save and restore dense_hash_set objects -to disk. Storage takes place in two steps. The first writes the -hashtable metadata. The second writes the actual data.

- -

To write a hashtable to disk, first call write_metadata() -on an open file pointer. This saves the hashtable information in a -byte-order-independent format.

- -

After the metadata has been written to disk, you must write the -actual data stored in the hash-set to disk. If both the key and data -are "simple" enough, you can do this by calling -write_nopointer_data(). "Simple" data is data that can be -safely copied to disk via fwrite(). Native C data types fall -into this category, as do structs of native C data types. Pointers -and STL objects do not.

- -

Note that write_nopointer_data() does not do any endian -conversion. Thus, it is only appropriate when you intend to read the -data on the same endian architecture as you write the data.

- -

If you cannot use write_nopointer_data() for any reason, -you can write the data yourself by iterating over the -dense_hash_set with a const_iterator and writing -the key and data in any manner you wish.

- -

To read the hashtable information from disk, first you must create -a dense_hash_set object. Then open a file pointer to point -to the saved hashtable, and call read_metadata(). If you -saved the data via write_nopointer_data(), you can follow the -read_metadata() call with a call to -read_nopointer_data(). This is all that is needed.

- -

If you saved the data through a custom write routine, you must call -a custom read routine to read in the data. To do this, iterate over -the dense_hash_set with an iterator; this operation -is sensical because the metadata has already been set up. For each -iterator item, you can read the key and value from disk, and set it -appropriately. You will need to do a const_cast on the -iterator, since *it is always const. The -code might look like this:

-
-   for (dense_hash_set<int*>::iterator it = ht.begin();
-        it != ht.end(); ++it) {
-       const_cast<int*>(*it) = new int;
-       fread(const_cast<int*>(*it), sizeof(int), 1, fp);
-   }
-
- -

Here's another example, where the item stored in the hash-set is -a C++ object with a non-trivial constructor. In this case, you must -use "placement new" to construct the object at the correct memory -location.

-
-   for (dense_hash_set<ComplicatedClass>::iterator it = ht.begin();
-        it != ht.end(); ++it) {
-       int ctor_arg;  // ComplicatedClass takes an int as its constructor arg
-       fread(&ctor_arg, sizeof(int), 1, fp);
-       new (const_cast<ComplicatedClass*>(&(*it))) ComplicatedClass(ctor_arg);
-   }
-
- - -

Validity of Iterators

- -

erase() is guaranteed not to invalidate any iterators -- -except for any iterators pointing to the item being erased, of course. -insert() invalidates all iterators, as does -resize().

- -

This is implemented by making erase() not resize the -hashtable. If you desire maximum space efficiency, you can call -resize(0) after a string of erase() calls, to force -the hashtable to resize to the smallest possible size.

- -

In addition to invalidating iterators, insert() -and resize() invalidate all pointers into the hashtable. If -you want to store a pointer to an object held in a dense_hash_set, -either do so after finishing hashtable inserts, or store the object on -the heap and a pointer to it in the dense_hash_set.

- - - -

See also

- -

The following are SGI STL, and some Google STL, concepts and -classes related to dense_hash_set.

- -hash_set, -Associative Container, -Hashed Associative Container, -Simple Associative Container, -Unique Hashed Associative Container, -set, -map -multiset, -multimap, -hash_map, -hash_multiset, -hash_multimap, -sparse_hash_set, -sparse_hash_map, -dense_hash_map - - - diff --git a/src/sparsehash-1.6/doc/designstyle.css b/src/sparsehash-1.6/doc/designstyle.css deleted file mode 100644 index f5d1ec2..0000000 --- a/src/sparsehash-1.6/doc/designstyle.css +++ /dev/null @@ -1,115 +0,0 @@ -body { - background-color: #ffffff; - color: black; - margin-right: 1in; - margin-left: 1in; -} - - -h1, h2, h3, h4, h5, h6 { - color: #3366ff; - font-family: sans-serif; -} -@media print { - /* Darker version for printing */ - h1, h2, h3, h4, h5, h6 { - color: #000080; - font-family: helvetica, sans-serif; - } -} - -h1 { - text-align: center; - font-size: 18pt; -} -h2 { - margin-left: -0.5in; -} -h3 { - margin-left: -0.25in; -} -h4 { - margin-left: -0.125in; -} -hr { - margin-left: -1in; -} - -/* Definition lists: definition term bold */ -dt { - font-weight: bold; -} - -address { - text-align: right; -} -/* Use the tag for bits of code and for variables and objects. */ -code,pre,samp,var { - color: #006000; -} -/* Use the tag for file and directory paths and names. */ -file { - color: #905050; - font-family: monospace; -} -/* Use the tag for stuff the user should type. */ -kbd { - color: #600000; -} -div.note p { - float: right; - width: 3in; - margin-right: 0%; - padding: 1px; - border: 2px solid #6060a0; - background-color: #fffff0; -} - -UL.nobullets { - list-style-type: none; - list-style-image: none; - margin-left: -1em; -} - -/* -body:after { - content: "Google Confidential"; -} -*/ - -/* pretty printing styles. See prettify.js */ -.str { color: #080; } -.kwd { color: #008; } -.com { color: #800; } -.typ { color: #606; } -.lit { color: #066; } -.pun { color: #660; } -.pln { color: #000; } -.tag { color: #008; } -.atn { color: #606; } -.atv { color: #080; } -pre.prettyprint { padding: 2px; border: 1px solid #888; } - -.embsrc { background: #eee; } - -@media print { - .str { color: #060; } - .kwd { color: #006; font-weight: bold; } - .com { color: #600; font-style: italic; } - .typ { color: #404; font-weight: bold; } - .lit { color: #044; } - .pun { color: #440; } - .pln { color: #000; } - .tag { color: #006; font-weight: bold; } - .atn { color: #404; } - .atv { color: #060; } -} - -/* Table Column Headers */ -.hdr { - color: #006; - font-weight: bold; - background-color: #dddddd; } -.hdr2 { - color: #006; - background-color: #eeeeee; } \ No newline at end of file diff --git a/src/sparsehash-1.6/doc/implementation.html b/src/sparsehash-1.6/doc/implementation.html deleted file mode 100644 index 2050d54..0000000 --- a/src/sparsehash-1.6/doc/implementation.html +++ /dev/null @@ -1,371 +0,0 @@ - - - -Implementation notes: sparse_hash, dense_hash, sparsetable - - - - -

Implementation of sparse_hash_map, dense_hash_map, and -sparsetable

- -This document contains a few notes on how the data structures in this -package are implemented. This discussion refers at several points to -the classic text in this area: Knuth, The Art of Computer -Programming, Vol 3, Hashing. - - -
-

sparsetable

- -

For specificity, consider the declaration

- -
-   sparsetable<Foo> t(100);        // a sparse array with 100 elements
-
- -

A sparsetable is a random container that implements a sparse array, -that is, an array that uses very little memory to store unassigned -indices (in this case, between 1-2 bits per unassigned index). For -instance, if you allocate an array of size 5 and assign a[2] = [big -struct], then a[2] will take up a lot of memory but a[0], a[1], a[3], -and a[4] will not. Array elements that have a value are called -"assigned". Array elements that have no value yet, or have had their -value cleared using erase() or clear(), are called "unassigned". -For assigned elements, lookups return the assigned value; for -unassigned elements, they return the default value, which for t is -Foo().

- -

sparsetable is implemented as an array of "groups". Each group is -responsible for M array indices. The first group knows about -t[0]..t[M-1], the second about t[M]..t[2M-1], and so forth. (M is 48 -by default.) At construct time, t creates an array of (99/M + 1) -groups. From this point on, all operations -- insert, delete, lookup --- are passed to the appropriate group. In particular, any operation -on t[i] is actually performed on (t.group[i / M])[i % M].

- -

Each group contains of a vector, which holds assigned values, and a -bitmap of size M, which indicates which indices are assigned. A -lookup works as follows: the group is asked to look up index i, where -i < M. The group looks at bitmap[i]. If it's 0, the lookup fails. -If it's 1, then the group has to find the appropriate value in the -vector.

- -

find()

- -

Finding the appropriate vector element is the most expensive part of -the lookup. The code counts all bitmap entries <= i that are set to -1. (There's at least 1 of them, since bitmap[i] is 1.) Suppose there -are 4 such entries. Then the right value to return is the 4th element -of the vector: vector[3]. This takes time O(M), which is a constant -since M is a constant.

- -

insert()

- -

Insert starts with a lookup. If the lookup succeeds, the code merely -replaces vector[3] with the new value. If the lookup fails, then the -code must insert a new entry into the middle of the vector. Again, to -insert at position i, the code must count all the bitmap entries <= i -that are set to i. This indicates the position to insert into the -vector. All vector entries above that position must be moved to make -room for the new entry. This takes time, but still constant time -since the vector has size at most M.

- -

(Inserts could be made faster by using a list instead of a vector to -hold group values, but this would use much more memory, since each -list element requires a full pointer of overhead.)

- -

The only metadata that needs to be updated, after the actual value is -inserted, is to set bitmap[i] to 1. No other counts must be -maintained.

- -

delete()

- -

Deletes are similar to inserts. They start with a lookup. If it -fails, the delete is a noop. Otherwise, the appropriate entry is -removed from the vector, all the vector elements above it are moved -down one, and bitmap[i] is set to 0.

- -

iterators

- -

Sparsetable iterators pose a special burden. They must iterate over -unassigned array values, but the act of iterating should not cause an -assignment to happen -- otherwise, iterating over a sparsetable would -cause it to take up much more room. For const iterators, the matter -is simple: the iterator is merely programmed to return the default -value -- Foo() -- when dereferenced while pointing to an unassigned -entry.

- -

For non-const iterators, such simple techniques fail. Instead, -dereferencing a sparsetable_iterator returns an opaque object that -acts like a Foo in almost all situations, but isn't actually a Foo. -(It does this by defining operator=(), operator value_type(), and, -most sneakily, operator&().) This works in almost all cases. If it -doesn't, an explicit cast to value_type will solve the problem:

- -
-   printf("%d", static_cast<Foo>(*t.find(0)));
-
- -

To avoid such problems, consider using get() and set() instead of an -iterator:

- -
-   for (int i = 0; i < t.size(); ++i)
-      if (t.get(i) == ...)  t.set(i, ...);
-
- -

Sparsetable also has a special class of iterator, besides normal and -const: nonempty_iterator. This only iterates over array values that -are assigned. This is particularly fast given the sparsetable -implementation, since it can ignore the bitmaps entirely and just -iterate over the various group vectors.

- -

Resource use

- -

The space overhead for an sparsetable of size N is N + 48N/M bits. -For the default value of M, this is exactly 2 bits per array entry. -(That's for 32-bit pointers; for machines with 64-bit pointers, it's N -+ 80N/M bits, or 2.67 bits per entry.) -A larger M would use less overhead -- approaching 1 bit per array -entry -- but take longer for inserts, deletes, and lookups. A smaller -M would use more overhead but make operations somewhat faster.

- -

You can also look at some specific performance numbers.

- - -
-

sparse_hash_set

- -

For specificity, consider the declaration

- -
-   sparse_hash_set<Foo> t;
-
- -

sparse_hash_set is a hashtable. For more information on hashtables, -see Knuth. Hashtables are basically arrays with complicated logic on -top of them. sparse_hash_set uses a sparsetable to implement the -underlying array.

- -

In particular, sparse_hash_set stores its data in a sparsetable using -quadratic internal probing (see Knuth). Many hashtable -implementations use external probing, so each table element is -actually a pointer chain, holding many hashtable values. -sparse_hash_set, on the other hand, always stores at most one value in -each table location. If the hashtable wants to store a second value -at a given table location, it can't; it's forced to look somewhere -else.

- -

insert()

- -

As a specific example, suppose t is a new sparse_hash_set. It then -holds a sparsetable of size 32. The code for t.insert(foo) works as -follows:

- -

-1) Call hash<Foo>(foo) to convert foo into an integer i. (hash<Foo> is - the default hash function; you can specify a different one in the - template arguments.) - -

-2a) Look at t.sparsetable[i % 32]. If it's unassigned, assign it to - foo. foo is now in the hashtable. - -

-2b) If t.sparsetable[i % 32] is assigned, and its value is foo, then - do nothing: foo was already in t and the insert is a noop. - -

-2c) If t.sparsetable[i % 32] is assigned, but to a value other than - foo, look at t.sparsetable[(i+1) % 32]. If that also fails, try - t.sparsetable[(i+3) % 32], then t.sparsetable[(i+6) % 32]. In - general, keep trying the next triangular number. - -

-3) If the table is now "too full" -- say, 25 of the 32 table entries - are now assigned -- grow the table by creating a new sparsetable - that's twice as big, and rehashing every single element from the - old table into the new one. This keeps the table from ever filling - up. - -

-4) If the table is now "too empty" -- say, only 3 of the 32 table - entries are now assigned -- shrink the table by creating a new - sparsetable that's half as big, and rehashing every element as in - the growing case. This keeps the table overhead proportional to - the number of elements in the table. -

- -

Instead of using triangular numbers as offsets, one could just use -regular integers: try i, then i+1, then i+2, then i+3. This has bad -'clumping' behavior, as explored in Knuth. Quadratic probing, using -the triangular numbers, avoids the clumping while keeping cache -coherency in the common case. As long as the table size is a power of -2, the quadratic-probing method described above will explore every -table element if necessary, to find a good place to insert.

- -

(As a side note, using a table size that's a power of two has several -advantages, including the speed of calculating (i % table_size). On -the other hand, power-of-two tables are not very forgiving of a poor -hash function. Make sure your hash function is a good one! There are -plenty of dos and don'ts on the web (and in Knuth), for writing hash -functions.)

- -

The "too full" value, also called the "maximum occupancy", determines -a time-space tradeoff: in general, the higher it is, the less space is -wasted but the more probes must be performed for each insert. -sparse_hash_set uses a high maximum occupancy, since space is more -important than speed for this data structure.

- -

The "too empty" value is not necessary for performance but helps with -space use. It's rare for hashtable implementations to check this -value at insert() time -- after all, how will inserting cause a -hashtable to get too small? However, the sparse_hash_set -implementation never resizes on erase(); it's nice to have an erase() -that does not invalidate iterators. Thus, the first insert() after a -long string of erase()s could well trigger a hashtable shrink.

- -

find()

- -

find() works similarly to insert. The only difference is in step -(2a): if the value is unassigned, then the lookup fails immediately.

- -

delete()

- -

delete() is tricky in an internal-probing scheme. The obvious -implementation of just "unassigning" the relevant table entry doesn't -work. Consider the following scenario:

- -
-    t.insert(foo1);         // foo1 hashes to 4, is put in table[4]
-    t.insert(foo2);         // foo2 hashes to 4, is put in table[5]
-    t.erase(foo1);          // table[4] is now 'unassigned'
-    t.lookup(foo2);         // fails since table[hash(foo2)] is unassigned
-
- -

To avoid these failure situations, delete(foo1) is actually -implemented by replacing foo1 by a special 'delete' value in the -hashtable. This 'delete' value causes the table entry to be -considered unassigned for the purposes of insertion -- if foo3 hashes -to 4 as well, it can go into table[4] no problem -- but assigned for -the purposes of lookup.

- -

What is this special 'delete' value? The delete value has to be an -element of type Foo, since the table can't hold anything else. It -obviously must be an element the client would never want to insert on -its own, or else the code couldn't distinguish deleted entries from -'real' entries with the same value. There's no way to determine a -good value automatically. The client has to specify it explicitly. -This is what the set_deleted_key() method does.

- -

Note that set_deleted_key() is only necessary if the client actually -wants to call t.erase(). For insert-only hash-sets, set_deleted_key() -is unnecessary.

- -

When copying the hashtable, either to grow it or shrink it, the -special 'delete' values are not copied into the new table. The -copy-time rehash makes them unnecessary.

- -

Resource use

- -

The data is stored in a sparsetable, so space use is the same as -for sparsetable. However, by default the sparse_hash_set -implementation tries to keep about half the table buckets empty, to -keep lookup-chains short. Since sparsehashmap has about 2 bits -overhead per bucket (or 2.5 bits on 64-bit systems), sparse_hash_map -has about 4-5 bits overhead per hashtable item.

- -

Time use is also determined in large part by the sparsetable -implementation. However, there is also an extra probing cost in -hashtables, which depends in large part on the "too full" value. It -should be rare to need more than 4-5 probes per lookup, and usually -significantly less will suffice.

- -

A note on growing and shrinking the hashtable: all hashtable -implementations use the most memory when growing a hashtable, since -they must have room for both the old table and the new table at the -same time. sparse_hash_set is careful to delete entries from the old -hashtable as soon as they're copied into the new one, to minimize this -space overhead. (It does this efficiently by using its knowledge of -the sparsetable class and copying one sparsetable group at a time.)

- -

You can also look at some specific performance numbers.

- - -
-

sparse_hash_map

- -

sparse_hash_map is implemented identically to sparse_hash_set. The -only difference is instead of storing just Foo in each table entry, -the data structure stores pair<Foo, Value>.

- - -
-

dense_hash_set

- -

The hashtable aspects of dense_hash_set are identical to -sparse_hash_set: it uses quadratic internal probing, and resizes -hashtables in exactly the same way. The difference is in the -underlying array: instead of using a sparsetable, dense_hash_set uses -a C array. This means much more space is used, especially if Foo is -big. However, it makes all operations faster, since sparsetable has -memory management overhead that C arrays do not.

- -

The use of C arrays instead of sparsetables points to one immediate -complication dense_hash_set has that sparse_hash_set does not: the -need to distinguish assigned from unassigned entries. In a -sparsetable, this is accomplished by a bitmap. dense_hash_set, on the -other hand, uses a dedicated value to specify unassigned entries. -Thus, dense_hash_set has two special values: one to indicate deleted -table entries, and one to indicated unassigned table entries. At -construct time, all table entries are initialized to 'unassigned'.

- -

dense_hash_set provides the method set_empty_key() to indicate the -value that should be used for unassigned entries. Like -set_deleted_key(), set_empty_key() requires a value that will not be -used by the client for any legitimate purpose. Unlike -set_deleted_key(), set_empty_key() is always required, no matter what -hashtable operations the client wishes to perform.

- -

Resource use

- -

This implementation is fast because even though dense_hash_set may not -be space efficient, most lookups are localized: a single lookup may -need to access table[i], and maybe table[i+1] and table[i+3], but -nothing other than that. For all but the biggest data structures, -these will frequently be in a single cache line.

- -

This implementation takes, for every unused bucket, space as big as -the key-type. Usually between half and two-thirds of the buckets are -empty.

- -

The doubling method used by dense_hash_set tends to work poorly -with most memory allocators. This is because memory allocators tend -to have memory 'buckets' which are a power of two. Since each -doubling of a dense_hash_set doubles the memory use, a single -hashtable doubling will require a new memory 'bucket' from the memory -allocator, leaving the old bucket stranded as fragmented memory. -Hence, it's not recommended this data structure be used with many -inserts in memory-constrained situations.

- -

You can also look at some specific performance numbers.

- - -
-

dense_hash_map

- -

dense_hash_map is identical to dense_hash_set except for what values -are stored in each table entry.

- -
- -Craig Silverstein
-Thu Jan 6 20:15:42 PST 2005 -
- - - diff --git a/src/sparsehash-1.6/doc/index.html b/src/sparsehash-1.6/doc/index.html deleted file mode 100644 index 68a5865..0000000 --- a/src/sparsehash-1.6/doc/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Google Sparsehash Package - - - - - - - - -

Google Sparsehash Package

-
- -

The Google sparsehash package consists of two hashtable -implementations: sparse, which is designed to be very space -efficient, and dense, which is designed to be very time -efficient. For each one, the package provides both a hash-map and a -hash-set, to mirror the classes in the common STL implementation.

- -

Documentation on how to use these classes:

- - -

In addition to the hash-map (and hash-set) classes, there's also a -lower-level class that implements a "sparse" array. This class can be -useful in its own right; consider using it when you'd normally use a -sparse_hash_map, but your keys are all small-ish -integers.

- - -

There is also a doc explaining the implementation details of these -classes, for those who are curious. And finally, you can see some -performance comparisons, both between -the various classes here, but also between these implementations and -other standard hashtable implementations.

- -
-
-Craig Silverstein
-Last modified: Thu Jan 25 17:58:02 PST 2007 -
- - - diff --git a/src/sparsehash-1.6/doc/performance.html b/src/sparsehash-1.6/doc/performance.html deleted file mode 100644 index 40c1406..0000000 --- a/src/sparsehash-1.6/doc/performance.html +++ /dev/null @@ -1,96 +0,0 @@ - - - -Performance notes: sparse_hash, dense_hash, sparsetable - - - - -

Performance Numbers

- -

Here are some performance numbers from an example desktop machine, -taken from a version of time_hash_map that was instrumented to also -report memory allocation information (this modification is not -included by default because it required a big hack to do, including -modifying the STL code to not try to do its own freelist management).

- -

Note there are lots of caveats on these numbers: they may differ from -machine to machine and compiler to compiler, and they only test a very -particular usage pattern that may not match how you use hashtables -- -for instance, they test hashtables with very small keys. However, -they're still useful for a baseline comparison of the various -hashtable implementations.

- -

These figures are from a 2.80GHz Pentium 4 with 2G of memory. The -'standard' hash_map and map implementations are the SGI STL code -included with gcc2. Compiled with gcc2.95.3 -g --O2

- -
-======
-Average over 10000000 iterations
-Wed Dec  8 14:56:38 PST 2004
-
-SPARSE_HASH_MAP:
-map_grow                  665 ns
-map_predict/grow          303 ns
-map_replace               177 ns
-map_fetch                 117 ns
-map_remove                192 ns
-memory used in map_grow    84.3956 Mbytes
-
-DENSE_HASH_MAP:
-map_grow                   84 ns
-map_predict/grow           22 ns
-map_replace                18 ns
-map_fetch                  13 ns
-map_remove                 23 ns
-memory used in map_grow   256.0000 Mbytes
-
-STANDARD HASH_MAP:
-map_grow                  162 ns
-map_predict/grow          107 ns
-map_replace                44 ns
-map_fetch                  22 ns
-map_remove                124 ns
-memory used in map_grow   204.1643 Mbytes
-
-STANDARD MAP:
-map_grow                  297 ns
-map_predict/grow          282 ns
-map_replace               113 ns
-map_fetch                 113 ns
-map_remove                238 ns
-memory used in map_grow   236.8081 Mbytes
-
- - -

A Note on Hash Functions

- -

For good performance, the Google hash routines depend on a good -hash function: one that distributes data evenly. Many hashtable -implementations come with sub-optimal hash functions that can degrade -performance. For instance, the hash function given in Knuth's _Art of -Computer Programming_, and the default string hash function in SGI's -STL implementation, both distribute certain data sets unevenly, -leading to poor performance.

- -

As an example, in one test of the default SGI STL string hash -function against the Hsieh hash function (see below), for a particular -set of string keys, the Hsieh function resulted in hashtable lookups -that were 20 times as fast as the STLPort hash function. The string -keys were chosen to be "hard" to hash well, so these results may not -be typical, but they are suggestive.

- -

There has been much research over the years into good hash -functions. Here are some hash functions of note.

- - - - - diff --git a/src/sparsehash-1.6/doc/sparse_hash_map.html b/src/sparsehash-1.6/doc/sparse_hash_map.html deleted file mode 100644 index 63055c9..0000000 --- a/src/sparsehash-1.6/doc/sparse_hash_map.html +++ /dev/null @@ -1,1527 +0,0 @@ - - - - - -sparse_hash_map<Key, Data, HashFcn, EqualKey, Alloc> - - - - -

[Note: this document is formatted similarly to the SGI STL -implementation documentation pages, and refers to concepts and classes -defined there. However, neither this document nor the code it -describes is associated with SGI, nor is it necessary to have SGI's -STL implementation installed in order to use this class.]

- - -

sparse_hash_map<Key, Data, HashFcn, EqualKey, Alloc>

- -

sparse_hash_map is a Hashed -Associative Container that associates objects of type Key -with objects of type Data. sparse_hash_map is a Pair -Associative Container, meaning that its value type is pair<const Key, Data>. It is also a -Unique -Associative Container, meaning that no two elements have keys that -compare equal using EqualKey.

- -

Looking up an element in a sparse_hash_map by its key is -efficient, so sparse_hash_map is useful for "dictionaries" -where the order of elements is irrelevant. If it is important for the -elements to be in a particular order, however, then map is more appropriate.

- -

sparse_hash_map is distinguished from other hash-map -implementations by its stingy use of memory and by the ability to save -and restore contents to disk. On the other hand, this hash-map -implementation, while still efficient, is slower than other hash-map -implementations, and it also has requirements -- for instance, for a -distinguished "deleted key" -- that may not be easy for all -applications to satisfy.

- -

This class is appropriate for applications that need to store -large "dictionaries" in memory, or for applications that need these -dictionaries to be persistent.

- - -

Example

- -(Note: this example uses SGI semantics for hash<> --- the kind used by gcc and most Unix compiler suites -- and not -Dinkumware semantics -- the kind used by Microsoft Visual Studio. If -you are using MSVC, this example will not compile as-is: you'll need -to change hash to hash_compare, and you -won't use eqstr at all. See the MSVC documentation for -hash_map and hash_compare, for more -details.) - -
-#include <iostream>
-#include <google/sparse_hash_map>
-
-using google::sparse_hash_map;      // namespace where class lives by default
-using std::cout;
-using std::endl;
-using ext::hash;  // or __gnu_cxx::hash, or maybe tr1::hash, depending on your OS
-
-struct eqstr
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return (s1 == s2) || (s1 && s2 && strcmp(s1, s2) == 0);
-  }
-};
-
-int main()
-{
-  sparse_hash_map<const char*, int, hash<const char*>, eqstr> months;
-  
-  months["january"] = 31;
-  months["february"] = 28;
-  months["march"] = 31;
-  months["april"] = 30;
-  months["may"] = 31;
-  months["june"] = 30;
-  months["july"] = 31;
-  months["august"] = 31;
-  months["september"] = 30;
-  months["october"] = 31;
-  months["november"] = 30;
-  months["december"] = 31;
-  
-  cout << "september -> " << months["september"] << endl;
-  cout << "april     -> " << months["april"] << endl;
-  cout << "june      -> " << months["june"] << endl;
-  cout << "november  -> " << months["november"] << endl;
-}
-
- - -

Definition

- -Defined in the header sparse_hash_map. -This class is not part of the C++ standard, though it is mostly -compatible with the tr1 class unordered_map. - - -

Template parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
- Key - - The hash_map's key type. This is also defined as - sparse_hash_map::key_type. - -   -
- Data - - The hash_map's data type. This is also defined as - sparse_hash_map::data_type. - -   -
- HashFcn - - The hash function used by the - hash_map. This is also defined as sparse_hash_map::hasher. -
Note: Hashtable performance depends heavliy on the choice of - hash function. See the performance - page for more information. -
- hash<Key> -
- EqualKey - - The hash_map key equality function: a binary predicate that determines - whether two keys are equal. This is also defined as - sparse_hash_map::key_equal. - - equal_to<Key> -
- Alloc - - Ignored; this is included only for API-compatibility - with SGI's (and tr1's) STL implementation. - -
- - -

Model of

- -Unique Hashed Associative Container, -Pair Associative Container - - -

Type requirements

- -
    -
  • -Key is Assignable. -
  • -EqualKey is a Binary Predicate whose argument type is Key. -
  • -EqualKey is an equivalence relation. -
  • -Alloc is an Allocator. -
- - -

Public base classes

- -None. - - -

Members

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberWhere definedDescription
- key_type - - Associative - Container - - The sparse_hash_map's key type, Key. -
- data_type - - Pair - Associative Container - - The type of object associated with the keys. -
- value_type - - Pair - Associative Container - - The type of object, pair<const key_type, data_type>, - stored in the hash_map. -
- hasher - - Hashed - Associative Container - - The sparse_hash_map's hash - function. -
- key_equal - - Hashed - Associative Container - - Function - object that compares keys for equality. -
- allocator_type - - Unordered Associative Container (tr1) - - The type of the Allocator given as a template parameter. -
- pointer - - Container - - Pointer to T. -
- reference - - Container - - Reference to T -
- const_reference - - Container - - Const reference to T -
- size_type - - Container - - An unsigned integral type. -
- difference_type - - Container - - A signed integral type. -
- iterator - - Container - - Iterator used to iterate through a sparse_hash_map. [1] -
- const_iterator - - Container - - Const iterator used to iterate through a sparse_hash_map. -
- local_iterator - - Unordered Associative Container (tr1) - - Iterator used to iterate through a subset of - sparse_hash_map. [1] -
- const_local_iterator - - Unordered Associative Container (tr1) - - Const iterator used to iterate through a subset of - sparse_hash_map. -
- iterator begin() - - Container - - Returns an iterator pointing to the beginning of the - sparse_hash_map. -
- iterator end() - - Container - - Returns an iterator pointing to the end of the - sparse_hash_map. -
- const_iterator begin() const - - Container - - Returns an const_iterator pointing to the beginning of the - sparse_hash_map. -
- const_iterator end() const - - Container - - Returns an const_iterator pointing to the end of the - sparse_hash_map. -
- local_iterator begin(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the beginning of bucket - i in the sparse_hash_map. -
- local_iterator end(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the end of bucket - i in the sparse_hash_map. For - sparse_hash_map, each bucket contains either 0 or 1 item. -
- const_local_iterator begin(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the beginning of bucket - i in the sparse_hash_map. -
- const_local_iterator end(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the end of bucket - i in the sparse_hash_map. For - sparse_hash_map, each bucket contains either 0 or 1 item. -
- size_type size() const - - Container - - Returns the size of the sparse_hash_map. -
- size_type max_size() const - - Container - - Returns the largest possible size of the sparse_hash_map. -
- bool empty() const - - Container - - true if the sparse_hash_map's size is 0. -
- size_type bucket_count() const - - Hashed - Associative Container - - Returns the number of buckets used by the sparse_hash_map. -
- size_type max_bucket_count() const - - Hashed - Associative Container - - Returns the largest possible number of buckets used by the sparse_hash_map. -
- size_type bucket_size(size_type i) const - - Unordered Associative Container (tr1) - - Returns the number of elements in bucket i. For - sparse_hash_map, this will be either 0 or 1. -
- size_type bucket(const key_type& key) const - - Unordered Associative Container (tr1) - - If the key exists in the map, returns the index of the bucket - containing the given key, otherwise, return the bucket the key - would be inserted into. - This value may be passed to begin(size_type) and - end(size_type). -
- float load_factor() const - - Unordered Associative Container (tr1) - - The number of elements in the sparse_hash_map divided by - the number of buckets. -
- float max_load_factor() const - - Unordered Associative Container (tr1) - - The maximum load factor before increasing the number of buckets in - the sparse_hash_map. -
- void max_load_factor(float new_grow) - - Unordered Associative Container (tr1) - - Sets the maximum load factor before increasing the number of - buckets in the sparse_hash_map. -
- float min_load_factor() const - - sparse_hash_map - - The minimum load factor before decreasing the number of buckets in - the sparse_hash_map. -
- void min_load_factor(float new_grow) - - sparse_hash_map - - Sets the minimum load factor before decreasing the number of - buckets in the sparse_hash_map. -
- void set_resizing_parameters(float shrink, float grow) - - sparse_hash_map - - DEPRECATED. See below. -
- void resize(size_type n) - - Hashed - Associative Container - - Increases the bucket count to hold at least n items. - [4] [5] -
- void rehash(size_type n) - - Unordered Associative Container (tr1) - - Increases the bucket count to hold at least n items. - This is identical to resize. - [4] [5] -
- hasher hash_funct() const - - Hashed - Associative Container - - Returns the hasher object used by the sparse_hash_map. -
- hasher hash_function() const - - Unordered Associative Container (tr1) - - Returns the hasher object used by the sparse_hash_map. - This is idential to hash_funct. -
- key_equal key_eq() const - - Hashed - Associative Container - - Returns the key_equal object used by the - sparse_hash_map. -
- sparse_hash_map() - - Container - - Creates an empty sparse_hash_map. -
- sparse_hash_map(size_type n) - - Hashed - Associative Container - - Creates an empty sparse_hash_map that's optimized for holding - up to n items. - [5] -
- sparse_hash_map(size_type n, const hasher& h) - - Hashed - Associative Container - - Creates an empty sparse_hash_map that's optimized for up - to n items, using h as the hash function. -
- sparse_hash_map(size_type n, const hasher& h, const - key_equal& k) - - Hashed - Associative Container - - Creates an empty sparse_hash_map that's optimized for up - to n items, using h as the hash function and - k as the key equal function. -
-
template <class InputIterator>
-sparse_hash_map(InputIterator f, InputIterator l) 
-[2] -
- Unique - Hashed Associative Container - - Creates a sparse_hash_map with a copy of a range. -
-
template <class InputIterator>
-sparse_hash_map(InputIterator f, InputIterator l, size_type n) 
-[2] -
- Unique - Hashed Associative Container - - Creates a hash_map with a copy of a range that's optimized to - hold up to n items. -
-
template <class InputIterator>
-sparse_hash_map(InputIterator f, InputIterator l, size_type n, const
-hasher& h) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_map with a copy of a range that's optimized to hold - up to n items, using h as the hash function. -
-
template <class InputIterator>
-sparse_hash_map(InputIterator f, InputIterator l, size_type n, const
-hasher& h, const key_equal& k) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_map with a copy of a range that's optimized for - holding up to n items, using h as the hash - function and k as the key equal function. -
- sparse_hash_map(const hash_map&) - - Container - - The copy constructor. -
- sparse_hash_map& operator=(const hash_map&) - - Container - - The assignment operator -
- void swap(hash_map&) - - Container - - Swaps the contents of two hash_maps. -
-
pair<iterator, bool> insert(const value_type& x)
-
-
- Unique - Associative Container - - Inserts x into the sparse_hash_map. -
-
template <class InputIterator>
-void insert(InputIterator f, InputIterator l) 
[2] -
- Unique - Associative Container - - Inserts a range into the sparse_hash_map. -
- void set_deleted_key(const key_type& key) [6] - - sparse_hash_map - - See below. -
- void clear_deleted_key() [6] - - sparse_hash_map - - See below. -
- void erase(iterator pos) - - Associative - Container - - Erases the element pointed to by pos. - [6] -
- size_type erase(const key_type& k) - - Associative - Container - - Erases the element whose key is k. - [6] -
- void erase(iterator first, iterator last) - - Associative - Container - - Erases all elements in a range. - [6] -
- void clear() - - Associative - Container - - Erases all of the elements. -
- const_iterator find(const key_type& k) const - - Associative - Container - - Finds an element whose key is k. -
- iterator find(const key_type& k) - - Associative - Container - - Finds an element whose key is k. -
- size_type count(const key_type& k) const - - Unique - Associative Container - - Counts the number of elements whose key is k. -
-
pair<const_iterator, const_iterator> equal_range(const
-key_type& k) const 
-
- Associative - Container - - Finds a range containing all elements whose key is k. -
-
pair<iterator, iterator> equal_range(const
-key_type& k) 
-
- Associative - Container - - Finds a range containing all elements whose key is k. -
-
data_type& operator[](const key_type& k) [3] 
-
- sparse_hash_map - - See below. -
- bool write_metadata(FILE *fp) - - sparse_hash_map - - See below. -
- bool read_metadata(FILE *fp) - - sparse_hash_map - - See below. -
- bool write_nopointer_data(FILE *fp) - - sparse_hash_map - - See below. -
- bool read_nopointer_data(FILE *fp) - - sparse_hash_map - - See below. -
-
bool operator==(const hash_map&, const hash_map&)
-
-
- Hashed - Associative Container - - Tests two hash_maps for equality. This is a global function, not a - member function. -
- - -

New members

- -These members are not defined in the Unique -Hashed Associative Container, Pair -Associative Container, or tr1's -Unordered Associative Container requirements, -but are specific to sparse_hash_map. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberDescription
- void set_deleted_key(const key_type& key) - - Sets the distinguished "deleted" key to key. This must be - called before any calls to erase(). [6] -
- void clear_deleted_key() - - Clears the distinguished "deleted" key. After this is called, - calls to erase() are not valid on this object. - [6] -
-
-data_type& 
-operator[](const key_type& k) [3]
-
-
- Returns a reference to the object that is associated with - a particular key. If the sparse_hash_map does not already - contain such an object, operator[] inserts the default - object data_type(). [3] -
- void set_resizing_parameters(float shrink, float grow) - - This function is DEPRECATED. It is equivalent to calling - min_load_factor(shrink); max_load_factor(grow). -
- bool write_metadata(FILE *fp) - - Write hashtable metadata to fp. See below. -
- bool read_metadata(FILE *fp) - - Read hashtable metadata from fp. See below. -
- bool write_nopointer_data(FILE *fp) - - Write hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- bool read_nopointer_data(FILE *fp) - - Read hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- - -

Notes

- -

[1] - -sparse_hash_map::iterator is not a mutable iterator, because -sparse_hash_map::value_type is not Assignable. -That is, if i is of type sparse_hash_map::iterator -and p is of type sparse_hash_map::value_type, then -*i = p is not a valid expression. However, -sparse_hash_map::iterator isn't a constant iterator either, -because it can be used to modify the object that it points to. Using -the same notation as above, (*i).second = p is a valid -expression.

- -

[2] - -This member function relies on member template functions, which -may not be supported by all compilers. If your compiler supports -member templates, you can call this function with any type of input -iterator. If your compiler does not yet support member templates, -though, then the arguments must either be of type const -value_type* or of type sparse_hash_map::const_iterator.

- -

[3] - -Since operator[] might insert a new element into the -sparse_hash_map, it can't possibly be a const member -function. Note that the definition of operator[] is -extremely simple: m[k] is equivalent to -(*((m.insert(value_type(k, data_type()))).first)).second. -Strictly speaking, this member function is unnecessary: it exists only -for convenience.

- -

[4] - -In order to preserve iterators, erasing hashtable elements does not -cause a hashtable to resize. This means that after a string of -erase() calls, the hashtable will use more space than is -required. At a cost of invalidating all current iterators, you can -call resize() to manually compact the hashtable. The -hashtable promotes too-small resize() arguments to the -smallest legal value, so to compact a hashtable, it's sufficient to -call resize(0). - -

[5] - -Unlike some other hashtable implementations, the optional n in -the calls to the constructor, resize, and rehash -indicates not the desired number of buckets that -should be allocated, but instead the expected number of items to be -inserted. The class then sizes the hash-map appropriately for the -number of items specified. It's not an error to actually insert more -or fewer items into the hashtable, but the implementation is most -efficient -- does the fewest hashtable resizes -- if the number of -inserted items is n or slightly less.

- -

[6] - -sparse_hash_map requires you call -set_deleted_key() before calling erase(). (This is -the largest difference between the sparse_hash_map API and -other hash-map APIs. See implementation.html -for why this is necessary.) -The argument to set_deleted_key() should be a key-value that -is never used for legitimate hash-map entries. It is an error to call -erase() without first calling set_deleted_key(), and -it is also an error to call insert() with an item whose key -is the "deleted key."

- -

There is no need to call set_deleted_key if you do not -wish to call erase() on the hash-map.

- -

It is acceptable to change the deleted-key at any time by calling -set_deleted_key() with a new argument. You can also call -clear_deleted_key(), at which point all keys become valid for -insertion but no hashtable entries can be deleted until -set_deleted_key() is called again.

- -

Note: If you use set_deleted_key, it is also -necessary that data_type has a zero-argument default -constructor. This is because sparse_hash_map uses the -special value pair(deleted_key, data_type()) to denote -deleted buckets, and thus needs to be able to create -data_type using a zero-argument constructor.

- -

If your data_type does not have a zero-argument default -constructor, there are several workarounds:

-
    -
  • Store a pointer to data_type in the map, instead of - data_type directly. This may yield faster code as - well, since hashtable-resizes will just have to move pointers - around, rather than copying the entire data_type. -
  • Add a zero-argument default constructor to data_type. -
  • Subclass data_type and add a zero-argument default - constructor to the subclass. -
- -

If you do not use set_deleted_key, then there is no -requirement that data_type havea zero-argument default -constructor. - - -

Input/Output

- -

It is possible to save and restore sparse_hash_map objects -to disk. Storage takes place in two steps. The first writes the -hashtable metadata. The second writes the actual data.

- -

To write a hashtable to disk, first call write_metadata() -on an open file pointer. This saves the hashtable information in a -byte-order-independent format.

- -

After the metadata has been written to disk, you must write the -actual data stored in the hash-map to disk. If both the key and data -are "simple" enough, you can do this by calling -write_nopointer_data(). "Simple" data is data that can be -safely copied to disk via fwrite(). Native C data types fall -into this category, as do structs of native C data types. Pointers -and STL objects do not.

- -

Note that write_nopointer_data() does not do any endian -conversion. Thus, it is only appropriate when you intend to read the -data on the same endian architecture as you write the data.

- -

If you cannot use write_nopointer_data() for any reason, -you can write the data yourself by iterating over the -sparse_hash_map with a const_iterator and writing -the key and data in any manner you wish.

- -

To read the hashtable information from disk, first you must create -a sparse_hash_map object. Then open a file pointer to point -to the saved hashtable, and call read_metadata(). If you -saved the data via write_nopointer_data(), you can follow the -read_metadata() call with a call to -read_nopointer_data(). This is all that is needed.

- -

If you saved the data through a custom write routine, you must call -a custom read routine to read in the data. To do this, iterate over -the sparse_hash_map with an iterator; this operation -is sensical because the metadata has already been set up. For each -iterator item, you can read the key and value from disk, and set it -appropriately. You will need to do a const_cast on the -iterator, since it->first is always const. You -will also need to use placement-new if the key or value is a C++ -object. The code might look like this:

-
-   for (sparse_hash_map<int*, ComplicatedClass>::iterator it = ht.begin();
-        it != ht.end(); ++it) {
-       // The key is stored in the sparse_hash_map as a pointer
-       const_cast<int*>(it->first) = new int;
-       fread(const_cast<int*>(it->first), sizeof(int), 1, fp);
-       // The value is a complicated C++ class that takes an int to construct
-       int ctor_arg;
-       fread(&ctor_arg, sizeof(int), 1, fp);
-       new (&it->second) ComplicatedClass(ctor_arg);  // "placement new"
-   }
-
- - -

Validity of Iterators

- -

erase() is guaranteed not to invalidate any iterators -- -except for any iterators pointing to the item being erased, of course. -insert() invalidates all iterators, as does -resize().

- -

This is implemented by making erase() not resize the -hashtable. If you desire maximum space efficiency, you can call -resize(0) after a string of erase() calls, to force -the hashtable to resize to the smallest possible size.

- -

In addition to invalidating iterators, insert() -and resize() invalidate all pointers into the hashtable. If -you want to store a pointer to an object held in a sparse_hash_map, -either do so after finishing hashtable inserts, or store the object on -the heap and a pointer to it in the sparse_hash_map.

- - -

See also

- -

The following are SGI STL, and some Google STL, concepts and -classes related to sparse_hash_map.

- -hash_map, -Associative Container, -Hashed Associative Container, -Pair Associative Container, -Unique Hashed Associative Container, -set, -map -multiset, -multimap, -hash_set, -hash_multiset, -hash_multimap, -sparsetable, -sparse_hash_set, -dense_hash_set, -dense_hash_map - - - diff --git a/src/sparsehash-1.6/doc/sparse_hash_set.html b/src/sparsehash-1.6/doc/sparse_hash_set.html deleted file mode 100644 index 70c7721..0000000 --- a/src/sparsehash-1.6/doc/sparse_hash_set.html +++ /dev/null @@ -1,1376 +0,0 @@ - - - - - -sparse_hash_set<Key, HashFcn, EqualKey, Alloc> - - - - -

[Note: this document is formatted similarly to the SGI STL -implementation documentation pages, and refers to concepts and classes -defined there. However, neither this document nor the code it -describes is associated with SGI, nor is it necessary to have SGI's -STL implementation installed in order to use this class.]

- - -

sparse_hash_set<Key, HashFcn, EqualKey, Alloc>

- -

sparse_hash_set is a Hashed -Associative Container that stores objects of type Key. -sparse_hash_set is a Simple -Associative Container, meaning that its value type, as well as its -key type, is key. It is also a -Unique -Associative Container, meaning that no two elements have keys that -compare equal using EqualKey.

- -

Looking up an element in a sparse_hash_set by its key is -efficient, so sparse_hash_set is useful for "dictionaries" -where the order of elements is irrelevant. If it is important for the -elements to be in a particular order, however, then map is more appropriate.

- -

sparse_hash_set is distinguished from other hash-set -implementations by its stingy use of memory and by the ability to save -and restore contents to disk. On the other hand, this hash-set -implementation, while still efficient, is slower than other hash-set -implementations, and it also has requirements -- for instance, for a -distinguished "deleted key" -- that may not be easy for all -applications to satisfy.

- -

This class is appropriate for applications that need to store -large "dictionaries" in memory, or for applications that need these -dictionaries to be persistent.

- - -

Example

- -(Note: this example uses SGI semantics for hash<> --- the kind used by gcc and most Unix compiler suites -- and not -Dinkumware semantics -- the kind used by Microsoft Visual Studio. If -you are using MSVC, this example will not compile as-is: you'll need -to change hash to hash_compare, and you -won't use eqstr at all. See the MSVC documentation for -hash_map and hash_compare, for more -details.) - -
-#include <iostream>
-#include <google/sparse_hash_set>
-
-using google::sparse_hash_set;      // namespace where class lives by default
-using std::cout;
-using std::endl;
-using ext::hash;  // or __gnu_cxx::hash, or maybe tr1::hash, depending on your OS
-
-struct eqstr
-{
-  bool operator()(const char* s1, const char* s2) const
-  {
-    return (s1 == s2) || (s1 && s2 && strcmp(s1, s2) == 0);
-  }
-};
-
-void lookup(const hash_set<const char*, hash<const char*>, eqstr>& Set,
-            const char* word)
-{
-  sparse_hash_set<const char*, hash<const char*>, eqstr>::const_iterator it
-    = Set.find(word);
-  cout << word << ": "
-       << (it != Set.end() ? "present" : "not present")
-       << endl;
-}
-
-int main()
-{
-  sparse_hash_set<const char*, hash<const char*>, eqstr> Set;
-  Set.insert("kiwi");
-  Set.insert("plum");
-  Set.insert("apple");
-  Set.insert("mango");
-  Set.insert("apricot");
-  Set.insert("banana");
-
-  lookup(Set, "mango");
-  lookup(Set, "apple");
-  lookup(Set, "durian");
-}
-
- - -

Definition

- -Defined in the header sparse_hash_set. -This class is not part of the C++ standard, though it is mostly -compatible with the tr1 class unordered_set. - - -

Template parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
- Key - - The hash_set's key and value type. This is also defined as - sparse_hash_set::key_type and - sparse_hash_set::value_type. - -   -
- HashFcn - - The hash function used by the - hash_set. This is also defined as sparse_hash_set::hasher. -
Note: Hashtable performance depends heavliy on the choice of - hash function. See the performance - page for more information. -
- hash<Key> -
- EqualKey - - The hash_set key equality function: a binary predicate that determines - whether two keys are equal. This is also defined as - sparse_hash_set::key_equal. - - equal_to<Key> -
- Alloc - - Ignored; this is included only for API-compatibility - with SGI's (and tr1's) STL implementation. - -
- - -

Model of

- -Unique Hashed Associative Container, -Simple Associative Container - - -

Type requirements

- -
    -
  • -Key is Assignable. -
  • -EqualKey is a Binary Predicate whose argument type is Key. -
  • -EqualKey is an equivalence relation. -
  • -Alloc is an Allocator. -
- - -

Public base classes

- -None. - - -

Members

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberWhere definedDescription
- value_type - - Container - - The type of object, T, stored in the hash_set. -
- key_type - - Associative - Container - - The key type associated with value_type. -
- hasher - - Hashed - Associative Container - - The sparse_hash_set's hash - function. -
- key_equal - - Hashed - Associative Container - - Function - object that compares keys for equality. -
- allocator_type - - Unordered Associative Container (tr1) - - The type of the Allocator given as a template parameter. -
- pointer - - Container - - Pointer to T. -
- reference - - Container - - Reference to T -
- const_reference - - Container - - Const reference to T -
- size_type - - Container - - An unsigned integral type. -
- difference_type - - Container - - A signed integral type. -
- iterator - - Container - - Iterator used to iterate through a sparse_hash_set. -
- const_iterator - - Container - - Const iterator used to iterate through a sparse_hash_set. - (iterator and const_iterator are the same type.) -
- local_iterator - - Unordered Associative Container (tr1) - - Iterator used to iterate through a subset of - sparse_hash_set. -
- const_local_iterator - - Unordered Associative Container (tr1) - - Const iterator used to iterate through a subset of - sparse_hash_set. -
- iterator begin() const - - Container - - Returns an iterator pointing to the beginning of the - sparse_hash_set. -
- iterator end() const - - Container - - Returns an iterator pointing to the end of the - sparse_hash_set. -
- local_iterator begin(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the beginning of bucket - i in the sparse_hash_set. -
- local_iterator end(size_type i) - - Unordered Associative Container (tr1) - - Returns a local_iterator pointing to the end of bucket - i in the sparse_hash_set. For - sparse_hash_set, each bucket contains either 0 or 1 item. -
- const_local_iterator begin(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the beginning of bucket - i in the sparse_hash_set. -
- const_local_iterator end(size_type i) const - - Unordered Associative Container (tr1) - - Returns a const_local_iterator pointing to the end of bucket - i in the sparse_hash_set. For - sparse_hash_set, each bucket contains either 0 or 1 item. -
- size_type size() const - - Container - - Returns the size of the sparse_hash_set. -
- size_type max_size() const - - Container - - Returns the largest possible size of the sparse_hash_set. -
- bool empty() const - - Container - - true if the sparse_hash_set's size is 0. -
- size_type bucket_count() const - - Hashed - Associative Container - - Returns the number of buckets used by the sparse_hash_set. -
- size_type max_bucket_count() const - - Hashed - Associative Container - - Returns the largest possible number of buckets used by the sparse_hash_set. -
- size_type bucket_size(size_type i) const - - Unordered Associative Container (tr1) - - Returns the number of elements in bucket i. For - sparse_hash_set, this will be either 0 or 1. -
- size_type bucket(const key_type& key) const - - Unordered Associative Container (tr1) - - If the key exists in the map, returns the index of the bucket - containing the given key, otherwise, return the bucket the key - would be inserted into. - This value may be passed to begin(size_type) and - end(size_type). -
- float load_factor() const - - Unordered Associative Container (tr1) - - The number of elements in the sparse_hash_set divided by - the number of buckets. -
- float max_load_factor() const - - Unordered Associative Container (tr1) - - The maximum load factor before increasing the number of buckets in - the sparse_hash_set. -
- void max_load_factor(float new_grow) - - Unordered Associative Container (tr1) - - Sets the maximum load factor before increasing the number of - buckets in the sparse_hash_set. -
- float min_load_factor() const - - sparse_hash_set - - The minimum load factor before decreasing the number of buckets in - the sparse_hash_set. -
- void min_load_factor(float new_grow) - - sparse_hash_set - - Sets the minimum load factor before decreasing the number of - buckets in the sparse_hash_set. -
- void set_resizing_parameters(float shrink, float grow) - - sparse_hash_set - - DEPRECATED. See below. -
- void resize(size_type n) - - Hashed - Associative Container - - Increases the bucket count to hold at least n items. - [2] [3] -
- void rehash(size_type n) - - Unordered Associative Container (tr1) - - Increases the bucket count to hold at least n items. - This is identical to resize. - [2] [3] -
- hasher hash_funct() const - - Hashed - Associative Container - - Returns the hasher object used by the sparse_hash_set. -
- hasher hash_function() const - - Unordered Associative Container (tr1) - - Returns the hasher object used by the sparse_hash_set. - This is idential to hash_funct. -
- key_equal key_eq() const - - Hashed - Associative Container - - Returns the key_equal object used by the - sparse_hash_set. -
- sparse_hash_set() - - Container - - Creates an empty sparse_hash_set. -
- sparse_hash_set(size_type n) - - Hashed - Associative Container - - Creates an empty sparse_hash_set that's optimized for holding - up to n items. - [3] -
- sparse_hash_set(size_type n, const hasher& h) - - Hashed - Associative Container - - Creates an empty sparse_hash_set that's optimized for up - to n items, using h as the hash function. -
- sparse_hash_set(size_type n, const hasher& h, const - key_equal& k) - - Hashed - Associative Container - - Creates an empty sparse_hash_set that's optimized for up - to n items, using h as the hash function and - k as the key equal function. -
-
template <class InputIterator>
-sparse_hash_set(InputIterator f, InputIterator l) 
-[2] -
- Unique - Hashed Associative Container - - Creates a sparse_hash_set with a copy of a range. -
-
template <class InputIterator>
-sparse_hash_set(InputIterator f, InputIterator l, size_type n) 
-[2] -
- Unique - Hashed Associative Container - - Creates a hash_set with a copy of a range that's optimized to - hold up to n items. -
-
template <class InputIterator>
-sparse_hash_set(InputIterator f, InputIterator l, size_type n, const
-hasher& h) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_set with a copy of a range that's optimized to hold - up to n items, using h as the hash function. -
-
template <class InputIterator>
-sparse_hash_set(InputIterator f, InputIterator l, size_type n, const
-hasher& h, const key_equal& k) 
[2] -
- Unique - Hashed Associative Container - - Creates a hash_set with a copy of a range that's optimized for - holding up to n items, using h as the hash - function and k as the key equal function. -
- sparse_hash_set(const hash_set&) - - Container - - The copy constructor. -
- sparse_hash_set& operator=(const hash_set&) - - Container - - The assignment operator -
- void swap(hash_set&) - - Container - - Swaps the contents of two hash_sets. -
-
pair<iterator, bool> insert(const value_type& x)
-
-
- Unique - Associative Container - - Inserts x into the sparse_hash_set. -
-
template <class InputIterator>
-void insert(InputIterator f, InputIterator l) 
[2] -
- Unique - Associative Container - - Inserts a range into the sparse_hash_set. -
- void set_deleted_key(const key_type& key) [4] - - sparse_hash_set - - See below. -
- void clear_deleted_key() [4] - - sparse_hash_set - - See below. -
- void erase(iterator pos) - - Associative - Container - - Erases the element pointed to by pos. - [4] -
- size_type erase(const key_type& k) - - Associative - Container - - Erases the element whose key is k. - [4] -
- void erase(iterator first, iterator last) - - Associative - Container - - Erases all elements in a range. - [4] -
- void clear() - - Associative - Container - - Erases all of the elements. -
- iterator find(const key_type& k) const - - Associative - Container - - Finds an element whose key is k. -
- size_type count(const key_type& k) const - - Unique - Associative Container - - Counts the number of elements whose key is k. -
-
pair<iterator, iterator> equal_range(const
-key_type& k) const
-
- Associative - Container - - Finds a range containing all elements whose key is k. -
- bool write_metadata(FILE *fp) - - sparse_hash_set - - See below. -
- bool read_metadata(FILE *fp) - - sparse_hash_set - - See below. -
- bool write_nopointer_data(FILE *fp) - - sparse_hash_set - - See below. -
- bool read_nopointer_data(FILE *fp) - - sparse_hash_set - - See below. -
-
bool operator==(const hash_set&, const hash_set&)
-
-
- Hashed - Associative Container - - Tests two hash_sets for equality. This is a global function, not a - member function. -
- - -

New members

- -These members are not defined in the Unique -Hashed Associative Container, Simple -Associative Container, or tr1's Unordered Associative -Container requirements, but are specific to -sparse_hash_set. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberDescription
- void set_deleted_key(const key_type& key) - - Sets the distinguished "deleted" key to key. This must be - called before any calls to erase(). [4] -
- void clear_deleted_key() - - Clears the distinguished "deleted" key. After this is called, - calls to erase() are not valid on this object. - [4] -
- void set_resizing_parameters(float shrink, float grow) - - This function is DEPRECATED. It is equivalent to calling - min_load_factor(shrink); max_load_factor(grow). -
- bool write_metadata(FILE *fp) - - Write hashtable metadata to fp. See below. -
- bool read_metadata(FILE *fp) - - Read hashtable metadata from fp. See below. -
- bool write_nopointer_data(FILE *fp) - - Write hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- bool read_nopointer_data(FILE *fp) - - Read hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- - -

Notes

- -

[1] - -This member function relies on member template functions, which -may not be supported by all compilers. If your compiler supports -member templates, you can call this function with any type of input -iterator. If your compiler does not yet support member templates, -though, then the arguments must either be of type const -value_type* or of type sparse_hash_set::const_iterator.

- -

[2] - -In order to preserve iterators, erasing hashtable elements does not -cause a hashtable to resize. This means that after a string of -erase() calls, the hashtable will use more space than is -required. At a cost of invalidating all current iterators, you can -call resize() to manually compact the hashtable. The -hashtable promotes too-small resize() arguments to the -smallest legal value, so to compact a hashtable, it's sufficient to -call resize(0). - -

[3] - -Unlike some other hashtable implementations, the optional n in -the calls to the constructor, resize, and rehash -indicates not the desired number of buckets that -should be allocated, but instead the expected number of items to be -inserted. The class then sizes the hash-set appropriately for the -number of items specified. It's not an error to actually insert more -or fewer items into the hashtable, but the implementation is most -efficient -- does the fewest hashtable resizes -- if the number of -inserted items is n or slightly less.

- -

[4] - -sparse_hash_set requires you call -set_deleted_key() before calling erase(). (This is -the largest difference between the sparse_hash_set API and -other hash-set APIs. See implementation.html -for why this is necessary.) -The argument to set_deleted_key() should be a key-value that -is never used for legitimate hash-set entries. It is an error to call -erase() without first calling set_deleted_key(), and -it is also an error to call insert() with an item whose key -is the "deleted key."

- -

There is no need to call set_deleted_key if you do not -wish to call erase() on the hash-set.

- -

It is acceptable to change the deleted-key at any time by calling -set_deleted_key() with a new argument. You can also call -clear_deleted_key(), at which point all keys become valid for -insertion but no hashtable entries can be deleted until -set_deleted_key() is called again.

- - -

Input/Output

- -

It is possible to save and restore sparse_hash_set objects -to disk. Storage takes place in two steps. The first writes the -hashtable metadata. The second writes the actual data.

- -

To write a hashtable to disk, first call write_metadata() -on an open file pointer. This saves the hashtable information in a -byte-order-independent format.

- -

After the metadata has been written to disk, you must write the -actual data stored in the hash-set to disk. If both the key and data -are "simple" enough, you can do this by calling -write_nopointer_data(). "Simple" data is data that can be -safely copied to disk via fwrite(). Native C data types fall -into this category, as do structs of native C data types. Pointers -and STL objects do not.

- -

Note that write_nopointer_data() does not do any endian -conversion. Thus, it is only appropriate when you intend to read the -data on the same endian architecture as you write the data.

- -

If you cannot use write_nopointer_data() for any reason, -you can write the data yourself by iterating over the -sparse_hash_set with a const_iterator and writing -the key and data in any manner you wish.

- -

To read the hashtable information from disk, first you must create -a sparse_hash_set object. Then open a file pointer to point -to the saved hashtable, and call read_metadata(). If you -saved the data via write_nopointer_data(), you can follow the -read_metadata() call with a call to -read_nopointer_data(). This is all that is needed.

- -

If you saved the data through a custom write routine, you must call -a custom read routine to read in the data. To do this, iterate over -the sparse_hash_set with an iterator; this operation -is sensical because the metadata has already been set up. For each -iterator item, you can read the key and value from disk, and set it -appropriately. You will need to do a const_cast on the -iterator, since *it is always const. The -code might look like this:

-
-   for (sparse_hash_set<int*>::iterator it = ht.begin();
-        it != ht.end(); ++it) {
-       const_cast<int*>(*it) = new int;
-       fread(const_cast<int*>(*it), sizeof(int), 1, fp);
-   }
-
- -

Here's another example, where the item stored in the hash-set is -a C++ object with a non-trivial constructor. In this case, you must -use "placement new" to construct the object at the correct memory -location.

-
-   for (sparse_hash_set<ComplicatedClass>::iterator it = ht.begin();
-        it != ht.end(); ++it) {
-       int ctor_arg;  // ComplicatedClass takes an int as its constructor arg
-       fread(&ctor_arg, sizeof(int), 1, fp);
-       new (const_cast<ComplicatedClass*>(&(*it))) ComplicatedClass(ctor_arg);
-   }
-
- - -

Validity of Iterators

- -

erase() is guaranteed not to invalidate any iterators -- -except for any iterators pointing to the item being erased, of course. -insert() invalidates all iterators, as does -resize().

- -

This is implemented by making erase() not resize the -hashtable. If you desire maximum space efficiency, you can call -resize(0) after a string of erase() calls, to force -the hashtable to resize to the smallest possible size.

- -

In addition to invalidating iterators, insert() -and resize() invalidate all pointers into the hashtable. If -you want to store a pointer to an object held in a sparse_hash_set, -either do so after finishing hashtable inserts, or store the object on -the heap and a pointer to it in the sparse_hash_set.

- - -

See also

- -

The following are SGI STL, and some Google STL, concepts and -classes related to sparse_hash_set.

- -hash_set, -Associative Container, -Hashed Associative Container, -Simple Associative Container, -Unique Hashed Associative Container, -set, -map -multiset, -multimap, -hash_map, -hash_multiset, -hash_multimap, -sparsetable, -sparse_hash_map, -dense_hash_set, -dense_hash_map - - - diff --git a/src/sparsehash-1.6/doc/sparsetable.html b/src/sparsehash-1.6/doc/sparsetable.html deleted file mode 100644 index d8c8364..0000000 --- a/src/sparsehash-1.6/doc/sparsetable.html +++ /dev/null @@ -1,1393 +0,0 @@ - - - - - -sparsetable<T, GROUP_SIZE> - - - - -

[Note: this document is formatted similarly to the SGI STL -implementation documentation pages, and refers to concepts and classes -defined there. However, neither this document nor the code it -describes is associated with SGI, nor is it necessary to have SGI's -STL implementation installed in order to use this class.]

- -

sparsetable<T, GROUP_SIZE>

- -

A sparsetable is a Random -Access Container that supports constant time random access to -elements, and constant time insertion and removal of elements. It -implements the "array" or "table" abstract data type. The number of -elements in a sparsetable is set at constructor time, though -you can change it at any time by calling resize().

- -

sparsetable is distinguished from other array -implementations, including the default C implementation, in its stingy -use of memory -- in particular, unused array elements require only 1 bit -of disk space to store, rather than sizeof(T) bytes -- and by -the ability to save and restore contents to disk. On the other hand, -this array implementation, while still efficient, is slower than other -array implementations.

- - -

A sparsetable distinguishes between table elements that -have been assigned and those that are unassigned. -Assigned table elements are those that have had a value set via -set(), operator(), assignment via an iterator, and -so forth. Unassigned table elements are those that have not had a -value set in one of these ways, or that have been explicitly -unassigned via a call to erase() or clear(). Lookup -is valid on both assigned and unassigned table elements; for -unassigned elements, lookup returns the default value -T().

-
- -

This class is appropriate for applications that need to store large -arrays in memory, or for applications that need these arrays to be -persistent.

- - -

Example

- -
-#include <google/sparsetable>
-
-using google::sparsetable;      // namespace where class lives by default
-
-sparsetable<int> t(100);
-t[5] = 6;
-cout << "t[5] = " << t[5];
-cout << "Default value = " << t[99];
-
- - -

Definition

- -Defined in the header sparsetable. This -class is not part of the C++ standard. - - -

Template parameters

- - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
- T - - The sparsetable's value type: the type of object that is stored in - the table. - -   -
- GROUP_SIZE - - The number of elements in each sparsetable group (see the implementation doc for more details - on this value). This almost never need be specified; the default - template parameter value works well in all situations. - -   -
- - -

Model of

- -Random Access Container - - -

Type requirements

- -None, except for those imposed by the requirements of -Random -Access Container - - -

Public base classes

- -None. - - -

Members

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberWhere definedDescription
- value_type - - Container - - The type of object, T, stored in the table. -
- pointer - - Container - - Pointer to T. -
- reference - - Container - - Reference to T. -
- const_reference - - Container - - Const reference to T. -
- size_type - - Container - - An unsigned integral type. -
- difference_type - - Container - - A signed integral type. -
- iterator - - Container - - Iterator used to iterate through a sparsetable. -
- const_iterator - - Container - - Const iterator used to iterate through a sparsetable. -
- reverse_iterator - - Reversible - Container - - Iterator used to iterate backwards through a sparsetable. -
- const_reverse_iterator - - Reversible - Container - - Const iterator used to iterate backwards through a - sparsetable. -
- nonempty_iterator - - sparsetable - - Iterator used to iterate through the - assigned elements of the - sparsetable. -
- const_nonempty_iterator - - sparsetable - - Const iterator used to iterate through the - assigned elements of the - sparsetable. -
- reverse_nonempty_iterator - - sparsetable - - Iterator used to iterate backwards through the - assigned elements of the - sparsetable. -
- const_reverse_nonempty_iterator - - sparsetable - - Const iterator used to iterate backwards through the - assigned elements of the - sparsetable. -
- destructive_iterator - - sparsetable - - Iterator used to iterate through the - assigned elements of the - sparsetable, erasing elements as it iterates. - [1] -
- iterator begin() - - Container - - Returns an iterator pointing to the beginning of the - sparsetable. -
- iterator end() - - Container - - Returns an iterator pointing to the end of the - sparsetable. -
- const_iterator begin() const - - Container - - Returns an const_iterator pointing to the beginning of the - sparsetable. -
- const_iterator end() const - - Container - - Returns an const_iterator pointing to the end of the - sparsetable. -
- reverse_iterator rbegin() - - Reversible - Container - - Returns a reverse_iterator pointing to the beginning of the - reversed sparsetable. -
- reverse_iterator rend() - - Reversible - Container - - Returns a reverse_iterator pointing to the end of the - reversed sparsetable. -
- const_reverse_iterator rbegin() const - - Reversible - Container - - Returns a const_reverse_iterator pointing to the beginning - of the reversed sparsetable. -
- const_reverse_iterator rend() const - - Reversible - Container - - Returns a const_reverse_iterator pointing to the end of - the reversed sparsetable. -
- nonempty_iterator nonempty_begin() - - sparsetable - - Returns a nonempty_iterator pointing to the first - assigned element of the - sparsetable. -
- nonempty_iterator nonempty_end() - - sparsetable - - Returns a nonempty_iterator pointing to the end of the - sparsetable. -
- const_nonempty_iterator nonempty_begin() const - - sparsetable - - Returns a const_nonempty_iterator pointing to the first - assigned element of the - sparsetable. -
- const_nonempty_iterator nonempty_end() const - - sparsetable - - Returns a const_nonempty_iterator pointing to the end of - the sparsetable. -
- reverse_nonempty_iterator nonempty_rbegin() - - sparsetable - - Returns a reverse_nonempty_iterator pointing to the first - assigned element of the reversed - sparsetable. -
- reverse_nonempty_iterator nonempty_rend() - - sparsetable - - Returns a reverse_nonempty_iterator pointing to the end of - the reversed sparsetable. -
- const_reverse_nonempty_iterator nonempty_rbegin() const - - sparsetable - - Returns a const_reverse_nonempty_iterator pointing to the - first assigned element of the reversed - sparsetable. -
- const_reverse_nonempty_iterator nonempty_rend() const - - sparsetable - - Returns a const_reverse_nonempty_iterator pointing to the - end of the reversed sparsetable. -
- destructive_iterator destructive_begin() - - sparsetable - - Returns a destructive_iterator pointing to the first - assigned element of the - sparsetable. -
- destructive_iterator destructive_end() - - sparsetable - - Returns a destructive_iterator pointing to the end of - the sparsetable. -
- size_type size() const - - Container - - Returns the size of the sparsetable. -
- size_type max_size() const - - Container - - Returns the largest possible size of the sparsetable. -
- bool empty() const - - Container - - true if the sparsetable's size is 0. -
- size_type num_nonempty() const - - sparsetable - - Returns the number of sparsetable elements that are currently assigned. -
- sparsetable(size_type n) - - Container - - Creates a sparsetable with n elements. -
- sparsetable(const sparsetable&) - - Container - - The copy constructor. -
- ~sparsetable() - - Container - - The destructor. -
- sparsetable& operator=(const sparsetable&) - - Container - - The assignment operator -
- void swap(sparsetable&) - - Container - - Swaps the contents of two sparsetables. -
- reference operator[](size_type n) - - Random - Access Container - - Returns the n'th element. [2] -
- const_reference operator[](size_type n) const - - Random - Access Container - - Returns the n'th element. -
- bool test(size_type i) const - - sparsetable - - true if the i'th element of the sparsetable is assigned. -
- bool test(iterator pos) const - - sparsetable - - true if the sparsetable element pointed to by pos - is assigned. -
- bool test(const_iterator pos) const - - sparsetable - - true if the sparsetable element pointed to by pos - is assigned. -
- const_reference get(size_type i) const - - sparsetable - - returns the i'th element of the sparsetable. -
- reference set(size_type i, const_reference val) - - sparsetable - - Sets the i'th element of the sparsetable to value - val. -
- void erase(size_type i) - - sparsetable - - Erases the i'th element of the sparsetable. -
- void erase(iterator pos) - - sparsetable - - Erases the element of the sparsetable pointed to by - pos. -
- void erase(iterator first, iterator last) - - sparsetable - - Erases the elements of the sparsetable in the range - [first, last). -
- void clear() - - sparsetable - - Erases all of the elements. -
- void resize(size_type n) - - sparsetable - - Changes the size of sparsetable to n. -
- bool write_metadata(FILE *fp) - - sparsetable - - See below. -
- bool read_metadata(FILE *fp) - - sparsetable - - See below. -
- bool write_nopointer_data(FILE *fp) - - sparsetable - - See below. -
- bool read_nopointer_data(FILE *fp) - - sparsetable - - See below. -
-
bool operator==(const sparsetable&, const sparsetable&)
-
-
- Forward - Container - - Tests two sparsetables for equality. This is a global function, - not a member function. -
-
bool operator<(const sparsetable&, const sparsetable&)
-
-
- Forward - Container - - Lexicographical comparison. This is a global function, - not a member function. -
- - -

New members

- -These members are not defined in the Random -Access Container requirement, but are specific to -sparsetable. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MemberDescription
- nonempty_iterator - - Iterator used to iterate through the - assigned elements of the - sparsetable. -
- const_nonempty_iterator - - Const iterator used to iterate through the - assigned elements of the - sparsetable. -
- reverse_nonempty_iterator - - Iterator used to iterate backwards through the - assigned elements of the - sparsetable. -
- const_reverse_nonempty_iterator - - Const iterator used to iterate backwards through the - assigned elements of the - sparsetable. -
- destructive_iterator - - Iterator used to iterate through the - assigned elements of the - sparsetable, erasing elements as it iterates. - [1] -
- nonempty_iterator nonempty_begin() - - Returns a nonempty_iterator pointing to the first - assigned element of the - sparsetable. -
- nonempty_iterator nonempty_end() - - Returns a nonempty_iterator pointing to the end of the - sparsetable. -
- const_nonempty_iterator nonempty_begin() const - - Returns a const_nonempty_iterator pointing to the first - assigned element of the - sparsetable. -
- const_nonempty_iterator nonempty_end() const - - Returns a const_nonempty_iterator pointing to the end of - the sparsetable. -
- reverse_nonempty_iterator nonempty_rbegin() - - Returns a reverse_nonempty_iterator pointing to the first - assigned element of the reversed - sparsetable. -
- reverse_nonempty_iterator nonempty_rend() - - Returns a reverse_nonempty_iterator pointing to the end of - the reversed sparsetable. -
- const_reverse_nonempty_iterator nonempty_rbegin() const - - Returns a const_reverse_nonempty_iterator pointing to the - first assigned element of the reversed - sparsetable. -
- const_reverse_nonempty_iterator nonempty_rend() const - - Returns a const_reverse_nonempty_iterator pointing to the - end of the reversed sparsetable. -
- destructive_iterator destructive_begin() - - Returns a destructive_iterator pointing to the first - assigned element of the - sparsetable. -
- destructive_iterator destructive_end() - - Returns a destructive_iterator pointing to the end of - the sparsetable. -
- size_type num_nonempty() const - - Returns the number of sparsetable elements that are currently assigned. -
- bool test(size_type i) const - - true if the i'th element of the sparsetable is assigned. -
- bool test(iterator pos) const - - true if the sparsetable element pointed to by pos - is assigned. -
- bool test(const_iterator pos) const - - true if the sparsetable element pointed to by pos - is assigned. -
- const_reference get(size_type i) const - - returns the i'th element of the sparsetable. If - the i'th element is assigned, the - assigned value is returned, otherwise, the default value - T() is returned. -
- reference set(size_type i, const_reference val) - - Sets the i'th element of the sparsetable to value - val, and returns a reference to the i'th element - of the table. This operation causes the i'th element to - be assigned. -
- void erase(size_type i) - - Erases the i'th element of the sparsetable. This - operation causes the i'th element to be unassigned. -
- void erase(iterator pos) - - Erases the element of the sparsetable pointed to by - pos. This operation causes the i'th element to - be unassigned. -
- void erase(iterator first, iterator last) - - Erases the elements of the sparsetable in the range - [first, last). This operation causes these elements to - be unassigned. -
- void clear() - - Erases all of the elements. This causes all elements to be - unassigned. -
- void resize(size_type n) - - Changes the size of sparsetable to n. If n is - greater than the old size, new, unassigned - elements are appended. If n is less than the old size, - all elements in position >n are deleted. -
- bool write_metadata(FILE *fp) - - Write hashtable metadata to fp. See below. -
- bool read_metadata(FILE *fp) - - Read hashtable metadata from fp. See below. -
- bool write_nopointer_data(FILE *fp) - - Write hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- bool read_nopointer_data(FILE *fp) - - Read hashtable contents to fp. This is valid only if the - hashtable key and value are "plain" data. See below. -
- - -

Notes

- -

[1] - -sparsetable::destructive_iterator iterates through a -sparsetable like a normal iterator, but ++it may delete the -element being iterated past. Obviously, this iterator can only be -used once on a given table! One application of this iterator is to -copy data from a sparsetable to some other data structure without -using extra memory to store the data in both places during the -copy.

- -

[2] - -Since operator[] might insert a new element into the -sparsetable, it can't possibly be a const member -function. In theory, since it might insert a new element, it should -cause the element it refers to to become assigned. However, this is undesirable when -operator[] is used to examine elements, rather than assign -them. Thus, as an implementation trick, operator[] does not -really return a reference. Instead it returns an object that -behaves almost exactly like a reference. This object, -however, delays setting the appropriate sparsetable element to assigned to when it is actually assigned to.

- -

For a bit more detail: the object returned by operator[] -is an opaque type which defines operator=, operator -reference(), and operator&. The first operator controls -assigning to the value. The second controls examining the value. The -third controls pointing to the value.

- -

All three operators perform exactly as an object of type -reference would perform. The only problems that arise is -when this object is accessed in situations where C++ cannot do the -conversion by default. By far the most common situation is with -variadic functions such as printf. In such situations, you -may need to manually cast the object to the right type:

-
-   printf("%d", static_cast<typename table::reference>(table[i]));
-
- - -

Input/Output

- -

It is possible to save and restore sparsetable objects -to disk. Storage takes place in two steps. The first writes the -table metadata. The second writes the actual data.

- -

To write a sparsetable to disk, first call write_metadata() -on an open file pointer. This saves the sparsetable information in a -byte-order-independent format.

- -

After the metadata has been written to disk, you must write the -actual data stored in the sparsetable to disk. If the value is -"simple" enough, you can do this by calling -write_nopointer_data(). "Simple" data is data that can be -safely copied to disk via fwrite(). Native C data types fall -into this category, as do structs of native C data types. Pointers -and STL objects do not.

- -

Note that write_nopointer_data() does not do any endian -conversion. Thus, it is only appropriate when you intend to read the -data on the same endian architecture as you write the data.

- -

If you cannot use write_nopointer_data() for any reason, -you can write the data yourself by iterating over the -sparsetable with a const_nonempty_iterator and -writing the key and data in any manner you wish.

- -

To read the hashtable information from disk, first you must create -a sparsetable object. Then open a file pointer to point -to the saved sparsetable, and call read_metadata(). If you -saved the data via write_nopointer_data(), you can follow the -read_metadata() call with a call to -read_nopointer_data(). This is all that is needed.

- -

If you saved the data through a custom write routine, you must call -a custom read routine to read in the data. To do this, iterate over -the sparsetable with a nonempty_iterator; this -operation is sensical because the metadata has already been set up. -For each iterator item, you can read the key and value from disk, and -set it appropriately. The code might look like this:

-
-   for (sparsetable<int*>::nonempty_iterator it = t.nonempty_begin();
-        it != t.nonempty_end(); ++it) {
-       *it = new int;
-       fread(*it, sizeof(int), 1, fp);
-   }
-
- -

Here's another example, where the item stored in the sparsetable is -a C++ object with a non-trivial constructor. In this case, you must -use "placement new" to construct the object at the correct memory -location.

-
-   for (sparsetable<ComplicatedCppClass>::nonempty_iterator it = t.nonempty_begin();
-        it != t.nonempty_end(); ++it) {
-       int constructor_arg;   // ComplicatedCppClass takes an int to construct
-       fread(&constructor_arg, sizeof(int), 1, fp);
-       new (&(*it)) ComplicatedCppClass(constructor_arg);     // placement new
-   }
-
- - -

See also

- -

The following are SGI STL concepts and classes related to -sparsetable.

- -Container, -Random Access Container, -sparse_hash_set, -sparse_hash_map - - - diff --git a/src/sparsehash-1.6/experimental/Makefile b/src/sparsehash-1.6/experimental/Makefile deleted file mode 100644 index aa997f7..0000000 --- a/src/sparsehash-1.6/experimental/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -example: example.o libchash.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ - -.SUFFIXES: .c .o .h -.c.o: - $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< - -example.o: example.c libchash.h -libchash.o: libchash.c libchash.h diff --git a/src/sparsehash-1.6/experimental/README b/src/sparsehash-1.6/experimental/README deleted file mode 100644 index 150161d..0000000 --- a/src/sparsehash-1.6/experimental/README +++ /dev/null @@ -1,14 +0,0 @@ -This is a C version of sparsehash (and also, maybe, densehash) that I -wrote way back when, and served as the inspiration for the C++ -version. The API for the C version is much uglier than the C++, -because of the lack of template support. I believe the class works, -but I'm not convinced it's really flexible or easy enough to use. - -It would be nice to rework this C class to follow the C++ API as -closely as possible (eg have a set_deleted_key() instead of using a -#define like this code does now). I believe the code compiles and -runs, if anybody is interested in using it now, but it's subject to -major change in the future, as people work on it. - -Craig Silverstein -20 March 2005 diff --git a/src/sparsehash-1.6/experimental/example.c b/src/sparsehash-1.6/experimental/example.c deleted file mode 100644 index 38a3265..0000000 --- a/src/sparsehash-1.6/experimental/example.c +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include -#include -#include "libchash.h" - -static void TestInsert() { - struct HashTable* ht; - HTItem* bck; - - ht = AllocateHashTable(1, 0); /* value is 1 byte, 0: don't copy keys */ - - HashInsert(ht, PTR_KEY(ht, "January"), 31); /* 0: don't overwrite old val */ - bck = HashInsert(ht, PTR_KEY(ht, "February"), 28); - bck = HashInsert(ht, PTR_KEY(ht, "March"), 31); - - bck = HashFind(ht, PTR_KEY(ht, "February")); - assert(bck); - assert(bck->data == 28); - - FreeHashTable(ht); -} - -static void TestFindOrInsert() { - struct HashTable* ht; - int i; - int iterations = 1000000; - int range = 30; /* random number between 1 and 30 */ - - ht = AllocateHashTable(4, 0); /* value is 4 bytes, 0: don't copy keys */ - - /* We'll test how good rand() is as a random number generator */ - for (i = 0; i < iterations; ++i) { - int key = rand() % range; - HTItem* bck = HashFindOrInsert(ht, key, 0); /* initialize to 0 */ - bck->data++; /* found one more of them */ - } - - for (i = 0; i < range; ++i) { - HTItem* bck = HashFind(ht, i); - if (bck) { - printf("%3d: %d\n", bck->key, bck->data); - } else { - printf("%3d: 0\n", i); - } - } - - FreeHashTable(ht); -} - -int main(int argc, char** argv) { - TestInsert(); - TestFindOrInsert(); - return 0; -} diff --git a/src/sparsehash-1.6/experimental/libchash.c b/src/sparsehash-1.6/experimental/libchash.c deleted file mode 100644 index eff9eeb..0000000 --- a/src/sparsehash-1.6/experimental/libchash.c +++ /dev/null @@ -1,1537 +0,0 @@ -/* Copyright (c) 1998 - 2005, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * --- - * Author: Craig Silverstein - * - * This library is intended to be used for in-memory hash tables, - * though it provides rudimentary permanent-storage capabilities. - * It attempts to be fast, portable, and small. The best algorithm - * to fulfill these goals is an internal probing hashing algorithm, - * as in Knuth, _Art of Computer Programming_, vol III. Unlike - * chained (open) hashing, it doesn't require a pointer for every - * item, yet it is still constant time lookup in practice. - * - * Also to save space, we let the contents (both data and key) that - * you insert be a union: if the key/data is small, we store it - * directly in the hashtable, otherwise we store a pointer to it. - * To keep you from having to figure out which, use KEY_PTR and - * PTR_KEY to convert between the arguments to these functions and - * a pointer to the real data. For instance: - * char key[] = "ab", *key2; - * HTItem *bck; HashTable *ht; - * HashInsert(ht, PTR_KEY(ht, key), 0); - * bck = HashFind(ht, PTR_KEY(ht, "ab")); - * key2 = KEY_PTR(ht, bck->key); - * - * There are a rich set of operations supported: - * AllocateHashTable() -- Allocates a hashtable structure and - * returns it. - * cchKey: if it's a positive number, then each key is a - * fixed-length record of that length. If it's 0, - * the key is assumed to be a \0-terminated string. - * fSaveKey: normally, you are responsible for allocating - * space for the key. If this is 1, we make a - * copy of the key for you. - * ClearHashTable() -- Removes everything from a hashtable - * FreeHashTable() -- Frees memory used by a hashtable - * - * HashFind() -- takes a key (use PTR_KEY) and returns the - * HTItem containing that key, or NULL if the - * key is not in the hashtable. - * HashFindLast() -- returns the item found by last HashFind() - * HashFindOrInsert() -- inserts the key/data pair if the key - * is not already in the hashtable, or - * returns the appropraite HTItem if it is. - * HashFindOrInsertItem() -- takes key/data as an HTItem. - * HashInsert() -- adds a key/data pair to the hashtable. What - * it does if the key is already in the table - * depends on the value of SAMEKEY_OVERWRITE. - * HashInsertItem() -- takes key/data as an HTItem. - * HashDelete() -- removes a key/data pair from the hashtable, - * if it's there. RETURNS 1 if it was there, - * 0 else. - * If you use sparse tables and never delete, the full data - * space is available. Otherwise we steal -2 (maybe -3), - * so you can't have data fields with those values. - * HashDeleteLast() -- deletes the item returned by the last Find(). - * - * HashFirstBucket() -- used to iterate over the buckets in a - * hashtable. DON'T INSERT OR DELETE WHILE - * ITERATING! You can't nest iterations. - * HashNextBucket() -- RETURNS NULL at the end of iterating. - * - * HashSetDeltaGoalSize() -- if you're going to insert 1000 items - * at once, call this fn with arg 1000. - * It grows the table more intelligently. - * - * HashSave() -- saves the hashtable to a file. It saves keys ok, - * but it doesn't know how to interpret the data field, - * so if the data field is a pointer to some complex - * structure, you must send a function that takes a - * file pointer and a pointer to the structure, and - * write whatever you want to write. It should return - * the number of bytes written. If the file is NULL, - * it should just return the number of bytes it would - * write, without writing anything. - * If your data field is just an integer, not a - * pointer, just send NULL for the function. - * HashLoad() -- loads a hashtable. It needs a function that takes - * a file and the size of the structure, and expects - * you to read in the structure and return a pointer - * to it. You must do memory allocation, etc. If - * the data is just a number, send NULL. - * HashLoadKeys() -- unlike HashLoad(), doesn't load the data off disk - * until needed. This saves memory, but if you look - * up the same key a lot, it does a disk access each - * time. - * You can't do Insert() or Delete() on hashtables that were loaded - * from disk. - * - * See libchash.h for parameters you can modify. Make sure LOG_WORD_SIZE - * is defined correctly for your machine! (5 for 32 bit words, 6 for 64). - */ - -#include -#include -#include /* for strcmp, memcmp, etc */ -#include /* ULTRIX needs this for in.h */ -#include /* for reading/writing hashtables */ -#include -#include "libchash.h" /* all the types */ - - /* if keys are stored directly but cchKey is less than sizeof(ulong), */ - /* this cuts off the bits at the end */ -char grgKeyTruncMask[sizeof(ulong)][sizeof(ulong)]; -#define KEY_TRUNC(ht, key) \ - ( STORES_PTR(ht) || (ht)->cchKey == sizeof(ulong) \ - ? (key) : ((key) & *(ulong *)&(grgKeyTruncMask[(ht)->cchKey][0])) ) - - /* round num up to a multiple of wordsize. (LOG_WORD_SIZE-3 is in bytes) */ -#define WORD_ROUND(num) ( ((num-1) | ((1<<(LOG_WORD_SIZE-3))-1)) + 1 ) -#define NULL_TERMINATED 0 /* val of cchKey if keys are null-term strings */ - - /* Useful operations we do to keys: compare them, copy them, free them */ - -#define KEY_CMP(ht, key1, key2) ( !STORES_PTR(ht) ? (key1) - (key2) : \ - (key1) == (key2) ? 0 : \ - HashKeySize(ht) == NULL_TERMINATED ? \ - strcmp((char *)key1, (char *)key2) :\ - memcmp((void *)key1, (void *)key2, \ - HashKeySize(ht)) ) - -#define COPY_KEY(ht, keyTo, keyFrom) do \ - if ( !STORES_PTR(ht) || !(ht)->fSaveKeys ) \ - (keyTo) = (keyFrom); /* just copy pointer or info */\ - else if ( (ht)->cchKey == NULL_TERMINATED ) /* copy 0-term.ed str */\ - { \ - (keyTo) = (ulong)HTsmalloc( WORD_ROUND(strlen((char *)(keyFrom))+1) ); \ - strcpy((char *)(keyTo), (char *)(keyFrom)); \ - } \ - else \ - { \ - (keyTo) = (ulong) HTsmalloc( WORD_ROUND((ht)->cchKey) ); \ - memcpy( (char *)(keyTo), (char *)(keyFrom), (ht)->cchKey); \ - } \ - while ( 0 ) - -#define FREE_KEY(ht, key) do \ - if ( STORES_PTR(ht) && (ht)->fSaveKeys ) \ - if ( (ht)->cchKey == NULL_TERMINATED ) \ - HTfree((char *)(key), WORD_ROUND(strlen((char *)(key))+1)); \ - else \ - HTfree((char *)(key), WORD_ROUND((ht)->cchKey)); \ - while ( 0 ) - - /* the following are useful for bitmaps */ - /* Format is like this (if 1 word = 4 bits): 3210 7654 ba98 fedc ... */ -typedef ulong HTBitmapPart; /* this has to be unsigned, for >> */ -typedef HTBitmapPart HTBitmap[1<> LOG_WORD_SIZE) << (LOG_WORD_SIZE-3) ) -#define MOD2(i, logmod) ( (i) & ((1<<(logmod))-1) ) -#define DIV_NUM_ENTRIES(i) ( (i) >> LOG_WORD_SIZE ) -#define MOD_NUM_ENTRIES(i) ( MOD2(i, LOG_WORD_SIZE) ) -#define MODBIT(i) ( ((ulong)1) << MOD_NUM_ENTRIES(i) ) - -#define TEST_BITMAP(bm, i) ( (bm)[DIV_NUM_ENTRIES(i)] & MODBIT(i) ? 1 : 0 ) -#define SET_BITMAP(bm, i) (bm)[DIV_NUM_ENTRIES(i)] |= MODBIT(i) -#define CLEAR_BITMAP(bm, i) (bm)[DIV_NUM_ENTRIES(i)] &= ~MODBIT(i) - - /* the following are useful for reading and writing hashtables */ -#define READ_UL(fp, data) \ - do { \ - long _ul; \ - fread(&_ul, sizeof(_ul), 1, (fp)); \ - data = ntohl(_ul); \ - } while (0) - -#define WRITE_UL(fp, data) \ - do { \ - long _ul = htonl((long)(data)); \ - fwrite(&_ul, sizeof(_ul), 1, (fp)); \ - } while (0) - - /* Moves data from disk to memory if necessary. Note dataRead cannot be * - * NULL, because then we might as well (and do) load the data into memory */ -#define LOAD_AND_RETURN(ht, loadCommand) /* lC returns an HTItem * */ \ - if ( !(ht)->fpData ) /* data is stored in memory */ \ - return (loadCommand); \ - else /* must read data off of disk */ \ - { \ - int cchData; \ - HTItem *bck; \ - if ( (ht)->bckData.data ) free((char *)(ht)->bckData.data); \ - ht->bckData.data = (ulong)NULL; /* needed if loadCommand fails */ \ - bck = (loadCommand); \ - if ( bck == NULL ) /* loadCommand failed: key not found */ \ - return NULL; \ - else \ - (ht)->bckData = *bck; \ - fseek(ht->fpData, (ht)->bckData.data, SEEK_SET); \ - READ_UL((ht)->fpData, cchData); \ - (ht)->bckData.data = (ulong)(ht)->dataRead((ht)->fpData, cchData); \ - return &((ht)->bckData); \ - } - - -/* ======================================================================== */ -/* UTILITY ROUTINES */ -/* ---------------------- */ - -/* HTsmalloc() -- safe malloc - * allocates memory, or crashes if the allocation fails. - */ -static void *HTsmalloc(unsigned long size) -{ - void *retval; - - if ( size == 0 ) - return NULL; - retval = (void *)malloc(size); - if ( !retval ) - { - fprintf(stderr, "HTsmalloc: Unable to allocate %lu bytes of memory\n", - size); - exit(1); - } - return retval; -} - -/* HTscalloc() -- safe calloc - * allocates memory and initializes it to 0, or crashes if - * the allocation fails. - */ -static void *HTscalloc(unsigned long size) -{ - void *retval; - - retval = (void *)calloc(size, 1); - if ( !retval && size > 0 ) - { - fprintf(stderr, "HTscalloc: Unable to allocate %lu bytes of memory\n", - size); - exit(1); - } - return retval; -} - -/* HTsrealloc() -- safe calloc - * grows the amount of memory from a source, or crashes if - * the allocation fails. - */ -static void *HTsrealloc(void *ptr, unsigned long new_size, long delta) -{ - if ( ptr == NULL ) - return HTsmalloc(new_size); - ptr = realloc(ptr, new_size); - if ( !ptr && new_size > 0 ) - { - fprintf(stderr, "HTsrealloc: Unable to reallocate %lu bytes of memory\n", - new_size); - exit(1); - } - return ptr; -} - -/* HTfree() -- keep track of memory use - * frees memory using free, but updates count of how much memory - * is being used. - */ -static void HTfree(void *ptr, unsigned long size) -{ - if ( size > 0 ) /* some systems seem to not like freeing NULL */ - free(ptr); -} - -/*************************************************************************\ -| HTcopy() | -| Sometimes we interpret data as a ulong. But ulongs must be | -| aligned on some machines, so instead of casting we copy. | -\*************************************************************************/ - -unsigned long HTcopy(char *ul) -{ - unsigned long retval; - - memcpy(&retval, ul, sizeof(retval)); - return retval; -} - -/*************************************************************************\ -| HTSetupKeyTrunc() | -| If keys are stored directly but cchKey is less than | -| sizeof(ulong), this cuts off the bits at the end. | -\*************************************************************************/ - -static void HTSetupKeyTrunc(void) -{ - int i, j; - - for ( i = 0; i < sizeof(unsigned long); i++ ) - for ( j = 0; j < sizeof(unsigned long); j++ ) - grgKeyTruncMask[i][j] = j < i ? 255 : 0; /* chars have 8 bits */ -} - - -/* ======================================================================== */ -/* TABLE ROUTINES */ -/* -------------------- */ - -/* The idea is that a hashtable with (logically) t buckets is divided - * into t/M groups of M buckets each. (M is a constant set in - * LOG_BM_WORDS for efficiency.) Each group is stored sparsely. - * Thus, inserting into the table causes some array to grow, which is - * slow but still constant time. Lookup involves doing a - * logical-position-to-sparse-position lookup, which is also slow but - * constant time. The larger M is, the slower these operations are - * but the less overhead (slightly). - * - * To store the sparse array, we store a bitmap B, where B[i] = 1 iff - * bucket i is non-empty. Then to look up bucket i we really look up - * array[# of 1s before i in B]. This is constant time for fixed M. - * - * Terminology: the position of an item in the overall table (from - * 1 .. t) is called its "location." The logical position in a group - * (from 1 .. M ) is called its "position." The actual location in - * the array (from 1 .. # of non-empty buckets in the group) is - * called its "offset." - * - * The following operations are supported: - * o Allocate an array with t buckets, all empty - * o Free a array (but not whatever was stored in the buckets) - * o Tell whether or not a bucket is empty - * o Return a bucket with a given location - * o Set the value of a bucket at a given location - * o Iterate through all the buckets in the array - * o Read and write an occupancy bitmap to disk - * o Return how much memory is being allocated by the array structure - */ - -#ifndef SparseBucket /* by default, each bucket holds an HTItem */ -#define SparseBucket HTItem -#endif - -typedef struct SparseBin { - SparseBucket *binSparse; - HTBitmap bmOccupied; /* bmOccupied[i] is 1 if bucket i has an item */ - short cOccupied; /* size of binSparse; useful for iterators, eg */ -} SparseBin; - -typedef struct SparseIterator { - long posGroup; - long posOffset; - SparseBin *binSparse; /* state info, to avoid args for NextBucket() */ - ulong cBuckets; -} SparseIterator; - -#define LOG_LOW_BIN_SIZE ( LOG_BM_WORDS+LOG_WORD_SIZE ) -#define SPARSE_GROUPS(cBuckets) ( (((cBuckets)-1) >> LOG_LOW_BIN_SIZE) + 1 ) - - /* we need a small function to figure out # of items set in the bm */ -static HTOffset EntriesUpto(HTBitmapPart *bm, int i) -{ /* returns # of set bits in 0..i-1 */ - HTOffset retval = 0; - static HTOffset rgcBits[256] = /* # of bits set in one char */ - {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8}; - - if ( i == 0 ) return 0; - for ( ; i > sizeof(*bm)*8; i -= sizeof(*bm)*8, bm++ ) - { /* think of it as loop unrolling */ -#if LOG_WORD_SIZE >= 3 /* 1 byte per word, or more */ - retval += rgcBits[*bm & 255]; /* get the low byte */ -#if LOG_WORD_SIZE >= 4 /* at least 2 bytes */ - retval += rgcBits[(*bm >> 8) & 255]; -#if LOG_WORD_SIZE >= 5 /* at least 4 bytes */ - retval += rgcBits[(*bm >> 16) & 255]; - retval += rgcBits[(*bm >> 24) & 255]; -#if LOG_WORD_SIZE >= 6 /* 8 bytes! */ - retval += rgcBits[(*bm >> 32) & 255]; - retval += rgcBits[(*bm >> 40) & 255]; - retval += rgcBits[(*bm >> 48) & 255]; - retval += rgcBits[(*bm >> 56) & 255]; -#if LOG_WORD_SIZE >= 7 /* not a concern for a while... */ -#error Need to rewrite EntriesUpto to support such big words -#endif /* >8 bytes */ -#endif /* 8 bytes */ -#endif /* 4 bytes */ -#endif /* 2 bytes */ -#endif /* 1 byte */ - } - switch ( i ) { /* from 0 to 63 */ - case 0: - return retval; -#if LOG_WORD_SIZE >= 3 /* 1 byte per word, or more */ - case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: - return (retval + rgcBits[*bm & ((1 << i)-1)]); -#if LOG_WORD_SIZE >= 4 /* at least 2 bytes */ - case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: - return (retval + rgcBits[*bm & 255] + - rgcBits[(*bm >> 8) & ((1 << (i-8))-1)]); -#if LOG_WORD_SIZE >= 5 /* at least 4 bytes */ - case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: - return (retval + rgcBits[*bm & 255] + rgcBits[(*bm >> 8) & 255] + - rgcBits[(*bm >> 16) & ((1 << (i-16))-1)]); - case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: - return (retval + rgcBits[*bm & 255] + rgcBits[(*bm >> 8) & 255] + - rgcBits[(*bm >> 16) & 255] + - rgcBits[(*bm >> 24) & ((1 << (i-24))-1)]); -#if LOG_WORD_SIZE >= 6 /* 8 bytes! */ - case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: - return (retval + rgcBits[*bm & 255] + rgcBits[(*bm >> 8) & 255] + - rgcBits[(*bm >> 16) & 255] + rgcBits[(*bm >> 24) & 255] + - rgcBits[(*bm >> 32) & ((1 << (i-32))-1)]); - case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: - return (retval + rgcBits[*bm & 255] + rgcBits[(*bm >> 8) & 255] + - rgcBits[(*bm >> 16) & 255] + rgcBits[(*bm >> 24) & 255] + - rgcBits[(*bm >> 32) & 255] + - rgcBits[(*bm >> 40) & ((1 << (i-40))-1)]); - case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: - return (retval + rgcBits[*bm & 255] + rgcBits[(*bm >> 8) & 255] + - rgcBits[(*bm >> 16) & 255] + rgcBits[(*bm >> 24) & 255] + - rgcBits[(*bm >> 32) & 255] + rgcBits[(*bm >> 40) & 255] + - rgcBits[(*bm >> 48) & ((1 << (i-48))-1)]); - case 57: case 58: case 59: case 60: case 61: case 62: case 63: case 64: - return (retval + rgcBits[*bm & 255] + rgcBits[(*bm >> 8) & 255] + - rgcBits[(*bm >> 16) & 255] + rgcBits[(*bm >> 24) & 255] + - rgcBits[(*bm >> 32) & 255] + rgcBits[(*bm >> 40) & 255] + - rgcBits[(*bm >> 48) & 255] + - rgcBits[(*bm >> 56) & ((1 << (i-56))-1)]); -#endif /* 8 bytes */ -#endif /* 4 bytes */ -#endif /* 2 bytes */ -#endif /* 1 byte */ - } - assert("" == "word size is too big in EntriesUpto()"); - return -1; -} -#define SPARSE_POS_TO_OFFSET(bm, i) ( EntriesUpto(&((bm)[0]), i) ) -#define SPARSE_BUCKET(bin, location) \ - ( (bin)[(location) >> LOG_LOW_BIN_SIZE].binSparse + \ - SPARSE_POS_TO_OFFSET((bin)[(location)>>LOG_LOW_BIN_SIZE].bmOccupied, \ - MOD2(location, LOG_LOW_BIN_SIZE)) ) - - -/*************************************************************************\ -| SparseAllocate() | -| SparseFree() | -| Allocates, sets-to-empty, and frees a sparse array. All you need | -| to tell me is how many buckets you want. I return the number of | -| buckets I actually allocated, setting the array as a parameter. | -| Note that you have to set auxilliary parameters, like cOccupied. | -\*************************************************************************/ - -static ulong SparseAllocate(SparseBin **pbinSparse, ulong cBuckets) -{ - int cGroups = SPARSE_GROUPS(cBuckets); - - *pbinSparse = (SparseBin *) HTscalloc(sizeof(**pbinSparse) * cGroups); - return cGroups << LOG_LOW_BIN_SIZE; -} - -static SparseBin *SparseFree(SparseBin *binSparse, ulong cBuckets) -{ - ulong iGroup, cGroups = SPARSE_GROUPS(cBuckets); - - for ( iGroup = 0; iGroup < cGroups; iGroup++ ) - HTfree(binSparse[iGroup].binSparse, (sizeof(*binSparse[iGroup].binSparse) - * binSparse[iGroup].cOccupied)); - HTfree(binSparse, sizeof(*binSparse) * cGroups); - return NULL; -} - -/*************************************************************************\ -| SparseIsEmpty() | -| SparseFind() | -| You give me a location (ie a number between 1 and t), and I | -| return the bucket at that location, or NULL if the bucket is | -| empty. It's OK to call Find() on an empty table. | -\*************************************************************************/ - -static int SparseIsEmpty(SparseBin *binSparse, ulong location) -{ - return !TEST_BITMAP(binSparse[location>>LOG_LOW_BIN_SIZE].bmOccupied, - MOD2(location, LOG_LOW_BIN_SIZE)); -} - -static SparseBucket *SparseFind(SparseBin *binSparse, ulong location) -{ - if ( SparseIsEmpty(binSparse, location) ) - return NULL; - return SPARSE_BUCKET(binSparse, location); -} - -/*************************************************************************\ -| SparseInsert() | -| You give me a location, and contents to put there, and I insert | -| into that location and RETURN a pointer to the location. If | -| bucket was already occupied, I write over the contents only if | -| *pfOverwrite is 1. We set *pfOverwrite to 1 if there was someone | -| there (whether or not we overwrote) and 0 else. | -\*************************************************************************/ - -static SparseBucket *SparseInsert(SparseBin *binSparse, SparseBucket *bckInsert, - ulong location, int *pfOverwrite) -{ - SparseBucket *bckPlace; - HTOffset offset; - - bckPlace = SparseFind(binSparse, location); - if ( bckPlace ) /* means we replace old contents */ - { - if ( *pfOverwrite ) - *bckPlace = *bckInsert; - *pfOverwrite = 1; - return bckPlace; - } - - binSparse += (location >> LOG_LOW_BIN_SIZE); - offset = SPARSE_POS_TO_OFFSET(binSparse->bmOccupied, - MOD2(location, LOG_LOW_BIN_SIZE)); - binSparse->binSparse = (SparseBucket *) - HTsrealloc(binSparse->binSparse, - sizeof(*binSparse->binSparse) * ++binSparse->cOccupied, - sizeof(*binSparse->binSparse)); - memmove(binSparse->binSparse + offset+1, - binSparse->binSparse + offset, - (binSparse->cOccupied-1 - offset) * sizeof(*binSparse->binSparse)); - binSparse->binSparse[offset] = *bckInsert; - SET_BITMAP(binSparse->bmOccupied, MOD2(location, LOG_LOW_BIN_SIZE)); - *pfOverwrite = 0; - return binSparse->binSparse + offset; -} - -/*************************************************************************\ -| SparseFirstBucket() | -| SparseNextBucket() | -| SparseCurrentBit() | -| Iterate through the occupied buckets of a dense hashtable. You | -| must, of course, have allocated space yourself for the iterator. | -\*************************************************************************/ - -static SparseBucket *SparseNextBucket(SparseIterator *iter) -{ - if ( iter->posOffset != -1 && /* not called from FirstBucket()? */ - (++iter->posOffset < iter->binSparse[iter->posGroup].cOccupied) ) - return iter->binSparse[iter->posGroup].binSparse + iter->posOffset; - - iter->posOffset = 0; /* start the next group */ - for ( iter->posGroup++; iter->posGroup < SPARSE_GROUPS(iter->cBuckets); - iter->posGroup++ ) - if ( iter->binSparse[iter->posGroup].cOccupied > 0 ) - return iter->binSparse[iter->posGroup].binSparse; /* + 0 */ - return NULL; /* all remaining groups were empty */ -} - -static SparseBucket *SparseFirstBucket(SparseIterator *iter, - SparseBin *binSparse, ulong cBuckets) -{ - iter->binSparse = binSparse; /* set it up for NextBucket() */ - iter->cBuckets = cBuckets; - iter->posOffset = -1; /* when we advance, we're at 0 */ - iter->posGroup = -1; - return SparseNextBucket(iter); -} - -/*************************************************************************\ -| SparseWrite() | -| SparseRead() | -| These are routines for storing a sparse hashtable onto disk. We | -| store the number of buckets and a bitmap indicating which buckets | -| are allocated (occupied). The actual contents of the buckets | -| must be stored separately. | -\*************************************************************************/ - -static void SparseWrite(FILE *fp, SparseBin *binSparse, ulong cBuckets) -{ - ulong i, j; - - WRITE_UL(fp, cBuckets); - for ( i = 0; i < SPARSE_GROUPS(cBuckets); i++ ) - for ( j = 0; j < (1<rgBuckets, cBuckets); -} - -static ulong DenseAllocate(DenseBin **pbin, ulong cBuckets) -{ - *pbin = (DenseBin *) HTsmalloc(sizeof(*pbin)); - (*pbin)->rgBuckets = (DenseBucket *) HTsmalloc(sizeof(*(*pbin)->rgBuckets) - * cBuckets); - DenseClear(*pbin, cBuckets); - return cBuckets; -} - -static DenseBin *DenseFree(DenseBin *bin, ulong cBuckets) -{ - HTfree(bin->rgBuckets, sizeof(*bin->rgBuckets) * cBuckets); - HTfree(bin, sizeof(*bin)); - return NULL; -} - -static int DenseIsEmpty(DenseBin *bin, ulong location) -{ - return DENSE_IS_EMPTY(bin->rgBuckets, location); -} - -static DenseBucket *DenseFind(DenseBin *bin, ulong location) -{ - if ( DenseIsEmpty(bin, location) ) - return NULL; - return bin->rgBuckets + location; -} - -static DenseBucket *DenseInsert(DenseBin *bin, DenseBucket *bckInsert, - ulong location, int *pfOverwrite) -{ - DenseBucket *bckPlace; - - bckPlace = DenseFind(bin, location); - if ( bckPlace ) /* means something is already there */ - { - if ( *pfOverwrite ) - *bckPlace = *bckInsert; - *pfOverwrite = 1; /* set to 1 to indicate someone was there */ - return bckPlace; - } - else - { - bin->rgBuckets[location] = *bckInsert; - *pfOverwrite = 0; - return bin->rgBuckets + location; - } -} - -static DenseBucket *DenseNextBucket(DenseIterator *iter) -{ - for ( iter->pos++; iter->pos < iter->cBuckets; iter->pos++ ) - if ( !DenseIsEmpty(iter->bin, iter->pos) ) - return iter->bin->rgBuckets + iter->pos; - return NULL; /* all remaining groups were empty */ -} - -static DenseBucket *DenseFirstBucket(DenseIterator *iter, - DenseBin *bin, ulong cBuckets) -{ - iter->bin = bin; /* set it up for NextBucket() */ - iter->cBuckets = cBuckets; - iter->pos = -1; /* thus the next bucket will be 0 */ - return DenseNextBucket(iter); -} - -static void DenseWrite(FILE *fp, DenseBin *bin, ulong cBuckets) -{ - ulong pos = 0, bit, bm; - - WRITE_UL(fp, cBuckets); - while ( pos < cBuckets ) - { - bm = 0; - for ( bit = 0; bit < 8*sizeof(ulong); bit++ ) - { - if ( !DenseIsEmpty(bin, pos) ) - SET_BITMAP(&bm, bit); /* in fks-hash.h */ - if ( ++pos == cBuckets ) - break; - } - WRITE_UL(fp, bm); - } -} - -static ulong DenseRead(FILE *fp, DenseBin **pbin) -{ - ulong pos = 0, bit, bm, cBuckets; - - READ_UL(fp, cBuckets); - cBuckets = DenseAllocate(pbin, cBuckets); - while ( pos < cBuckets ) - { - READ_UL(fp, bm); - for ( bit = 0; bit < 8*sizeof(ulong); bit++ ) - { - if ( TEST_BITMAP(&bm, bit) ) /* in fks-hash.h */ - DENSE_SET_OCCUPIED((*pbin)->rgBuckets, pos); - else - DENSE_SET_EMPTY((*pbin)->rgBuckets, pos); - if ( ++pos == cBuckets ) - break; - } - } - return cBuckets; -} - -static ulong DenseMemory(ulong cBuckets, ulong cOccupied) -{ - return cBuckets * sizeof(DenseBucket); -} - - -/* ======================================================================== */ -/* HASHING ROUTINES */ -/* ---------------------- */ - -/* Implements a simple quadratic hashing scheme. We have a single hash - * table of size t and a single hash function h(x). When inserting an - * item, first we try h(x) % t. If it's occupied, we try h(x) + - * i*(i-1)/2 % t for increasing values of i until we hit a not-occupied - * space. To make this dynamic, we double the size of the hash table as - * soon as more than half the cells are occupied. When deleting, we can - * choose to shrink the hashtable when less than a quarter of the - * cells are occupied, or we can choose never to shrink the hashtable. - * For lookup, we check h(x) + i*(i-1)/2 % t (starting with i=0) until - * we get a match or we hit an empty space. Note that as a result, - * we can't make a cell empty on deletion, or lookups may end prematurely. - * Instead we mark the cell as "deleted." We thus steal the value - * DELETED as a possible "data" value. As long as data are pointers, - * that's ok. - * The hash increment we use, i(i-1)/2, is not the standard quadratic - * hash increment, which is i^2. i(i-1)/2 covers the entire bucket space - * when the hashtable size is a power of two, as it is for us. In fact, - * the first n probes cover n distinct buckets; then it repeats. This - * guarantees insertion will always succeed. - * If you linear hashing, set JUMP in chash.h. You can also change - * various other parameters there. - */ - -/*************************************************************************\ -| Hash() | -| The hash function I use is due to Bob Jenkins (see | -| http://burtleburtle.net/bob/hash/evahash.html | -| According to http://burtleburtle.net/bob/c/lookup2.c, | -| his implementation is public domain.) | -| It takes 36 instructions, in 18 cycles if you're lucky. | -| hashing depends on the fact the hashtable size is always a | -| power of 2. cBuckets is probably ht->cBuckets. | -\*************************************************************************/ - -#if LOG_WORD_SIZE == 5 /* 32 bit words */ - -#define mix(a,b,c) \ -{ \ - a -= b; a -= c; a ^= (c>>13); \ - b -= c; b -= a; b ^= (a<<8); \ - c -= a; c -= b; c ^= (b>>13); \ - a -= b; a -= c; a ^= (c>>12); \ - b -= c; b -= a; b ^= (a<<16); \ - c -= a; c -= b; c ^= (b>>5); \ - a -= b; a -= c; a ^= (c>>3); \ - b -= c; b -= a; b ^= (a<<10); \ - c -= a; c -= b; c ^= (b>>15); \ -} -#ifdef WORD_HASH /* play with this on little-endian machines */ -#define WORD_AT(ptr) ( *(ulong *)(ptr) ) -#else -#define WORD_AT(ptr) ( (ptr)[0] + ((ulong)(ptr)[1]<<8) + \ - ((ulong)(ptr)[2]<<16) + ((ulong)(ptr)[3]<<24) ) -#endif - -#elif LOG_WORD_SIZE == 6 /* 64 bit words */ - -#define mix(a,b,c) \ -{ \ - a -= b; a -= c; a ^= (c>>43); \ - b -= c; b -= a; b ^= (a<<9); \ - c -= a; c -= b; c ^= (b>>8); \ - a -= b; a -= c; a ^= (c>>38); \ - b -= c; b -= a; b ^= (a<<23); \ - c -= a; c -= b; c ^= (b>>5); \ - a -= b; a -= c; a ^= (c>>35); \ - b -= c; b -= a; b ^= (a<<49); \ - c -= a; c -= b; c ^= (b>>11); \ - a -= b; a -= c; a ^= (c>>12); \ - b -= c; b -= a; b ^= (a<<18); \ - c -= a; c -= b; c ^= (b>>22); \ -} -#ifdef WORD_HASH /* alpha is little-endian, btw */ -#define WORD_AT(ptr) ( *(ulong *)(ptr) ) -#else -#define WORD_AT(ptr) ( (ptr)[0] + ((ulong)(ptr)[1]<<8) + \ - ((ulong)(ptr)[2]<<16) + ((ulong)(ptr)[3]<<24) + \ - ((ulong)(ptr)[4]<<32) + ((ulong)(ptr)[5]<<40) + \ - ((ulong)(ptr)[6]<<48) + ((ulong)(ptr)[7]<<56) ) -#endif - -#else /* neither 32 or 64 bit words */ -#error This hash function can only hash 32 or 64 bit words. Sorry. -#endif - -static ulong Hash(HashTable *ht, char *key, ulong cBuckets) -{ - ulong a, b, c, cchKey, cchKeyOrig; - - cchKeyOrig = ht->cchKey == NULL_TERMINATED ? strlen(key) : ht->cchKey; - a = b = c = 0x9e3779b9; /* the golden ratio; an arbitrary value */ - - for ( cchKey = cchKeyOrig; cchKey >= 3 * sizeof(ulong); - cchKey -= 3 * sizeof(ulong), key += 3 * sizeof(ulong) ) - { - a += WORD_AT(key); - b += WORD_AT(key + sizeof(ulong)); - c += WORD_AT(key + sizeof(ulong)*2); - mix(a,b,c); - } - - c += cchKeyOrig; - switch ( cchKey ) { /* deal with rest. Cases fall through */ -#if LOG_WORD_SIZE == 5 - case 11: c += (ulong)key[10]<<24; - case 10: c += (ulong)key[9]<<16; - case 9 : c += (ulong)key[8]<<8; - /* the first byte of c is reserved for the length */ - case 8 : b += WORD_AT(key+4); a+= WORD_AT(key); break; - case 7 : b += (ulong)key[6]<<16; - case 6 : b += (ulong)key[5]<<8; - case 5 : b += key[4]; - case 4 : a += WORD_AT(key); break; - case 3 : a += (ulong)key[2]<<16; - case 2 : a += (ulong)key[1]<<8; - case 1 : a += key[0]; - /* case 0 : nothing left to add */ -#elif LOG_WORD_SIZE == 6 - case 23: c += (ulong)key[22]<<56; - case 22: c += (ulong)key[21]<<48; - case 21: c += (ulong)key[20]<<40; - case 20: c += (ulong)key[19]<<32; - case 19: c += (ulong)key[18]<<24; - case 18: c += (ulong)key[17]<<16; - case 17: c += (ulong)key[16]<<8; - /* the first byte of c is reserved for the length */ - case 16: b += WORD_AT(key+8); a+= WORD_AT(key); break; - case 15: b += (ulong)key[14]<<48; - case 14: b += (ulong)key[13]<<40; - case 13: b += (ulong)key[12]<<32; - case 12: b += (ulong)key[11]<<24; - case 11: b += (ulong)key[10]<<16; - case 10: b += (ulong)key[ 9]<<8; - case 9: b += (ulong)key[ 8]; - case 8: a += WORD_AT(key); break; - case 7: a += (ulong)key[ 6]<<48; - case 6: a += (ulong)key[ 5]<<40; - case 5: a += (ulong)key[ 4]<<32; - case 4: a += (ulong)key[ 3]<<24; - case 3: a += (ulong)key[ 2]<<16; - case 2: a += (ulong)key[ 1]<<8; - case 1: a += (ulong)key[ 0]; - /* case 0: nothing left to add */ -#endif - } - mix(a,b,c); - return c & (cBuckets-1); -} - - -/*************************************************************************\ -| Rehash() | -| You give me a hashtable, a new size, and a bucket to follow, and | -| I resize the hashtable's bin to be the new size, rehashing | -| everything in it. I keep particular track of the bucket you pass | -| in, and RETURN a pointer to where the item in the bucket got to. | -| (If you pass in NULL, I return an arbitrary pointer.) | -\*************************************************************************/ - -static HTItem *Rehash(HashTable *ht, ulong cNewBuckets, HTItem *bckWatch) -{ - Table *tableNew; - ulong iBucketFirst; - HTItem *bck, *bckNew = NULL; - ulong offset; /* the i in h(x) + i*(i-1)/2 */ - int fOverwrite = 0; /* not an issue: there can be no collisions */ - - assert( ht->table ); - cNewBuckets = Table(Allocate)(&tableNew, cNewBuckets); - /* Since we RETURN the new position of bckWatch, we want * - * to make sure it doesn't get moved due to some table * - * rehashing that comes after it's inserted. Thus, we * - * have to put it in last. This makes the loop weird. */ - for ( bck = HashFirstBucket(ht); ; bck = HashNextBucket(ht) ) - { - if ( bck == NULL ) /* we're done iterating, so look at bckWatch */ - { - bck = bckWatch; - if ( bck == NULL ) /* I guess bckWatch wasn't specified */ - break; - } - else if ( bck == bckWatch ) - continue; /* ignore if we see it during the iteration */ - - offset = 0; /* a new i for a new bucket */ - for ( iBucketFirst = Hash(ht, KEY_PTR(ht, bck->key), cNewBuckets); - !Table(IsEmpty)(tableNew, iBucketFirst); - iBucketFirst = (iBucketFirst + JUMP(KEY_PTR(ht,bck->key), offset)) - & (cNewBuckets-1) ) - ; - bckNew = Table(Insert)(tableNew, bck, iBucketFirst, &fOverwrite); - if ( bck == bckWatch ) /* we're done with the last thing to do */ - break; - } - Table(Free)(ht->table, ht->cBuckets); - ht->table = tableNew; - ht->cBuckets = cNewBuckets; - ht->cDeletedItems = 0; - return bckNew; /* new position of bckWatch, which was inserted last */ -} - -/*************************************************************************\ -| Find() | -| Does the quadratic searching stuff. RETURNS NULL if we don't | -| find an object with the given key, and a pointer to the Item | -| holding the key, if we do. Also sets posLastFind. If piEmpty is | -| non-NULL, we set it to the first open bucket we pass; helpful for | -| doing a later insert if the search fails, for instance. | -\*************************************************************************/ - -static HTItem *Find(HashTable *ht, ulong key, ulong *piEmpty) -{ - ulong iBucketFirst; - HTItem *item; - ulong offset = 0; /* the i in h(x) + i*(i-1)/2 */ - int fFoundEmpty = 0; /* set when we pass over an empty bucket */ - - ht->posLastFind = NULL; /* set up for failure: a new find starts */ - if ( ht->table == NULL ) /* empty hash table: find is bound to fail */ - return NULL; - - iBucketFirst = Hash(ht, KEY_PTR(ht, key), ht->cBuckets); - while ( 1 ) /* now try all i > 0 */ - { - item = Table(Find)(ht->table, iBucketFirst); - if ( item == NULL ) /* it's not in the table */ - { - if ( piEmpty && !fFoundEmpty ) *piEmpty = iBucketFirst; - return NULL; - } - else - { - if ( IS_BCK_DELETED(item) ) /* always 0 ifdef INSERT_ONLY */ - { - if ( piEmpty && !fFoundEmpty ) - { - *piEmpty = iBucketFirst; - fFoundEmpty = 1; - } - } else - if ( !KEY_CMP(ht, key, item->key) ) /* must be occupied */ - { - ht->posLastFind = item; - return item; /* we found it! */ - } - } - iBucketFirst = ((iBucketFirst + JUMP(KEY_PTR(ht, key), offset)) - & (ht->cBuckets-1)); - } -} - -/*************************************************************************\ -| Insert() | -| If an item with the key already exists in the hashtable, RETURNS | -| a pointer to the item (replacing its data if fOverwrite is 1). | -| If not, we find the first place-to-insert (which Find() is nice | -| enough to set for us) and insert the item there, RETURNing a | -| pointer to the item. We might grow the hashtable if it's getting | -| full. Note we include buckets holding DELETED when determining | -| fullness, because they slow down searching. | -\*************************************************************************/ - -static ulong NextPow2(ulong x) /* returns next power of 2 > x, or 2^31 */ -{ - if ( ((x << 1) >> 1) != x ) /* next power of 2 overflows */ - x >>= 1; /* so we return highest power of 2 we can */ - while ( (x & (x-1)) != 0 ) /* blacks out all but the top bit */ - x &= (x-1); - return x << 1; /* makes it the *next* power of 2 */ -} - -static HTItem *Insert(HashTable *ht, ulong key, ulong data, int fOverwrite) -{ - HTItem *item, bckInsert; - ulong iEmpty; /* first empty bucket key probes */ - - if ( ht->table == NULL ) /* empty hash table: find is bound to fail */ - return NULL; - item = Find(ht, key, &iEmpty); - ht->posLastFind = NULL; /* last operation is insert, not find */ - if ( item ) - { - if ( fOverwrite ) - item->data = data; /* key already matches */ - return item; - } - - COPY_KEY(ht, bckInsert.key, key); /* make our own copy of the key */ - bckInsert.data = data; /* oh, and the data too */ - item = Table(Insert)(ht->table, &bckInsert, iEmpty, &fOverwrite); - if ( fOverwrite ) /* we overwrote a deleted bucket */ - ht->cDeletedItems--; - ht->cItems++; /* insert couldn't have overwritten */ - if ( ht->cDeltaGoalSize > 0 ) /* closer to our goal size */ - ht->cDeltaGoalSize--; - if ( ht->cItems + ht->cDeletedItems >= ht->cBuckets * OCCUPANCY_PCT - || ht->cDeltaGoalSize < 0 ) /* we must've overestimated # of deletes */ - item = Rehash(ht, - NextPow2((ulong)(((ht->cDeltaGoalSize > 0 ? - ht->cDeltaGoalSize : 0) - + ht->cItems) / OCCUPANCY_PCT)), - item); - return item; -} - -/*************************************************************************\ -| Delete() | -| Removes the item from the hashtable, and if fShrink is 1, will | -| shrink the hashtable if it's too small (ie even after halving, | -| the ht would be less than half full, though in order to avoid | -| oscillating table size, we insist that after halving the ht would | -| be less than 40% full). RETURNS 1 if the item was found, 0 else. | -| If fLastFindSet is true, then this function is basically | -| DeleteLastFind. | -\*************************************************************************/ - -static int Delete(HashTable *ht, ulong key, int fShrink, int fLastFindSet) -{ - if ( !fLastFindSet && !Find(ht, key, NULL) ) - return 0; - SET_BCK_DELETED(ht, ht->posLastFind); /* find set this, how nice */ - ht->cItems--; - ht->cDeletedItems++; - if ( ht->cDeltaGoalSize < 0 ) /* heading towards our goal of deletion */ - ht->cDeltaGoalSize++; - - if ( fShrink && ht->cItems < ht->cBuckets * OCCUPANCY_PCT*0.4 - && ht->cDeltaGoalSize >= 0 /* wait until we're done deleting */ - && (ht->cBuckets >> 1) >= MIN_HASH_SIZE ) /* shrink */ - Rehash(ht, - NextPow2((ulong)((ht->cItems+ht->cDeltaGoalSize)/OCCUPANCY_PCT)), - NULL); - ht->posLastFind = NULL; /* last operation is delete, not find */ - return 1; -} - - -/* ======================================================================== */ -/* USER-VISIBLE API */ -/* ---------------------- */ - -/*************************************************************************\ -| AllocateHashTable() | -| ClearHashTable() | -| FreeHashTable() | -| Allocate() allocates a hash table and sets up size parameters. | -| Free() frees it. Clear() deletes all the items from the hash | -| table, but frees not. | -| cchKey is < 0 if the keys you send me are meant to be pointers | -| to \0-terminated strings. Then -cchKey is the maximum key size. | -| If cchKey < one word (ulong), the keys you send me are the keys | -| themselves; else the keys you send me are pointers to the data. | -| If fSaveKeys is 1, we copy any keys given to us to insert. We | -| also free these keys when freeing the hash table. If it's 0, the | -| user is responsible for key space management. | -| AllocateHashTable() RETURNS a hash table; the others TAKE one. | -\*************************************************************************/ - -HashTable *AllocateHashTable(int cchKey, int fSaveKeys) -{ - HashTable *ht; - - ht = (HashTable *) HTsmalloc(sizeof(*ht)); /* set everything to 0 */ - ht->cBuckets = Table(Allocate)(&ht->table, MIN_HASH_SIZE); - ht->cchKey = cchKey <= 0 ? NULL_TERMINATED : cchKey; - ht->cItems = 0; - ht->cDeletedItems = 0; - ht->fSaveKeys = fSaveKeys; - ht->cDeltaGoalSize = 0; - ht->iter = HTsmalloc( sizeof(TableIterator) ); - - ht->fpData = NULL; /* set by HashLoad, maybe */ - ht->bckData.data = (ulong) NULL; /* this must be done */ - HTSetupKeyTrunc(); /* in util.c */ - return ht; -} - -void ClearHashTable(HashTable *ht) -{ - HTItem *bck; - - if ( STORES_PTR(ht) && ht->fSaveKeys ) /* need to free keys */ - for ( bck = HashFirstBucket(ht); bck; bck = HashNextBucket(ht) ) - { - FREE_KEY(ht, bck->key); - if ( ht->fSaveKeys == 2 ) /* this means key stored in one block */ - break; /* ...so only free once */ - } - Table(Free)(ht->table, ht->cBuckets); - ht->cBuckets = Table(Allocate)(&ht->table, MIN_HASH_SIZE); - - ht->cItems = 0; - ht->cDeletedItems = 0; - ht->cDeltaGoalSize = 0; - ht->posLastFind = NULL; - ht->fpData = NULL; /* no longer HashLoading */ - if ( ht->bckData.data ) free( (char *)(ht)->bckData.data); - ht->bckData.data = (ulong) NULL; -} - -void FreeHashTable(HashTable *ht) -{ - ClearHashTable(ht); - if ( ht->iter ) HTfree(ht->iter, sizeof(TableIterator)); - if ( ht->table ) Table(Free)(ht->table, ht->cBuckets); - free(ht); -} - -/*************************************************************************\ -| HashFind() | -| HashFindLast() | -| HashFind(): looks in h(x) + i(i-1)/2 % t as i goes up from 0 | -| until we either find the key or hit an empty bucket. RETURNS a | -| pointer to the item in the hit bucket, if we find it, else | -| RETURNS NULL. | -| HashFindLast() returns the item returned by the last | -| HashFind(), which may be NULL if the last HashFind() failed. | -| LOAD_AND_RETURN reads the data from off disk, if necessary. | -\*************************************************************************/ - -HTItem *HashFind(HashTable *ht, ulong key) -{ - LOAD_AND_RETURN(ht, Find(ht, KEY_TRUNC(ht, key), NULL)); -} - -HTItem *HashFindLast(HashTable *ht) -{ - LOAD_AND_RETURN(ht, ht->posLastFind); -} - -/*************************************************************************\ -| HashFindOrInsert() | -| HashFindOrInsertItem() | -| HashInsert() | -| HashInsertItem() | -| HashDelete() | -| HashDeleteLast() | -| Pretty obvious what these guys do. Some take buckets (items), | -| some take keys and data separately. All things RETURN the bucket | -| (a pointer into the hashtable) if appropriate. | -\*************************************************************************/ - -HTItem *HashFindOrInsert(HashTable *ht, ulong key, ulong dataInsert) -{ - /* This is equivalent to Insert without samekey-overwrite */ - return Insert(ht, KEY_TRUNC(ht, key), dataInsert, 0); -} - -HTItem *HashFindOrInsertItem(HashTable *ht, HTItem *pItem) -{ - return HashFindOrInsert(ht, pItem->key, pItem->data); -} - -HTItem *HashInsert(HashTable *ht, ulong key, ulong data) -{ - return Insert(ht, KEY_TRUNC(ht, key), data, SAMEKEY_OVERWRITE); -} - -HTItem *HashInsertItem(HashTable *ht, HTItem *pItem) -{ - return HashInsert(ht, pItem->key, pItem->data); -} - -int HashDelete(HashTable *ht, ulong key) -{ - return Delete(ht, KEY_TRUNC(ht, key), !FAST_DELETE, 0); -} - -int HashDeleteLast(HashTable *ht) -{ - if ( !ht->posLastFind ) /* last find failed */ - return 0; - return Delete(ht, 0, !FAST_DELETE, 1); /* no need to specify a key */ -} - -/*************************************************************************\ -| HashFirstBucket() | -| HashNextBucket() | -| Iterates through the items in the hashtable by iterating through | -| the table. Since we know about deleted buckets and loading data | -| off disk, and the table doesn't, our job is to take care of these | -| things. RETURNS a bucket, or NULL after the last bucket. | -\*************************************************************************/ - -HTItem *HashFirstBucket(HashTable *ht) -{ - HTItem *retval; - - for ( retval = Table(FirstBucket)(ht->iter, ht->table, ht->cBuckets); - retval; retval = Table(NextBucket)(ht->iter) ) - if ( !IS_BCK_DELETED(retval) ) - LOAD_AND_RETURN(ht, retval); - return NULL; -} - -HTItem *HashNextBucket(HashTable *ht) -{ - HTItem *retval; - - while ( (retval=Table(NextBucket)(ht->iter)) ) - if ( !IS_BCK_DELETED(retval) ) - LOAD_AND_RETURN(ht, retval); - return NULL; -} - -/*************************************************************************\ -| HashSetDeltaGoalSize() | -| If we're going to insert 100 items, set the delta goal size to | -| 100 and we take that into account when inserting. Likewise, if | -| we're going to delete 10 items, set it to -100 and we won't | -| rehash until all 100 have been done. It's ok to be wrong, but | -| it's efficient to be right. Returns the delta value. | -\*************************************************************************/ - -int HashSetDeltaGoalSize(HashTable *ht, int delta) -{ - ht->cDeltaGoalSize = delta; -#if FAST_DELETE == 1 || defined INSERT_ONLY - if ( ht->cDeltaGoalSize < 0 ) /* for fast delete, we never */ - ht->cDeltaGoalSize = 0; /* ...rehash after deletion */ -#endif - return ht->cDeltaGoalSize; -} - - -/*************************************************************************\ -| HashSave() | -| HashLoad() | -| HashLoadKeys() | -| Routines for saving and loading the hashtable from disk. We can | -| then use the hashtable in two ways: loading it back into memory | -| (HashLoad()) or loading only the keys into memory, in which case | -| the data for a given key is loaded off disk when the key is | -| retrieved. The data is freed when something new is retrieved in | -| its place, so this is not a "lazy-load" scheme. | -| The key is saved automatically and restored upon load, but the | -| user needs to specify a routine for reading and writing the data. | -| fSaveKeys is of course set to 1 when you read in a hashtable. | -| HashLoad RETURNS a newly allocated hashtable. | -| DATA_WRITE() takes an fp and a char * (representing the data | -| field), and must perform two separate tasks. If fp is NULL, | -| return the number of bytes written. If not, writes the data to | -| disk at the place the fp points to. | -| DATA_READ() takes an fp and the number of bytes in the data | -| field, and returns a char * which points to wherever you've | -| written the data. Thus, you must allocate memory for the data. | -| Both dataRead and dataWrite may be NULL if you just wish to | -| store the data field directly, as an integer. | -\*************************************************************************/ - -void HashSave(FILE *fp, HashTable *ht, int (*dataWrite)(FILE *, char *)) -{ - long cchData, posStart; - HTItem *bck; - - /* File format: magic number (4 bytes) - : cchKey (one word) - : cItems (one word) - : cDeletedItems (one word) - : table info (buckets and a bitmap) - : cchAllKeys (one word) - Then the keys, in a block. If cchKey is NULL_TERMINATED, the keys - are null-terminated too, otherwise this takes up cchKey*cItems bytes. - Note that keys are not written for DELETED buckets. - Then the data: - : EITHER DELETED (one word) to indicate it's a deleted bucket, - : OR number of bytes for this (non-empty) bucket's data - (one word). This is not stored if dataWrite == NULL - since the size is known to be sizeof(ul). Plus: - : the data for this bucket (variable length) - All words are in network byte order. */ - - fprintf(fp, "%s", MAGIC_KEY); - WRITE_UL(fp, ht->cchKey); /* WRITE_UL, READ_UL, etc in fks-hash.h */ - WRITE_UL(fp, ht->cItems); - WRITE_UL(fp, ht->cDeletedItems); - Table(Write)(fp, ht->table, ht->cBuckets); /* writes cBuckets too */ - - WRITE_UL(fp, 0); /* to be replaced with sizeof(key block) */ - posStart = ftell(fp); - for ( bck = HashFirstBucket(ht); bck; bck = HashNextBucket(ht) ) - fwrite(KEY_PTR(ht, bck->key), 1, - (ht->cchKey == NULL_TERMINATED ? - strlen(KEY_PTR(ht, bck->key))+1 : ht->cchKey), fp); - cchData = ftell(fp) - posStart; - fseek(fp, posStart - sizeof(unsigned long), SEEK_SET); - WRITE_UL(fp, cchData); - fseek(fp, 0, SEEK_END); /* done with our sojourn at the header */ - - /* Unlike HashFirstBucket, TableFirstBucket iters through deleted bcks */ - for ( bck = Table(FirstBucket)(ht->iter, ht->table, ht->cBuckets); - bck; bck = Table(NextBucket)(ht->iter) ) - if ( dataWrite == NULL || IS_BCK_DELETED(bck) ) - WRITE_UL(fp, bck->data); - else /* write cchData followed by the data */ - { - WRITE_UL(fp, (*dataWrite)(NULL, (char *)bck->data)); - (*dataWrite)(fp, (char *)bck->data); - } -} - -static HashTable *HashDoLoad(FILE *fp, char * (*dataRead)(FILE *, int), - HashTable *ht) -{ - ulong cchKey; - char szMagicKey[4], *rgchKeys; - HTItem *bck; - - fread(szMagicKey, 1, 4, fp); - if ( strncmp(szMagicKey, MAGIC_KEY, 4) ) - { - fprintf(stderr, "ERROR: not a hash table (magic key is %4.4s, not %s)\n", - szMagicKey, MAGIC_KEY); - exit(3); - } - Table(Free)(ht->table, ht->cBuckets); /* allocated in AllocateHashTable */ - - READ_UL(fp, ht->cchKey); - READ_UL(fp, ht->cItems); - READ_UL(fp, ht->cDeletedItems); - ht->cBuckets = Table(Read)(fp, &ht->table); /* next is the table info */ - - READ_UL(fp, cchKey); - rgchKeys = (char *) HTsmalloc( cchKey ); /* stores all the keys */ - fread(rgchKeys, 1, cchKey, fp); - /* We use the table iterator so we don't try to LOAD_AND_RETURN */ - for ( bck = Table(FirstBucket)(ht->iter, ht->table, ht->cBuckets); - bck; bck = Table(NextBucket)(ht->iter) ) - { - READ_UL(fp, bck->data); /* all we need if dataRead is NULL */ - if ( IS_BCK_DELETED(bck) ) /* always 0 if defined(INSERT_ONLY) */ - continue; /* this is why we read the data first */ - if ( dataRead != NULL ) /* if it's null, we're done */ - if ( !ht->fpData ) /* load data into memory */ - bck->data = (ulong)dataRead(fp, bck->data); - else /* store location of data on disk */ - { - fseek(fp, bck->data, SEEK_CUR); /* bck->data held size of data */ - bck->data = ftell(fp) - bck->data - sizeof(unsigned long); - } - - if ( ht->cchKey == NULL_TERMINATED ) /* now read the key */ - { - bck->key = (ulong) rgchKeys; - rgchKeys = strchr(rgchKeys, '\0') + 1; /* read past the string */ - } - else - { - if ( STORES_PTR(ht) ) /* small keys stored directly */ - bck->key = (ulong) rgchKeys; - else - memcpy(&bck->key, rgchKeys, ht->cchKey); - rgchKeys += ht->cchKey; - } - } - if ( !STORES_PTR(ht) ) /* keys are stored directly */ - HTfree(rgchKeys - cchKey, cchKey); /* we've advanced rgchK to end */ - return ht; -} - -HashTable *HashLoad(FILE *fp, char * (*dataRead)(FILE *, int)) -{ - HashTable *ht; - ht = AllocateHashTable(0, 2); /* cchKey set later, fSaveKey should be 2! */ - return HashDoLoad(fp, dataRead, ht); -} - -HashTable *HashLoadKeys(FILE *fp, char * (*dataRead)(FILE *, int)) -{ - HashTable *ht; - - if ( dataRead == NULL ) - return HashLoad(fp, NULL); /* no reason not to load the data here */ - ht = AllocateHashTable(0, 2); /* cchKey set later, fSaveKey should be 2! */ - ht->fpData = fp; /* tells HashDoLoad() to only load keys */ - ht->dataRead = dataRead; - return HashDoLoad(fp, dataRead, ht); -} - -/*************************************************************************\ -| PrintHashTable() | -| A debugging tool. Prints the entire contents of the hash table, | -| like so: : key of the contents. Returns number of bytes | -| allocated. If time is not -1, we print it as the time required | -| for the hash. If iForm is 0, we just print the stats. If it's | -| 1, we print the keys and data too, but the keys are printed as | -| ulongs. If it's 2, we print the keys correctly (as long numbers | -| or as strings). | -\*************************************************************************/ - -ulong PrintHashTable(HashTable *ht, double time, int iForm) -{ - ulong cbData = 0, cbBin = 0, cItems = 0, cOccupied = 0; - HTItem *item; - - printf("HASH TABLE.\n"); - if ( time > -1.0 ) - { - printf("----------\n"); - printf("Time: %27.2f\n", time); - } - - for ( item = Table(FirstBucket)(ht->iter, ht->table, ht->cBuckets); - item; item = Table(NextBucket)(ht->iter) ) - { - cOccupied++; /* this includes deleted buckets */ - if ( IS_BCK_DELETED(item) ) /* we don't need you for anything else */ - continue; - cItems++; /* this is for a sanity check */ - if ( STORES_PTR(ht) ) - cbData += ht->cchKey == NULL_TERMINATED ? - WORD_ROUND(strlen((char *)item->key)+1) : ht->cchKey; - else - cbBin -= sizeof(item->key), cbData += sizeof(item->key); - cbBin -= sizeof(item->data), cbData += sizeof(item->data); - if ( iForm != 0 ) /* we want the actual contents */ - { - if ( iForm == 2 && ht->cchKey == NULL_TERMINATED ) - printf("%s/%lu\n", (char *)item->key, item->data); - else if ( iForm == 2 && STORES_PTR(ht) ) - printf("%.*s/%lu\n", - (int)ht->cchKey, (char *)item->key, item->data); - else /* either key actually is a ulong, or iForm == 1 */ - printf("%lu/%lu\n", item->key, item->data); - } - } - assert( cItems == ht->cItems ); /* sanity check */ - cbBin = Table(Memory)(ht->cBuckets, cOccupied); - - printf("----------\n"); - printf("%lu buckets (%lu bytes). %lu empty. %lu hold deleted items.\n" - "%lu items (%lu bytes).\n" - "%lu bytes total. %lu bytes (%2.1f%%) of this is ht overhead.\n", - ht->cBuckets, cbBin, ht->cBuckets - cOccupied, cOccupied - ht->cItems, - ht->cItems, cbData, - cbData + cbBin, cbBin, cbBin*100.0/(cbBin+cbData)); - - return cbData + cbBin; -} diff --git a/src/sparsehash-1.6/experimental/libchash.h b/src/sparsehash-1.6/experimental/libchash.h deleted file mode 100644 index 0c0f70a..0000000 --- a/src/sparsehash-1.6/experimental/libchash.h +++ /dev/null @@ -1,252 +0,0 @@ -/* Copyright (c) 1998 - 2005, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * --- - * Author: Craig Silverstein - * - * This library is intended to be used for in-memory hash tables, - * though it provides rudimentary permanent-storage capabilities. - * It attempts to be fast, portable, and small. The best algorithm - * to fulfill these goals is an internal probing hashing algorithm, - * as in Knuth, _Art of Computer Programming_, vol III. Unlike - * chained (open) hashing, it doesn't require a pointer for every - * item, yet it is still constant time lookup in practice. - * - * Also to save space, we let the contents (both data and key) that - * you insert be a union: if the key/data is small, we store it - * directly in the hashtable, otherwise we store a pointer to it. - * To keep you from having to figure out which, use KEY_PTR and - * PTR_KEY to convert between the arguments to these functions and - * a pointer to the real data. For instance: - * char key[] = "ab", *key2; - * HTItem *bck; HashTable *ht; - * HashInsert(ht, PTR_KEY(ht, key), 0); - * bck = HashFind(ht, PTR_KEY(ht, "ab")); - * key2 = KEY_PTR(ht, bck->key); - * - * There are a rich set of operations supported: - * AllocateHashTable() -- Allocates a hashtable structure and - * returns it. - * cchKey: if it's a positive number, then each key is a - * fixed-length record of that length. If it's 0, - * the key is assumed to be a \0-terminated string. - * fSaveKey: normally, you are responsible for allocating - * space for the key. If this is 1, we make a - * copy of the key for you. - * ClearHashTable() -- Removes everything from a hashtable - * FreeHashTable() -- Frees memory used by a hashtable - * - * HashFind() -- takes a key (use PTR_KEY) and returns the - * HTItem containing that key, or NULL if the - * key is not in the hashtable. - * HashFindLast() -- returns the item found by last HashFind() - * HashFindOrInsert() -- inserts the key/data pair if the key - * is not already in the hashtable, or - * returns the appropraite HTItem if it is. - * HashFindOrInsertItem() -- takes key/data as an HTItem. - * HashInsert() -- adds a key/data pair to the hashtable. What - * it does if the key is already in the table - * depends on the value of SAMEKEY_OVERWRITE. - * HashInsertItem() -- takes key/data as an HTItem. - * HashDelete() -- removes a key/data pair from the hashtable, - * if it's there. RETURNS 1 if it was there, - * 0 else. - * If you use sparse tables and never delete, the full data - * space is available. Otherwise we steal -2 (maybe -3), - * so you can't have data fields with those values. - * HashDeleteLast() -- deletes the item returned by the last Find(). - * - * HashFirstBucket() -- used to iterate over the buckets in a - * hashtable. DON'T INSERT OR DELETE WHILE - * ITERATING! You can't nest iterations. - * HashNextBucket() -- RETURNS NULL at the end of iterating. - * - * HashSetDeltaGoalSize() -- if you're going to insert 1000 items - * at once, call this fn with arg 1000. - * It grows the table more intelligently. - * - * HashSave() -- saves the hashtable to a file. It saves keys ok, - * but it doesn't know how to interpret the data field, - * so if the data field is a pointer to some complex - * structure, you must send a function that takes a - * file pointer and a pointer to the structure, and - * write whatever you want to write. It should return - * the number of bytes written. If the file is NULL, - * it should just return the number of bytes it would - * write, without writing anything. - * If your data field is just an integer, not a - * pointer, just send NULL for the function. - * HashLoad() -- loads a hashtable. It needs a function that takes - * a file and the size of the structure, and expects - * you to read in the structure and return a pointer - * to it. You must do memory allocation, etc. If - * the data is just a number, send NULL. - * HashLoadKeys() -- unlike HashLoad(), doesn't load the data off disk - * until needed. This saves memory, but if you look - * up the same key a lot, it does a disk access each - * time. - * You can't do Insert() or Delete() on hashtables that were loaded - * from disk. - */ - -#include /* includes definition of "ulong", we hope */ -#define ulong u_long - -#define MAGIC_KEY "CHsh" /* when we save the file */ - -#ifndef LOG_WORD_SIZE /* 5 for 32 bit words, 6 for 64 */ -#if defined (__LP64__) || defined (_LP64) -#define LOG_WORD_SIZE 6 /* log_2(sizeof(ulong)) [in bits] */ -#else -#define LOG_WORD_SIZE 5 /* log_2(sizeof(ulong)) [in bits] */ -#endif -#endif - - /* The following gives a speed/time tradeoff: how many buckets are * - * in each bin. 0 gives 32 buckets/bin, which is a good number. */ -#ifndef LOG_BM_WORDS -#define LOG_BM_WORDS 0 /* each group has 2^L_B_W * 32 buckets */ -#endif - - /* The following are all parameters that affect performance. */ -#ifndef JUMP -#define JUMP(key, offset) ( ++(offset) ) /* ( 1 ) for linear hashing */ -#endif -#ifndef Table -#define Table(x) Sparse##x /* Dense##x for dense tables */ -#endif -#ifndef FAST_DELETE -#define FAST_DELETE 0 /* if it's 1, we never shrink the ht */ -#endif -#ifndef SAMEKEY_OVERWRITE -#define SAMEKEY_OVERWRITE 1 /* overwrite item with our key on insert? */ -#endif -#ifndef OCCUPANCY_PCT -#define OCCUPANCY_PCT 0.5 /* large PCT means smaller and slower */ -#endif -#ifndef MIN_HASH_SIZE -#define MIN_HASH_SIZE 512 /* ht size when first created */ -#endif - /* When deleting a bucket, we can't just empty it (future hashes * - * may fail); instead we set the data field to DELETED. Thus you * - * should set DELETED to a data value you never use. Better yet, * - * if you don't need to delete, define INSERT_ONLY. */ -#ifndef INSERT_ONLY -#define DELETED -2UL -#define IS_BCK_DELETED(bck) ( (bck) && (bck)->data == DELETED ) -#define SET_BCK_DELETED(ht, bck) do { (bck)->data = DELETED; \ - FREE_KEY(ht, (bck)->key); } while ( 0 ) -#else -#define IS_BCK_DELETED(bck) 0 -#define SET_BCK_DELETED(ht, bck) \ - do { fprintf(stderr, "Deletion not supported for insert-only hashtable\n");\ - exit(2); } while ( 0 ) -#endif - - /* We need the following only for dense buckets (Dense##x above). * - * If you need to, set this to a value you'll never use for data. */ -#define EMPTY -3UL /* steal more of the bck->data space */ - - - /* This is what an item is. Either can be cast to a pointer. */ -typedef struct { - ulong data; /* 4 bytes for data: either a pointer or an integer */ - ulong key; /* 4 bytes for the key: either a pointer or an int */ -} HTItem; - -struct Table(Bin); /* defined in chash.c, I hope */ -struct Table(Iterator); -typedef struct Table(Bin) Table; /* Expands to SparseBin, etc */ -typedef struct Table(Iterator) TableIterator; - - /* for STORES_PTR to work ok, cchKey MUST BE DEFINED 1st, cItems 2nd! */ -typedef struct HashTable { - ulong cchKey; /* the length of the key, or if it's \0 terminated */ - ulong cItems; /* number of items currently in the hashtable */ - ulong cDeletedItems; /* # of buckets holding DELETE in the hashtable */ - ulong cBuckets; /* size of the table */ - Table *table; /* The actual contents of the hashtable */ - int fSaveKeys; /* 1 if we copy keys locally; 2 if keys in one block */ - int cDeltaGoalSize; /* # of coming inserts (or deletes, if <0) we expect */ - HTItem *posLastFind; /* position of last Find() command */ - TableIterator *iter; /* used in First/NextBucket */ - - FILE *fpData; /* if non-NULL, what item->data points into */ - char * (*dataRead)(FILE *, int); /* how to load data from disk */ - HTItem bckData; /* holds data after being loaded from disk */ -} HashTable; - - /* Small keys are stored and passed directly, but large keys are - * stored and passed as pointers. To make it easier to remember - * what to pass, we provide two functions: - * PTR_KEY: give it a pointer to your data, and it returns - * something appropriate to send to Hash() functions or - * be stored in a data field. - * KEY_PTR: give it something returned by a Hash() routine, and - * it returns a (char *) pointer to the actual data. - */ -#define HashKeySize(ht) ( ((ulong *)(ht))[0] ) /* this is how we inline */ -#define HashSize(ht) ( ((ulong *)(ht))[1] ) /* ...a la C++ :-) */ - -#define STORES_PTR(ht) ( HashKeySize(ht) == 0 || \ - HashKeySize(ht) > sizeof(ulong) ) -#define KEY_PTR(ht, key) ( STORES_PTR(ht) ? (char *)(key) : (char *)&(key) ) -#ifdef DONT_HAVE_TO_WORRY_ABOUT_BUS_ERRORS -#define PTR_KEY(ht, ptr) ( STORES_PTR(ht) ? (ulong)(ptr) : *(ulong *)(ptr) ) -#else -#define PTR_KEY(ht, ptr) ( STORES_PTR(ht) ? (ulong)(ptr) : HTcopy((char *)ptr)) -#endif - - - /* Function prototypes */ -unsigned long HTcopy(char *pul); /* for PTR_KEY, not for users */ - -struct HashTable *AllocateHashTable(int cchKey, int fSaveKeys); -void ClearHashTable(struct HashTable *ht); -void FreeHashTable(struct HashTable *ht); - -HTItem *HashFind(struct HashTable *ht, ulong key); -HTItem *HashFindLast(struct HashTable *ht); -HTItem *HashFindOrInsert(struct HashTable *ht, ulong key, ulong dataInsert); -HTItem *HashFindOrInsertItem(struct HashTable *ht, HTItem *pItem); - -HTItem *HashInsert(struct HashTable *ht, ulong key, ulong data); -HTItem *HashInsertItem(struct HashTable *ht, HTItem *pItem); - -int HashDelete(struct HashTable *ht, ulong key); -int HashDeleteLast(struct HashTable *ht); - -HTItem *HashFirstBucket(struct HashTable *ht); -HTItem *HashNextBucket(struct HashTable *ht); - -int HashSetDeltaGoalSize(struct HashTable *ht, int delta); - -void HashSave(FILE *fp, struct HashTable *ht, int (*write)(FILE *, char *)); -struct HashTable *HashLoad(FILE *fp, char * (*read)(FILE *, int)); -struct HashTable *HashLoadKeys(FILE *fp, char * (*read)(FILE *, int)); diff --git a/src/sparsehash-1.6/google-sparsehash.sln b/src/sparsehash-1.6/google-sparsehash.sln deleted file mode 100755 index 6148fb5..0000000 --- a/src/sparsehash-1.6/google-sparsehash.sln +++ /dev/null @@ -1,47 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "type_traits_unittest", "vsprojects\type_traits_unittest\type_traits_unittest.vcproj", "{008CCFED-7D7B-46F8-8E13-03837A2258B3}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sparsetable_unittest", "vsprojects\sparsetable_unittest\sparsetable_unittest.vcproj", "{E420867B-8BFA-4739-99EC-E008AB762FF9}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hashtable_unittest", "vsprojects\hashtable_unittest\hashtable_unittest.vcproj", "{FCDB3718-F01C-4DE4-B9F5-E10F2C5C0535}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "time_hash_map", "vsprojects\time_hash_map\time_hash_map.vcproj", "{A74E5DB8-5295-487A-AB1D-23859F536F45}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {008CCFED-7D7B-46F8-8E13-03837A2258B3}.Debug.ActiveCfg = Debug|Win32 - {008CCFED-7D7B-46F8-8E13-03837A2258B3}.Debug.Build.0 = Debug|Win32 - {008CCFED-7D7B-46F8-8E13-03837A2258B3}.Release.ActiveCfg = Release|Win32 - {008CCFED-7D7B-46F8-8E13-03837A2258B3}.Release.Build.0 = Release|Win32 - {E420867B-8BFA-4739-99EC-E008AB762FF9}.Debug.ActiveCfg = Debug|Win32 - {E420867B-8BFA-4739-99EC-E008AB762FF9}.Debug.Build.0 = Debug|Win32 - {E420867B-8BFA-4739-99EC-E008AB762FF9}.Release.ActiveCfg = Release|Win32 - {E420867B-8BFA-4739-99EC-E008AB762FF9}.Release.Build.0 = Release|Win32 - {FCDB3718-F01C-4DE4-B9F5-E10F2C5C0535}.Debug.ActiveCfg = Debug|Win32 - {FCDB3718-F01C-4DE4-B9F5-E10F2C5C0535}.Debug.Build.0 = Debug|Win32 - {FCDB3718-F01C-4DE4-B9F5-E10F2C5C0535}.Release.ActiveCfg = Release|Win32 - {FCDB3718-F01C-4DE4-B9F5-E10F2C5C0535}.Release.Build.0 = Release|Win32 - {A74E5DB8-5295-487A-AB1D-23859F536F45}.Debug.ActiveCfg = Debug|Win32 - {A74E5DB8-5295-487A-AB1D-23859F536F45}.Debug.Build.0 = Debug|Win32 - {A74E5DB8-5295-487A-AB1D-23859F536F45}.Release.ActiveCfg = Release|Win32 - {A74E5DB8-5295-487A-AB1D-23859F536F45}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/src/sparsehash-1.6/hashtable_unittest b/src/sparsehash-1.6/hashtable_unittest deleted file mode 100755 index d4ce1fc1fb12c4e1d8dc7ea66bf95fb5a801d13d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4575403 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%0A~w=B7Ix{SOx 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 z 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

8Xw+?RW}G(c5Xtw?m&^>k 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%0DQ`Y>uY!j;5d||kgGI&AK*qV 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

jMpDSe2|!%R3 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 oyQw1~6Ol8KP`)8`)DV z8*scIo+F<@1@0hdO~SJ0;xnN@CsOzms1H6&S`7(J!L)TW>gQpd9!EQtxA$SJh+G`# zW;cNZ){;pE62x71|GZA)xi7=81aE!?PQNqC1$VtYnx-eAW`KlocX~+ThCwiwn_adr z7^DQKABX{wRdxX>2oZanL~P~9X%#kuSzw?REX`hbcf3CUriq@(I~%Owq-JHfZs`IW@hN_ixfHkUwhV{6_TL^1?;jdN{+>cxNfwePEAE-?Q!rMA zE+++ysKA_9JuY??1Q?2sQHfw@q{9mCW1x<8Qi6;-a4@zw>TukFSP`M$8A-p+Ke21;~K*$)XhR-n0y@%=s<=P8Xd<;SIQ?AOuH9wrIVz* zYgV?x5!P&JVkA5KnTf;=6Cs`6{x8o z;{sHdwOfnxo(TK7gA}Z}3;{ATT2Oq)ETV)k4xSiPPo$=^eOx%jS4@zsba8t=O&7Cl zI}Og5Bikysq|y|Vc|?!d?qR>9Q5oyP(2a}W>|j}I!0com1F$;pSfy%KSZ%PYU_pSd zR#=@@R&RDy#c0fyYfw4y%LV$?c#&9}j1UbdDgKDSxT;@!?GR_tG=Et* zeR>JZhbtHj<9P@JYz}hmb@OaDzonu{4lq5TwVKKLuElnA%LD-J?hAG|IwG56-^^n% zt$^8QXTcFQG*sr(R04#4&MX#ymeM5mH@C3#BwHcU)Pu47p+X{NGq1b1eO$KI%z9$3 z2yUOsbfss$n9{ThgQ&h1{e~0)^%VM@RUDjs&0fchUlSM3f{{hXb8p?K;FkE4 zAlFUpsH9bvWR*ry2D|VaFfm!hYx>=rHhV#tZ^MlC!4=JCvrGvF_$;XJ_PR@0@9Ski z_#OlJTp~>d0COZI34d#t5DJ0_HYNfy?^wh~MMTahhO*3E+tf8rR3Qh%mp6p|}rmO#KtKPU`D|aAd?HqHpC{CDlrE@s; zW9^+C@WDrQnD!tXbK>9-$T`d`#K$d{ukV-|Y$X(y2e6-CDxRWB%Dh$2y^7L0qKALGuaG(=@)H@QB@0-6hJ)J; zac77yTXAh0JvS$) z-fMR_*hc{Ua3(f8>JeJF9%SW$S^yI+o3h~Zkv;;q8~;=E$S7AFv+_AqmZ55%#>*d` zAPGtF;Dnk9;5*d)L9vAFV&XE)`PQ1mWcCNzCfnsy5^ElU7~2Mle9<d>Lg=bSA zk(D0w4;(@xgOa0&S`M)z$gfJ%;|&egeYRP8@+h59M`>y=pmx5qqk^H3+@zVozhepB z;NjYOh4c#Om_qb!l7NXpG3XsDg0t58#f#~=(-*Y@7qF$umP|HqkwNQ(b%Hk;3@~Ge zELsE@QFOr~o97DT0O}mz8Iap3UdM={boH46CzDr}NG&8QYtz7+Hw%+YEx z4o1N|mk05yqUy9Jh(9B6B5IAq7UUZ*@*NXuYeAeNCg6cNUN-ko^`UX|1q%SS`F=rI z!IfxDutgzmX;gs=q0GXD&?^M|Rxg!xI*syq@zuiFDomQwu0?haD9hVCj{QkGgMBRY zk~j>r+KZ&0TXMuJ26bgJtFyehfVxtXQO#*}Po2t8paze_cpfkV7W}Tboo>wTM&zb~ z?zO}$G!ey)!F-A(&3lU3)2dYJ(K+WECr_f2?){3mh(L+(w~AO=kyRtGw(wQ)@OTy@ z5|StqV?|n7CS3Rpp_-cBM@%Yr4~B$tH+fo2oa~_3d)Q?c)U(HKa`>nTgp1?stenpyH8thUNAngZMo$y30&MaR^QamSbn zXt-uUA~k~yfJtdKjfqw0;vI;aNkv5tBOf&do2r}cdfyWVr99c*BW$e-PgCVrmQ@QG z3Az)u&MS!E2m(|%p?5V=P7hjvDRCf?q@c;L!;Fq8c@3l&*|O`B1TC9<=y1tQk~xK4 zfjhdiewpbaJUo0t;%3TsICBgyKV*W87Of8HEU7RY+F{O&b4TV|q;h4fnOE7AhU1cf zM8cve%UHb^V7c6TRhzEdn@Ve5H8+w=0SBZygyKbQ<7!^L&+ywMQA-9*h7^vFzK`Bj zZ_aKgQBB>!0vwnqQ4iQr%|m9>=D+swhGS zyo|93B7>tDo9h%oTjhAHy5WYx*az1iRV~{^LkO`) zC*VK`0DkT5LU6Z4g3(?uhnRshx;EI`fv(f8n8d}jHpJB+;(CkZK7)$@_Tk=z44SYV z;3XVVvgtD}+P9Jo3fSmfcetSkWUSOo14_DAHMTi)T+47Y)A(Zx*e(i7?t{)w8@td~ z+!>CL<>%klFj;u`xtk*1Xg;dd&?bQk@VLPt{@H`D(?DuQU%>h zLnRus556)%_+A^lE_k)muDpfAVV$0vIpLddSjk$=o$?o{JUk+fsIabD69>BqX;d;O z$PQ1j$?@)V5Iz+-lb+R!c~xlGM23v<&%@K6!_rL4zwx7o& z(GI42$QWaX3Y(U6pp#j5p>7kLzb9Sw>`EI>Tt@gK&U>sGC2>H~QUtD*wGgHoL8c~dbfQmcJd&``jS>VUB*?4<;|6b6e01`lHDIC!yj zM(5YC_PiZesc(u5f5%^9oxEchB;M}nUTa2J^AHW|x!B1zUk(+&nO$C#E^;_(S+rO#6Q~I7bPp?!%Suuwp$%$*^ z<{EsBuwrtKGpYvNcx+OeupyYB6G!zX2##N4;LbuDFJ+UIFLhk%dp@j#Or}mrF`?bV z{-}4g-`!CxPcEQo=!JlM1_$bv%cU+>^jf9mpxc8NL~a2tlhHSi%AzitIZf1XnWr+j)hw)?;ijb?r_|4%idPy^xY03qS

ydXY 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

><}xubG1 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

9kWik_5` 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�>~3$v&wu5JIvT;SO4H+(z!>^0w4 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⪼7-?oJbZ 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

;=TJYlchKS3&;54{JKeI5tpUjU?4;Fru_ZO@Z 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 Yh}MsH2KC0_Ordj9L~qbH^FiYO05b=&Z~y=R diff --git a/src/sparsehash-1.6/src/config.h b/src/sparsehash-1.6/src/config.h deleted file mode 100644 index 4183665..0000000 --- a/src/sparsehash-1.6/src/config.h +++ /dev/null @@ -1,132 +0,0 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Namespace for Google classes */ -#define GOOGLE_NAMESPACE ::google - -/* the location of the header defining hash functions */ -#define HASH_FUN_H - -/* the location of or */ -#define HASH_MAP_H - -/* the namespace of the hash<> function */ -#define HASH_NAMESPACE std::tr1 - -/* the location of or */ -#define HASH_SET_H - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_GOOGLE_MALLOC_EXTENSION_H */ - -/* define if the compiler has hash_map */ -#define HAVE_HASH_MAP 1 - -/* define if the compiler has hash_set */ -#define HAVE_HASH_SET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if the system has the type `long long'. */ -#define HAVE_LONG_LONG 1 - -/* Define to 1 if you have the `memcpy' function. */ -#define HAVE_MEMCPY 1 - -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* define if the compiler implements namespaces */ -#define HAVE_NAMESPACES 1 - -/* Define if you have POSIX threads libraries and header files. */ -/* #undef HAVE_PTHREAD */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_UTSNAME_H 1 - -/* Define to 1 if the system has the type `uint16_t'. */ -#define HAVE_UINT16_T 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* define if the compiler supports unordered_{map,set} */ -#define HAVE_UNORDERED_MAP 1 - -/* Define to 1 if the system has the type `u_int16_t'. */ -#define HAVE_U_INT16_T 1 - -/* Define to 1 if the system has the type `__uint16'. */ -/* #undef HAVE___UINT16 */ - -/* Name of package */ -#define PACKAGE "sparsehash" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "opensource@google.com" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "sparsehash" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "sparsehash 1.6" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "sparsehash" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "1.6" - -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -/* #undef PTHREAD_CREATE_JOINABLE */ - -/* The system-provided hash function including the namespace. */ -#define SPARSEHASH_HASH HASH_NAMESPACE::hash - -/* The system-provided hash function, in namespace HASH_NAMESPACE. */ -#define SPARSEHASH_HASH_NO_NAMESPACE hash - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* the namespace where STL code like vector<> is defined */ -#define STL_NAMESPACE std - -/* Version number of package */ -#define VERSION "1.6" - -/* Stops putting the code inside the Google namespace */ -#define _END_GOOGLE_NAMESPACE_ } - -/* Puts following code inside the Google namespace */ -#define _START_GOOGLE_NAMESPACE_ namespace google { diff --git a/src/sparsehash-1.6/src/config.h.in b/src/sparsehash-1.6/src/config.h.in deleted file mode 100644 index bef1650..0000000 --- a/src/sparsehash-1.6/src/config.h.in +++ /dev/null @@ -1,131 +0,0 @@ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Namespace for Google classes */ -#undef GOOGLE_NAMESPACE - -/* the location of the header defining hash functions */ -#undef HASH_FUN_H - -/* the location of or */ -#undef HASH_MAP_H - -/* the namespace of the hash<> function */ -#undef HASH_NAMESPACE - -/* the location of or */ -#undef HASH_SET_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_GOOGLE_MALLOC_EXTENSION_H - -/* define if the compiler has hash_map */ -#undef HAVE_HASH_MAP - -/* define if the compiler has hash_set */ -#undef HAVE_HASH_SET - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if the system has the type `long long'. */ -#undef HAVE_LONG_LONG - -/* Define to 1 if you have the `memcpy' function. */ -#undef HAVE_MEMCPY - -/* Define to 1 if you have the `memmove' function. */ -#undef HAVE_MEMMOVE - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* define if the compiler implements namespaces */ -#undef HAVE_NAMESPACES - -/* Define if you have POSIX threads libraries and header files. */ -#undef HAVE_PTHREAD - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_UTSNAME_H - -/* Define to 1 if the system has the type `uint16_t'. */ -#undef HAVE_UINT16_T - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* define if the compiler supports unordered_{map,set} */ -#undef HAVE_UNORDERED_MAP - -/* Define to 1 if the system has the type `u_int16_t'. */ -#undef HAVE_U_INT16_T - -/* Define to 1 if the system has the type `__uint16'. */ -#undef HAVE___UINT16 - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -#undef PTHREAD_CREATE_JOINABLE - -/* The system-provided hash function including the namespace. */ -#undef SPARSEHASH_HASH - -/* The system-provided hash function, in namespace HASH_NAMESPACE. */ -#undef SPARSEHASH_HASH_NO_NAMESPACE - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* the namespace where STL code like vector<> is defined */ -#undef STL_NAMESPACE - -/* Version number of package */ -#undef VERSION - -/* Stops putting the code inside the Google namespace */ -#undef _END_GOOGLE_NAMESPACE_ - -/* Puts following code inside the Google namespace */ -#undef _START_GOOGLE_NAMESPACE_ diff --git a/src/sparsehash-1.6/src/config.h.include b/src/sparsehash-1.6/src/config.h.include deleted file mode 100644 index 5b0e3a2..0000000 --- a/src/sparsehash-1.6/src/config.h.include +++ /dev/null @@ -1,23 +0,0 @@ -/*** - *** These are #defines that autoheader puts in config.h.in that we - *** want to show up in sparseconfig.h, the minimal config.h file - *** #included by all our .h files. The reason we don't take - *** everything that autoheader emits is that we have to include a - *** config.h in installed header files, and we want to minimize the - *** number of #defines we make so as to not pollute the namespace. - ***/ -GOOGLE_NAMESPACE -HASH_NAMESPACE -HASH_FUN_H -SPARSEHASH_HASH -HAVE_UINT16_T -HAVE_U_INT16_T -HAVE___UINT16 -HAVE_LONG_LONG -HAVE_SYS_TYPES_H -HAVE_STDINT_H -HAVE_INTTYPES_H -HAVE_MEMCPY -STL_NAMESPACE -_END_GOOGLE_NAMESPACE_ -_START_GOOGLE_NAMESPACE_ diff --git a/src/sparsehash-1.6/src/google/dense_hash_map b/src/sparsehash-1.6/src/google/dense_hash_map deleted file mode 100644 index 888643a..0000000 --- a/src/sparsehash-1.6/src/google/dense_hash_map +++ /dev/null @@ -1,319 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// ---- -// Author: Craig Silverstein -// -// This is just a very thin wrapper over densehashtable.h, just -// like sgi stl's stl_hash_map is a very thin wrapper over -// stl_hashtable. The major thing we define is operator[], because -// we have a concept of a data_type which stl_hashtable doesn't -// (it only has a key and a value). -// -// NOTE: this is exactly like sparse_hash_map.h, with the word -// "sparse" replaced by "dense", except for the addition of -// set_empty_key(). -// -// YOU MUST CALL SET_EMPTY_KEY() IMMEDIATELY AFTER CONSTRUCTION. -// -// Otherwise your program will die in mysterious ways. -// -// In other respects, we adhere mostly to the STL semantics for -// hash-map. One important exception is that insert() may invalidate -// iterators entirely -- STL semantics are that insert() may reorder -// iterators, but they all still refer to something valid in the -// hashtable. Not so for us. Likewise, insert() may invalidate -// pointers into the hashtable. (Whether insert invalidates iterators -// and pointers depends on whether it results in a hashtable resize). -// On the plus side, delete() doesn't invalidate iterators or pointers -// at all, or even change the ordering of elements. -// -// Here are a few "power user" tips: -// -// 1) set_deleted_key(): -// If you want to use erase() you *must* call set_deleted_key(), -// in addition to set_empty_key(), after construction. -// The deleted and empty keys must differ. -// -// 2) resize(0): -// When an item is deleted, its memory isn't freed right -// away. This allows you to iterate over a hashtable, -// and call erase(), without invalidating the iterator. -// To force the memory to be freed, call resize(0). -// For tr1 compatibility, this can also be called as rehash(0). -// -// 3) min_load_factor(0.0) -// Setting the minimum load factor to 0.0 guarantees that -// the hash table will never shrink. -// -// Roughly speaking: -// (1) dense_hash_map: fastest, uses the most memory unless entries are small -// (2) sparse_hash_map: slowest, uses the least memory -// (3) hash_map / unordered_map (STL): in the middle -// -// Typically I use sparse_hash_map when I care about space and/or when -// I need to save the hashtable on disk. I use hash_map otherwise. I -// don't personally use dense_hash_set ever; some people use it for -// small sets with lots of lookups. -// -// - dense_hash_map has, typically, about 78% memory overhead (if your -// data takes up X bytes, the hash_map uses .78X more bytes in overhead). -// - sparse_hash_map has about 4 bits overhead per entry. -// - sparse_hash_map can be 3-7 times slower than the others for lookup and, -// especially, inserts. See time_hash_map.cc for details. -// -// See /usr/(local/)?doc/sparsehash-*/dense_hash_map.html -// for information about how to use this class. - -#ifndef _DENSE_HASH_MAP_H_ -#define _DENSE_HASH_MAP_H_ - -#include -#include // for FILE * in read()/write() -#include // for the default template args -#include // for equal_to -#include // for alloc<> -#include // for pair<> -#include HASH_FUN_H // defined in config.h -#include - - -_START_GOOGLE_NAMESPACE_ - -using STL_NAMESPACE::pair; - -template , // defined in sparseconfig.h - class EqualKey = STL_NAMESPACE::equal_to, - class Alloc = STL_NAMESPACE::allocator > -class dense_hash_map { - private: - // Apparently select1st is not stl-standard, so we define our own - struct SelectKey { - const Key& operator()(const pair& p) const { - return p.first; - } - }; - struct SetKey { - void operator()(pair* value, const Key& new_key) const { - *const_cast(&value->first) = new_key; - // It would be nice to clear the rest of value here as well, in - // case it's taking up a lot of memory. We do this by clearing - // the value. This assumes T has a zero-arg constructor! - value->second = T(); - } - }; - - // The actual data - typedef dense_hashtable, Key, HashFcn, - SelectKey, SetKey, EqualKey, Alloc> ht; - ht rep; - - public: - typedef typename ht::key_type key_type; - typedef T data_type; - typedef T mapped_type; - typedef typename ht::value_type value_type; - typedef typename ht::hasher hasher; - typedef typename ht::key_equal key_equal; - typedef Alloc allocator_type; - - typedef typename ht::size_type size_type; - typedef typename ht::difference_type difference_type; - typedef typename ht::pointer pointer; - typedef typename ht::const_pointer const_pointer; - typedef typename ht::reference reference; - typedef typename ht::const_reference const_reference; - - typedef typename ht::iterator iterator; - typedef typename ht::const_iterator const_iterator; - typedef typename ht::local_iterator local_iterator; - typedef typename ht::const_local_iterator const_local_iterator; - - // Iterator functions - iterator begin() { return rep.begin(); } - iterator end() { return rep.end(); } - const_iterator begin() const { return rep.begin(); } - const_iterator end() const { return rep.end(); } - - - // These come from tr1's unordered_map. For us, a bucket has 0 or 1 elements. - local_iterator begin(size_type i) { return rep.begin(i); } - local_iterator end(size_type i) { return rep.end(i); } - const_local_iterator begin(size_type i) const { return rep.begin(i); } - const_local_iterator end(size_type i) const { return rep.end(i); } - - // Accessor functions - // TODO(csilvers): implement Alloc get_allocator() const; - hasher hash_funct() const { return rep.hash_funct(); } - hasher hash_function() const { return hash_funct(); } - key_equal key_eq() const { return rep.key_eq(); } - - - // Constructors - explicit dense_hash_map(size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { } - - template - dense_hash_map(InputIterator f, InputIterator l, - size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { - rep.insert(f, l); - } - // We use the default copy constructor - // We use the default operator=() - // We use the default destructor - - void clear() { rep.clear(); } - // This clears the hash map without resizing it down to the minimum - // bucket count, but rather keeps the number of buckets constant - void clear_no_resize() { rep.clear_no_resize(); } - void swap(dense_hash_map& hs) { rep.swap(hs.rep); } - - - // Functions concerning size - size_type size() const { return rep.size(); } - size_type max_size() const { return rep.max_size(); } - bool empty() const { return rep.empty(); } - size_type bucket_count() const { return rep.bucket_count(); } - size_type max_bucket_count() const { return rep.max_bucket_count(); } - - // These are tr1 methods. bucket() is the bucket the key is or would be in. - size_type bucket_size(size_type i) const { return rep.bucket_size(i); } - size_type bucket(const key_type& key) const { return rep.bucket(key); } - float load_factor() const { - return size() * 1.0f / bucket_count(); - } - float max_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return grow; - } - void max_load_factor(float new_grow) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(shrink, new_grow); - } - // These aren't tr1 methods but perhaps ought to be. - float min_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return shrink; - } - void min_load_factor(float new_shrink) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(new_shrink, grow); - } - // Deprecated; use min_load_factor() or max_load_factor() instead. - void set_resizing_parameters(float shrink, float grow) { - return rep.set_resizing_parameters(shrink, grow); - } - - void resize(size_type hint) { rep.resize(hint); } - void rehash(size_type hint) { resize(hint); } // the tr1 name - - // Lookup routines - iterator find(const key_type& key) { return rep.find(key); } - const_iterator find(const key_type& key) const { return rep.find(key); } - - data_type& operator[](const key_type& key) { // This is our value-add! - iterator it = find(key); - if (it != end()) { - return it->second; - } else { - return insert(value_type(key, data_type())).first->second; - } - } - - size_type count(const key_type& key) const { return rep.count(key); } - - pair equal_range(const key_type& key) { - return rep.equal_range(key); - } - pair equal_range(const key_type& key) const { - return rep.equal_range(key); - } - - // Insertion routines - pair insert(const value_type& obj) { return rep.insert(obj); } - template - void insert(InputIterator f, InputIterator l) { rep.insert(f, l); } - void insert(const_iterator f, const_iterator l) { rep.insert(f, l); } - // required for std::insert_iterator; the passed-in iterator is ignored - iterator insert(iterator, const value_type& obj) { return insert(obj).first; } - - - // Deletion and empty routines - // THESE ARE NON-STANDARD! I make you specify an "impossible" key - // value to identify deleted and empty buckets. You can change the - // deleted key as time goes on, or get rid of it entirely to be insert-only. - void set_empty_key(const key_type& key) { // YOU MUST CALL THIS! - rep.set_empty_key(value_type(key, data_type())); // rep wants a value - } - key_type empty_key() const { - return rep.empty_key().first; // rep returns a value - } - - void set_deleted_key(const key_type& key) { rep.set_deleted_key(key); } - void clear_deleted_key() { rep.clear_deleted_key(); } - key_type deleted_key() const { return rep.deleted_key(); } - - // These are standard - size_type erase(const key_type& key) { return rep.erase(key); } - void erase(iterator it) { rep.erase(it); } - void erase(iterator f, iterator l) { rep.erase(f, l); } - - - // Comparison - bool operator==(const dense_hash_map& hs) const { return rep == hs.rep; } - bool operator!=(const dense_hash_map& hs) const { return rep != hs.rep; } - - - // I/O -- this is an add-on for writing metainformation to disk - bool write_metadata(FILE *fp) { return rep.write_metadata(fp); } - bool read_metadata(FILE *fp) { return rep.read_metadata(fp); } - bool write_nopointer_data(FILE *fp) { return rep.write_nopointer_data(fp); } - bool read_nopointer_data(FILE *fp) { return rep.read_nopointer_data(fp); } -}; - -// We need a global swap as well -template -inline void swap(dense_hash_map& hm1, - dense_hash_map& hm2) { - hm1.swap(hm2); -} - -_END_GOOGLE_NAMESPACE_ - -#endif /* _DENSE_HASH_MAP_H_ */ diff --git a/src/sparsehash-1.6/src/google/dense_hash_set b/src/sparsehash-1.6/src/google/dense_hash_set deleted file mode 100644 index 75be3e3..0000000 --- a/src/sparsehash-1.6/src/google/dense_hash_set +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// This is just a very thin wrapper over densehashtable.h, just -// like sgi stl's stl_hash_set is a very thin wrapper over -// stl_hashtable. The major thing we define is operator[], because -// we have a concept of a data_type which stl_hashtable doesn't -// (it only has a key and a value). -// -// This is more different from dense_hash_map than you might think, -// because all iterators for sets are const (you obviously can't -// change the key, and for sets there is no value). -// -// NOTE: this is exactly like sparse_hash_set.h, with the word -// "sparse" replaced by "dense", except for the addition of -// set_empty_key(). -// -// YOU MUST CALL SET_EMPTY_KEY() IMMEDIATELY AFTER CONSTRUCTION. -// -// Otherwise your program will die in mysterious ways. -// -// In other respects, we adhere mostly to the STL semantics for -// hash-map. One important exception is that insert() may invalidate -// iterators entirely -- STL semantics are that insert() may reorder -// iterators, but they all still refer to something valid in the -// hashtable. Not so for us. Likewise, insert() may invalidate -// pointers into the hashtable. (Whether insert invalidates iterators -// and pointers depends on whether it results in a hashtable resize). -// On the plus side, delete() doesn't invalidate iterators or pointers -// at all, or even change the ordering of elements. -// -// Here are a few "power user" tips: -// -// 1) set_deleted_key(): -// If you want to use erase() you must call set_deleted_key(), -// in addition to set_empty_key(), after construction. -// The deleted and empty keys must differ. -// -// 2) resize(0): -// When an item is deleted, its memory isn't freed right -// away. This allows you to iterate over a hashtable, -// and call erase(), without invalidating the iterator. -// To force the memory to be freed, call resize(0). -// For tr1 compatibility, this can also be called as rehash(0). -// -// 3) min_load_factor(0.0) -// Setting the minimum load factor to 0.0 guarantees that -// the hash table will never shrink. -// -// Roughly speaking: -// (1) dense_hash_set: fastest, uses the most memory unless entries are small -// (2) sparse_hash_set: slowest, uses the least memory -// (3) hash_set / unordered_set (STL): in the middle -// -// Typically I use sparse_hash_set when I care about space and/or when -// I need to save the hashtable on disk. I use hash_set otherwise. I -// don't personally use dense_hash_set ever; some people use it for -// small sets with lots of lookups. -// -// - dense_hash_set has, typically, about 78% memory overhead (if your -// data takes up X bytes, the hash_set uses .78X more bytes in overhead). -// - sparse_hash_set has about 4 bits overhead per entry. -// - sparse_hash_set can be 3-7 times slower than the others for lookup and, -// especially, inserts. See time_hash_map.cc for details. -// -// See /usr/(local/)?doc/sparsehash-*/dense_hash_set.html -// for information about how to use this class. - -#ifndef _DENSE_HASH_SET_H_ -#define _DENSE_HASH_SET_H_ - -#include -#include // for FILE * in read()/write() -#include // for the default template args -#include // for equal_to -#include // for alloc<> -#include // for pair<> -#include HASH_FUN_H // defined in config.h -#include - - -_START_GOOGLE_NAMESPACE_ - -using STL_NAMESPACE::pair; - -template , // defined in sparseconfig.h - class EqualKey = STL_NAMESPACE::equal_to, - class Alloc = STL_NAMESPACE::allocator > -class dense_hash_set { - private: - // Apparently identity is not stl-standard, so we define our own - struct Identity { - Value& operator()(Value& v) const { return v; } - const Value& operator()(const Value& v) const { return v; } - }; - struct SetKey { - void operator()(Value* value, const Value& new_key) const { - *value = new_key; - } - }; - - // The actual data - typedef dense_hashtable ht; - ht rep; - - public: - typedef typename ht::key_type key_type; - typedef typename ht::value_type value_type; - typedef typename ht::hasher hasher; - typedef typename ht::key_equal key_equal; - typedef Alloc allocator_type; - - typedef typename ht::size_type size_type; - typedef typename ht::difference_type difference_type; - typedef typename ht::const_pointer pointer; - typedef typename ht::const_pointer const_pointer; - typedef typename ht::const_reference reference; - typedef typename ht::const_reference const_reference; - - typedef typename ht::const_iterator iterator; - typedef typename ht::const_iterator const_iterator; - typedef typename ht::const_local_iterator local_iterator; - typedef typename ht::const_local_iterator const_local_iterator; - - - // Iterator functions -- recall all iterators are const - iterator begin() const { return rep.begin(); } - iterator end() const { return rep.end(); } - - // These come from tr1's unordered_set. For us, a bucket has 0 or 1 elements. - local_iterator begin(size_type i) const { return rep.begin(i); } - local_iterator end(size_type i) const { return rep.end(i); } - - - // Accessor functions - hasher hash_funct() const { return rep.hash_funct(); } - key_equal key_eq() const { return rep.key_eq(); } - - - // Constructors - explicit dense_hash_set(size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { } - - template - dense_hash_set(InputIterator f, InputIterator l, - size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { - rep.insert(f, l); - } - // We use the default copy constructor - // We use the default operator=() - // We use the default destructor - - void clear() { rep.clear(); } - // This clears the hash set without resizing it down to the minimum - // bucket count, but rather keeps the number of buckets constant - void clear_no_resize() { rep.clear_no_resize(); } - void swap(dense_hash_set& hs) { rep.swap(hs.rep); } - - - // Functions concerning size - size_type size() const { return rep.size(); } - size_type max_size() const { return rep.max_size(); } - bool empty() const { return rep.empty(); } - size_type bucket_count() const { return rep.bucket_count(); } - size_type max_bucket_count() const { return rep.max_bucket_count(); } - - // These are tr1 methods. bucket() is the bucket the key is or would be in. - size_type bucket_size(size_type i) const { return rep.bucket_size(i); } - size_type bucket(const key_type& key) const { return rep.bucket(key); } - float load_factor() const { - return size() * 1.0f / bucket_count(); - } - float max_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return grow; - } - void max_load_factor(float new_grow) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(shrink, new_grow); - } - // These aren't tr1 methods but perhaps ought to be. - float min_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return shrink; - } - void min_load_factor(float new_shrink) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(new_shrink, grow); - } - // Deprecated; use min_load_factor() or max_load_factor() instead. - void set_resizing_parameters(float shrink, float grow) { - return rep.set_resizing_parameters(shrink, grow); - } - - void resize(size_type hint) { rep.resize(hint); } - void rehash(size_type hint) { resize(hint); } // the tr1 name - - // Lookup routines - iterator find(const key_type& key) const { return rep.find(key); } - - size_type count(const key_type& key) const { return rep.count(key); } - - pair equal_range(const key_type& key) const { - return rep.equal_range(key); - } - - // Insertion routines - pair insert(const value_type& obj) { - pair p = rep.insert(obj); - return pair(p.first, p.second); // const to non-const - } - template - void insert(InputIterator f, InputIterator l) { rep.insert(f, l); } - void insert(const_iterator f, const_iterator l) { rep.insert(f, l); } - // required for std::insert_iterator; the passed-in iterator is ignored - iterator insert(iterator, const value_type& obj) { return insert(obj).first; } - - - // Deletion and empty routines - // THESE ARE NON-STANDARD! I make you specify an "impossible" key - // value to identify deleted and empty buckets. You can change the - // deleted key as time goes on, or get rid of it entirely to be insert-only. - void set_empty_key(const key_type& key) { rep.set_empty_key(key); } - key_type empty_key() const { return rep.empty_key(); } - - void set_deleted_key(const key_type& key) { rep.set_deleted_key(key); } - void clear_deleted_key() { rep.clear_deleted_key(); } - key_type deleted_key() const { return rep.deleted_key(); } - - // These are standard - size_type erase(const key_type& key) { return rep.erase(key); } - void erase(iterator it) { rep.erase(it); } - void erase(iterator f, iterator l) { rep.erase(f, l); } - - - // Comparison - bool operator==(const dense_hash_set& hs) const { return rep == hs.rep; } - bool operator!=(const dense_hash_set& hs) const { return rep != hs.rep; } - - - // I/O -- this is an add-on for writing metainformation to disk - bool write_metadata(FILE *fp) { return rep.write_metadata(fp); } - bool read_metadata(FILE *fp) { return rep.read_metadata(fp); } - bool write_nopointer_data(FILE *fp) { return rep.write_nopointer_data(fp); } - bool read_nopointer_data(FILE *fp) { return rep.read_nopointer_data(fp); } -}; - -template -inline void swap(dense_hash_set& hs1, - dense_hash_set& hs2) { - hs1.swap(hs2); -} - -_END_GOOGLE_NAMESPACE_ - -#endif /* _DENSE_HASH_SET_H_ */ diff --git a/src/sparsehash-1.6/src/google/sparse_hash_map b/src/sparsehash-1.6/src/google/sparse_hash_map deleted file mode 100644 index 82ab2bd..0000000 --- a/src/sparsehash-1.6/src/google/sparse_hash_map +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// This is just a very thin wrapper over sparsehashtable.h, just -// like sgi stl's stl_hash_map is a very thin wrapper over -// stl_hashtable. The major thing we define is operator[], because -// we have a concept of a data_type which stl_hashtable doesn't -// (it only has a key and a value). -// -// We adhere mostly to the STL semantics for hash-map. One important -// exception is that insert() may invalidate iterators entirely -- STL -// semantics are that insert() may reorder iterators, but they all -// still refer to something valid in the hashtable. Not so for us. -// Likewise, insert() may invalidate pointers into the hashtable. -// (Whether insert invalidates iterators and pointers depends on -// whether it results in a hashtable resize). On the plus side, -// delete() doesn't invalidate iterators or pointers at all, or even -// change the ordering of elements. -// -// Here are a few "power user" tips: -// -// 1) set_deleted_key(): -// Unlike STL's hash_map, if you want to use erase() you -// *must* call set_deleted_key() after construction. -// -// 2) resize(0): -// When an item is deleted, its memory isn't freed right -// away. This is what allows you to iterate over a hashtable -// and call erase() without invalidating the iterator. -// To force the memory to be freed, call resize(0). -// For tr1 compatibility, this can also be called as rehash(0). -// -// 3) min_load_factor(0.0) -// Setting the minimum load factor to 0.0 guarantees that -// the hash table will never shrink. -// -// Roughly speaking: -// (1) dense_hash_map: fastest, uses the most memory unless entries are small -// (2) sparse_hash_map: slowest, uses the least memory -// (3) hash_map / unordered_map (STL): in the middle -// -// Typically I use sparse_hash_map when I care about space and/or when -// I need to save the hashtable on disk. I use hash_map otherwise. I -// don't personally use dense_hash_map ever; some people use it for -// small maps with lots of lookups. -// -// - dense_hash_map has, typically, about 78% memory overhead (if your -// data takes up X bytes, the hash_map uses .78X more bytes in overhead). -// - sparse_hash_map has about 4 bits overhead per entry. -// - sparse_hash_map can be 3-7 times slower than the others for lookup and, -// especially, inserts. See time_hash_map.cc for details. -// -// See /usr/(local/)?doc/sparsehash-*/sparse_hash_map.html -// for information about how to use this class. - -#ifndef _SPARSE_HASH_MAP_H_ -#define _SPARSE_HASH_MAP_H_ - -#include -#include // for FILE * in read()/write() -#include // for the default template args -#include // for equal_to -#include // for alloc<> -#include // for pair<> -#include HASH_FUN_H // defined in config.h -#include - - -_START_GOOGLE_NAMESPACE_ - -using STL_NAMESPACE::pair; - -template , // defined in sparseconfig.h - class EqualKey = STL_NAMESPACE::equal_to, - class Alloc = STL_NAMESPACE::allocator > -class sparse_hash_map { - private: - // Apparently select1st is not stl-standard, so we define our own - struct SelectKey { - const Key& operator()(const pair& p) const { - return p.first; - } - }; - struct SetKey { - void operator()(pair* value, const Key& new_key) const { - *const_cast(&value->first) = new_key; - // It would be nice to clear the rest of value here as well, in - // case it's taking up a lot of memory. We do this by clearing - // the value. This assumes T has a zero-arg constructor! - value->second = T(); - } - }; - - // The actual data - typedef sparse_hashtable, Key, HashFcn, - SelectKey, SetKey, EqualKey, Alloc> ht; - ht rep; - - public: - typedef typename ht::key_type key_type; - typedef T data_type; - typedef T mapped_type; - typedef typename ht::value_type value_type; - typedef typename ht::hasher hasher; - typedef typename ht::key_equal key_equal; - typedef Alloc allocator_type; - - typedef typename ht::size_type size_type; - typedef typename ht::difference_type difference_type; - typedef typename ht::pointer pointer; - typedef typename ht::const_pointer const_pointer; - typedef typename ht::reference reference; - typedef typename ht::const_reference const_reference; - - typedef typename ht::iterator iterator; - typedef typename ht::const_iterator const_iterator; - typedef typename ht::local_iterator local_iterator; - typedef typename ht::const_local_iterator const_local_iterator; - - // Iterator functions - iterator begin() { return rep.begin(); } - iterator end() { return rep.end(); } - const_iterator begin() const { return rep.begin(); } - const_iterator end() const { return rep.end(); } - - // These come from tr1's unordered_map. For us, a bucket has 0 or 1 elements. - local_iterator begin(size_type i) { return rep.begin(i); } - local_iterator end(size_type i) { return rep.end(i); } - const_local_iterator begin(size_type i) const { return rep.begin(i); } - const_local_iterator end(size_type i) const { return rep.end(i); } - - // Accessor functions - // TODO(csilvers): implement Alloc get_allocator() const; - hasher hash_funct() const { return rep.hash_funct(); } - hasher hash_function() const { return hash_funct(); } - key_equal key_eq() const { return rep.key_eq(); } - - - // Constructors - explicit sparse_hash_map(size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { } - - template - sparse_hash_map(InputIterator f, InputIterator l, - size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { - rep.insert(f, l); - } - // We use the default copy constructor - // We use the default operator=() - // We use the default destructor - - void clear() { rep.clear(); } - void swap(sparse_hash_map& hs) { rep.swap(hs.rep); } - - - // Functions concerning size - size_type size() const { return rep.size(); } - size_type max_size() const { return rep.max_size(); } - bool empty() const { return rep.empty(); } - size_type bucket_count() const { return rep.bucket_count(); } - size_type max_bucket_count() const { return rep.max_bucket_count(); } - - // These are tr1 methods. bucket() is the bucket the key is or would be in. - size_type bucket_size(size_type i) const { return rep.bucket_size(i); } - size_type bucket(const key_type& key) const { return rep.bucket(key); } - float load_factor() const { - return size() * 1.0f / bucket_count(); - } - float max_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return grow; - } - void max_load_factor(float new_grow) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(shrink, new_grow); - } - // These aren't tr1 methods but perhaps ought to be. - float min_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return shrink; - } - void min_load_factor(float new_shrink) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(new_shrink, grow); - } - // Deprecated; use min_load_factor() or max_load_factor() instead. - void set_resizing_parameters(float shrink, float grow) { - return rep.set_resizing_parameters(shrink, grow); - } - - void resize(size_type hint) { rep.resize(hint); } - void rehash(size_type hint) { resize(hint); } // the tr1 name - - // Lookup routines - iterator find(const key_type& key) { return rep.find(key); } - const_iterator find(const key_type& key) const { return rep.find(key); } - - data_type& operator[](const key_type& key) { // This is our value-add! - iterator it = find(key); - if (it != end()) { - return it->second; - } else { - return insert(value_type(key, data_type())).first->second; - } - } - - size_type count(const key_type& key) const { return rep.count(key); } - - pair equal_range(const key_type& key) { - return rep.equal_range(key); - } - pair equal_range(const key_type& key) const { - return rep.equal_range(key); - } - - // Insertion routines - pair insert(const value_type& obj) { return rep.insert(obj); } - template - void insert(InputIterator f, InputIterator l) { rep.insert(f, l); } - void insert(const_iterator f, const_iterator l) { rep.insert(f, l); } - // required for std::insert_iterator; the passed-in iterator is ignored - iterator insert(iterator, const value_type& obj) { return insert(obj).first; } - - - // Deletion routines - // THESE ARE NON-STANDARD! I make you specify an "impossible" key - // value to identify deleted buckets. You can change the key as - // time goes on, or get rid of it entirely to be insert-only. - void set_deleted_key(const key_type& key) { - rep.set_deleted_key(key); - } - void clear_deleted_key() { rep.clear_deleted_key(); } - key_type deleted_key() const { return rep.deleted_key(); } - - // These are standard - size_type erase(const key_type& key) { return rep.erase(key); } - void erase(iterator it) { rep.erase(it); } - void erase(iterator f, iterator l) { rep.erase(f, l); } - - - // Comparison - bool operator==(const sparse_hash_map& hs) const { return rep == hs.rep; } - bool operator!=(const sparse_hash_map& hs) const { return rep != hs.rep; } - - - // I/O -- this is an add-on for writing metainformation to disk - bool write_metadata(FILE *fp) { return rep.write_metadata(fp); } - bool read_metadata(FILE *fp) { return rep.read_metadata(fp); } - bool write_nopointer_data(FILE *fp) { return rep.write_nopointer_data(fp); } - bool read_nopointer_data(FILE *fp) { return rep.read_nopointer_data(fp); } -}; - -// We need a global swap as well -template -inline void swap(sparse_hash_map& hm1, - sparse_hash_map& hm2) { - hm1.swap(hm2); -} - -_END_GOOGLE_NAMESPACE_ - -#endif /* _SPARSE_HASH_MAP_H_ */ diff --git a/src/sparsehash-1.6/src/google/sparse_hash_set b/src/sparsehash-1.6/src/google/sparse_hash_set deleted file mode 100644 index 17b4ad5..0000000 --- a/src/sparsehash-1.6/src/google/sparse_hash_set +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// This is just a very thin wrapper over sparsehashtable.h, just -// like sgi stl's stl_hash_set is a very thin wrapper over -// stl_hashtable. The major thing we define is operator[], because -// we have a concept of a data_type which stl_hashtable doesn't -// (it only has a key and a value). -// -// This is more different from sparse_hash_map than you might think, -// because all iterators for sets are const (you obviously can't -// change the key, and for sets there is no value). -// -// We adhere mostly to the STL semantics for hash-map. One important -// exception is that insert() may invalidate iterators entirely -- STL -// semantics are that insert() may reorder iterators, but they all -// still refer to something valid in the hashtable. Not so for us. -// Likewise, insert() may invalidate pointers into the hashtable. -// (Whether insert invalidates iterators and pointers depends on -// whether it results in a hashtable resize). On the plus side, -// delete() doesn't invalidate iterators or pointers at all, or even -// change the ordering of elements. -// -// Here are a few "power user" tips: -// -// 1) set_deleted_key(): -// Unlike STL's hash_map, if you want to use erase() you -// *must* call set_deleted_key() after construction. -// -// 2) resize(0): -// When an item is deleted, its memory isn't freed right -// away. This allows you to iterate over a hashtable, -// and call erase(), without invalidating the iterator. -// To force the memory to be freed, call resize(0). -// For tr1 compatibility, this can also be called as rehash(0). -// -// 3) min_load_factor(0.0) -// Setting the minimum load factor to 0.0 guarantees that -// the hash table will never shrink. -// -// Roughly speaking: -// (1) dense_hash_set: fastest, uses the most memory unless entries are small -// (2) sparse_hash_set: slowest, uses the least memory -// (3) hash_set / unordered_set (STL): in the middle -// -// Typically I use sparse_hash_set when I care about space and/or when -// I need to save the hashtable on disk. I use hash_set otherwise. I -// don't personally use dense_hash_set ever; some people use it for -// small sets with lots of lookups. -// -// - dense_hash_set has, typically, about 78% memory overhead (if your -// data takes up X bytes, the hash_set uses .78X more bytes in overhead). -// - sparse_hash_set has about 4 bits overhead per entry. -// - sparse_hash_set can be 3-7 times slower than the others for lookup and, -// especially, inserts. See time_hash_map.cc for details. -// -// See /usr/(local/)?doc/sparsehash-*/sparse_hash_set.html -// for information about how to use this class. - -#ifndef _SPARSE_HASH_SET_H_ -#define _SPARSE_HASH_SET_H_ - -#include -#include // for FILE * in read()/write() -#include // for the default template args -#include // for equal_to -#include // for alloc<> -#include // for pair<> -#include HASH_FUN_H // defined in config.h -#include - -_START_GOOGLE_NAMESPACE_ - -using STL_NAMESPACE::pair; - -template , // defined in sparseconfig.h - class EqualKey = STL_NAMESPACE::equal_to, - class Alloc = STL_NAMESPACE::allocator > -class sparse_hash_set { - private: - // Apparently identity is not stl-standard, so we define our own - struct Identity { - Value& operator()(Value& v) const { return v; } - const Value& operator()(const Value& v) const { return v; } - }; - struct SetKey { - void operator()(Value* value, const Value& new_key) const { - *value = new_key; - } - }; - - // The actual data - typedef sparse_hashtable ht; - ht rep; - - public: - typedef typename ht::key_type key_type; - typedef typename ht::value_type value_type; - typedef typename ht::hasher hasher; - typedef typename ht::key_equal key_equal; - typedef Alloc allocator_type; - - typedef typename ht::size_type size_type; - typedef typename ht::difference_type difference_type; - typedef typename ht::const_pointer pointer; - typedef typename ht::const_pointer const_pointer; - typedef typename ht::const_reference reference; - typedef typename ht::const_reference const_reference; - - typedef typename ht::const_iterator iterator; - typedef typename ht::const_iterator const_iterator; - typedef typename ht::const_local_iterator local_iterator; - typedef typename ht::const_local_iterator const_local_iterator; - - - // Iterator functions -- recall all iterators are const - iterator begin() const { return rep.begin(); } - iterator end() const { return rep.end(); } - - // These come from tr1's unordered_set. For us, a bucket has 0 or 1 elements. - local_iterator begin(size_type i) const { return rep.begin(i); } - local_iterator end(size_type i) const { return rep.end(i); } - - - // Accessor functions - // TODO(csilvers): implement Alloc get_allocator() const; - hasher hash_funct() const { return rep.hash_funct(); } - hasher hash_function() const { return hash_funct(); } // tr1 name - key_equal key_eq() const { return rep.key_eq(); } - - - // Constructors - explicit sparse_hash_set(size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { } - - template - sparse_hash_set(InputIterator f, InputIterator l, - size_type expected_max_items_in_table = 0, - const hasher& hf = hasher(), - const key_equal& eql = key_equal()) - : rep(expected_max_items_in_table, hf, eql) { - rep.insert(f, l); - } - // We use the default copy constructor - // We use the default operator=() - // We use the default destructor - - void clear() { rep.clear(); } - void swap(sparse_hash_set& hs) { rep.swap(hs.rep); } - - - // Functions concerning size - size_type size() const { return rep.size(); } - size_type max_size() const { return rep.max_size(); } - bool empty() const { return rep.empty(); } - size_type bucket_count() const { return rep.bucket_count(); } - size_type max_bucket_count() const { return rep.max_bucket_count(); } - - // These are tr1 methods. bucket() is the bucket the key is or would be in. - size_type bucket_size(size_type i) const { return rep.bucket_size(i); } - size_type bucket(const key_type& key) const { return rep.bucket(key); } - float load_factor() const { - return size() * 1.0f / bucket_count(); - } - float max_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return grow; - } - void max_load_factor(float new_grow) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(shrink, new_grow); - } - // These aren't tr1 methods but perhaps ought to be. - float min_load_factor() const { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - return shrink; - } - void min_load_factor(float new_shrink) { - float shrink, grow; - rep.get_resizing_parameters(&shrink, &grow); - rep.set_resizing_parameters(new_shrink, grow); - } - // Deprecated; use min_load_factor() or max_load_factor() instead. - void set_resizing_parameters(float shrink, float grow) { - return rep.set_resizing_parameters(shrink, grow); - } - - void resize(size_type hint) { rep.resize(hint); } - void rehash(size_type hint) { resize(hint); } // the tr1 name - - // Lookup routines - iterator find(const key_type& key) const { return rep.find(key); } - - size_type count(const key_type& key) const { return rep.count(key); } - - pair equal_range(const key_type& key) const { - return rep.equal_range(key); - } - - // Insertion routines - pair insert(const value_type& obj) { - pair p = rep.insert(obj); - return pair(p.first, p.second); // const to non-const - } - template - void insert(InputIterator f, InputIterator l) { rep.insert(f, l); } - void insert(const_iterator f, const_iterator l) { rep.insert(f, l); } - // required for std::insert_iterator; the passed-in iterator is ignored - iterator insert(iterator, const value_type& obj) { return insert(obj).first; } - - - // Deletion routines - // THESE ARE NON-STANDARD! I make you specify an "impossible" key - // value to identify deleted buckets. You can change the key as - // time goes on, or get rid of it entirely to be insert-only. - void set_deleted_key(const key_type& key) { rep.set_deleted_key(key); } - void clear_deleted_key() { rep.clear_deleted_key(); } - key_type deleted_key() const { return rep.deleted_key(); } - - // These are standard - size_type erase(const key_type& key) { return rep.erase(key); } - void erase(iterator it) { rep.erase(it); } - void erase(iterator f, iterator l) { rep.erase(f, l); } - - - // Comparison - bool operator==(const sparse_hash_set& hs) const { return rep == hs.rep; } - bool operator!=(const sparse_hash_set& hs) const { return rep != hs.rep; } - - - // I/O -- this is an add-on for writing metainformation to disk - bool write_metadata(FILE *fp) { return rep.write_metadata(fp); } - bool read_metadata(FILE *fp) { return rep.read_metadata(fp); } - bool write_nopointer_data(FILE *fp) { return rep.write_nopointer_data(fp); } - bool read_nopointer_data(FILE *fp) { return rep.read_nopointer_data(fp); } -}; - -template -inline void swap(sparse_hash_set& hs1, - sparse_hash_set& hs2) { - hs1.swap(hs2); -} - -_END_GOOGLE_NAMESPACE_ - -#endif /* _SPARSE_HASH_SET_H_ */ diff --git a/src/sparsehash-1.6/src/google/sparsehash/densehashtable.h b/src/sparsehash-1.6/src/google/sparsehash/densehashtable.h deleted file mode 100644 index 50d9b92..0000000 --- a/src/sparsehash-1.6/src/google/sparsehash/densehashtable.h +++ /dev/null @@ -1,1158 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// A dense hashtable is a particular implementation of -// a hashtable: one that is meant to minimize memory allocation. -// It does this by using an array to store all the data. We -// steal a value from the key space to indicate "empty" array -// elements (ie indices where no item lives) and another to indicate -// "deleted" elements. -// -// (Note it is possible to change the value of the delete key -// on the fly; you can even remove it, though after that point -// the hashtable is insert_only until you set it again. The empty -// value however can't be changed.) -// -// To minimize allocation and pointer overhead, we use internal -// probing, in which the hashtable is a single table, and collisions -// are resolved by trying to insert again in another bucket. The -// most cache-efficient internal probing schemes are linear probing -// (which suffers, alas, from clumping) and quadratic probing, which -// is what we implement by default. -// -// Type requirements: value_type is required to be Copy Constructible -// and Default Constructible. It is not required to be (and commonly -// isn't) Assignable. -// -// You probably shouldn't use this code directly. Use -// or instead. - -// You can change the following below: -// HT_OCCUPANCY_FLT -- how full before we double size -// HT_EMPTY_FLT -- how empty before we halve size -// HT_MIN_BUCKETS -- default smallest bucket size -// -// You can also change enlarge_resize_percent (which defaults to -// HT_OCCUPANCY_FLT), and shrink_resize_percent (which defaults to -// HT_EMPTY_FLT) with set_resizing_parameters(). -// -// How to decide what values to use? -// shrink_resize_percent's default of .4 * OCCUPANCY_FLT, is probably good. -// HT_MIN_BUCKETS is probably unnecessary since you can specify -// (indirectly) the starting number of buckets at construct-time. -// For enlarge_resize_percent, you can use this chart to try to trade-off -// expected lookup time to the space taken up. By default, this -// code uses quadratic probing, though you can change it to linear -// via _JUMP below if you really want to. -// -// From http://www.augustana.ca/~mohrj/courses/1999.fall/csc210/lecture_notes/hashing.html -// NUMBER OF PROBES / LOOKUP Successful Unsuccessful -// Quadratic collision resolution 1 - ln(1-L) - L/2 1/(1-L) - L - ln(1-L) -// Linear collision resolution [1+1/(1-L)]/2 [1+1/(1-L)2]/2 -// -// -- enlarge_resize_percent -- 0.10 0.50 0.60 0.75 0.80 0.90 0.99 -// QUADRATIC COLLISION RES. -// probes/successful lookup 1.05 1.44 1.62 2.01 2.21 2.85 5.11 -// probes/unsuccessful lookup 1.11 2.19 2.82 4.64 5.81 11.4 103.6 -// LINEAR COLLISION RES. -// probes/successful lookup 1.06 1.5 1.75 2.5 3.0 5.5 50.5 -// probes/unsuccessful lookup 1.12 2.5 3.6 8.5 13.0 50.0 5000.0 - -#ifndef _DENSEHASHTABLE_H_ -#define _DENSEHASHTABLE_H_ - -// The probing method -// Linear probing -// #define JUMP_(key, num_probes) ( 1 ) -// Quadratic-ish probing -#define JUMP_(key, num_probes) ( num_probes ) - - -#include -#include -#include -#include // for abort() -#include // For swap(), eg -#include // For length_error -#include // For cerr -#include // For uninitialized_fill, uninitialized_copy -#include // for pair<> -#include // for facts about iterator tags -#include // for true_type, integral_constant, etc. - -_START_GOOGLE_NAMESPACE_ - -using STL_NAMESPACE::pair; - -// Hashtable class, used to implement the hashed associative containers -// hash_set and hash_map. - -// Value: what is stored in the table (each bucket is a Value). -// Key: something in a 1-to-1 correspondence to a Value, that can be used -// to search for a Value in the table (find() takes a Key). -// HashFcn: Takes a Key and returns an integer, the more unique the better. -// ExtractKey: given a Value, returns the unique Key associated with it. -// SetKey: given a Value* and a Key, modifies the value such that -// ExtractKey(value) == key. We guarantee this is only called -// with key == deleted_key or key == empty_key. -// EqualKey: Given two Keys, says whether they are the same (that is, -// if they are both associated with the same Value). -// Alloc: STL allocator to use to allocate memory. Currently ignored. - -template -class dense_hashtable; - -template -struct dense_hashtable_iterator; - -template -struct dense_hashtable_const_iterator; - -// We're just an array, but we need to skip over empty and deleted elements -template -struct dense_hashtable_iterator { - public: - typedef dense_hashtable_iterator iterator; - typedef dense_hashtable_const_iterator const_iterator; - - typedef STL_NAMESPACE::forward_iterator_tag iterator_category; - typedef V value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef V& reference; // Value - typedef V* pointer; - - // "Real" constructor and default constructor - dense_hashtable_iterator(const dense_hashtable *h, - pointer it, pointer it_end, bool advance) - : ht(h), pos(it), end(it_end) { - if (advance) advance_past_empty_and_deleted(); - } - dense_hashtable_iterator() { } - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // Happy dereferencer - reference operator*() const { return *pos; } - pointer operator->() const { return &(operator*()); } - - // Arithmetic. The only hard part is making sure that - // we're not on an empty or marked-deleted array element - void advance_past_empty_and_deleted() { - while ( pos != end && (ht->test_empty(*this) || ht->test_deleted(*this)) ) - ++pos; - } - iterator& operator++() { - assert(pos != end); ++pos; advance_past_empty_and_deleted(); return *this; - } - iterator operator++(int) { iterator tmp(*this); ++*this; return tmp; } - - // Comparison. - bool operator==(const iterator& it) const { return pos == it.pos; } - bool operator!=(const iterator& it) const { return pos != it.pos; } - - - // The actual data - const dense_hashtable *ht; - pointer pos, end; -}; - - -// Now do it all again, but with const-ness! -template -struct dense_hashtable_const_iterator { - public: - typedef dense_hashtable_iterator iterator; - typedef dense_hashtable_const_iterator const_iterator; - - typedef STL_NAMESPACE::forward_iterator_tag iterator_category; - typedef V value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef const V& reference; // Value - typedef const V* pointer; - - // "Real" constructor and default constructor - dense_hashtable_const_iterator( - const dense_hashtable *h, - pointer it, pointer it_end, bool advance) - : ht(h), pos(it), end(it_end) { - if (advance) advance_past_empty_and_deleted(); - } - dense_hashtable_const_iterator() { } - // This lets us convert regular iterators to const iterators - dense_hashtable_const_iterator(const iterator &it) - : ht(it.ht), pos(it.pos), end(it.end) { } - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // Happy dereferencer - reference operator*() const { return *pos; } - pointer operator->() const { return &(operator*()); } - - // Arithmetic. The only hard part is making sure that - // we're not on an empty or marked-deleted array element - void advance_past_empty_and_deleted() { - while ( pos != end && (ht->test_empty(*this) || ht->test_deleted(*this)) ) - ++pos; - } - const_iterator& operator++() { - assert(pos != end); ++pos; advance_past_empty_and_deleted(); return *this; - } - const_iterator operator++(int) { const_iterator tmp(*this); ++*this; return tmp; } - - // Comparison. - bool operator==(const const_iterator& it) const { return pos == it.pos; } - bool operator!=(const const_iterator& it) const { return pos != it.pos; } - - - // The actual data - const dense_hashtable *ht; - pointer pos, end; -}; - -template -class dense_hashtable { - public: - typedef Key key_type; - typedef Value value_type; - typedef HashFcn hasher; - typedef EqualKey key_equal; - - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef dense_hashtable_iterator - iterator; - - typedef dense_hashtable_const_iterator - const_iterator; - - // These come from tr1. For us they're the same as regular iterators. - typedef iterator local_iterator; - typedef const_iterator const_local_iterator; - - // How full we let the table get before we resize, by default. - // Knuth says .8 is good -- higher causes us to probe too much, - // though it saves memory. - static const float HT_OCCUPANCY_FLT; // = 0.5; - - // How empty we let the table get before we resize lower, by default. - // (0.0 means never resize lower.) - // It should be less than OCCUPANCY_FLT / 2 or we thrash resizing - static const float HT_EMPTY_FLT; // = 0.4 * HT_OCCUPANCY_FLT - - // Minimum size we're willing to let hashtables be. - // Must be a power of two, and at least 4. - // Note, however, that for a given hashtable, the initial size is a - // function of the first constructor arg, and may be >HT_MIN_BUCKETS. - static const size_t HT_MIN_BUCKETS = 4; - - // By default, if you don't specify a hashtable size at - // construction-time, we use this size. Must be a power of two, and - // at least HT_MIN_BUCKETS. - static const size_t HT_DEFAULT_STARTING_BUCKETS = 32; - - - // ITERATOR FUNCTIONS - iterator begin() { return iterator(this, table, - table + num_buckets, true); } - iterator end() { return iterator(this, table + num_buckets, - table + num_buckets, true); } - const_iterator begin() const { return const_iterator(this, table, - table+num_buckets,true);} - const_iterator end() const { return const_iterator(this, table + num_buckets, - table+num_buckets,true);} - - // These come from tr1 unordered_map. They iterate over 'bucket' n. - // For sparsehashtable, we could consider each 'group' to be a bucket, - // I guess, but I don't really see the point. We'll just consider - // bucket n to be the n-th element of the sparsetable, if it's occupied, - // or some empty element, otherwise. - local_iterator begin(size_type i) { - return local_iterator(this, table + i, table + i+1, false); - } - local_iterator end(size_type i) { - local_iterator it = begin(i); - if (!test_empty(i) && !test_deleted(i)) - ++it; - return it; - } - const_local_iterator begin(size_type i) const { - return const_local_iterator(this, table + i, table + i+1, false); - } - const_local_iterator end(size_type i) const { - const_local_iterator it = begin(i); - if (!test_empty(i) && !test_deleted(i)) - ++it; - return it; - } - - // ACCESSOR FUNCTIONS for the things we templatize on, basically - hasher hash_funct() const { return hash; } - key_equal key_eq() const { return equals; } - - // Accessor function for statistics gathering. - int num_table_copies() const { return num_ht_copies; } - - private: - // Annoyingly, we can't copy values around, because they might have - // const components (they're probably pair). We use - // explicit destructor invocation and placement new to get around - // this. Arg. - void set_value(value_type* dst, const value_type& src) { - dst->~value_type(); - new(dst) value_type(src); - } - - void destroy_buckets(size_type first, size_type last) { - for ( ; first != last; ++first) - table[first].~value_type(); - } - - // DELETE HELPER FUNCTIONS - // This lets the user describe a key that will indicate deleted - // table entries. This key should be an "impossible" entry -- - // if you try to insert it for real, you won't be able to retrieve it! - // (NB: while you pass in an entire value, only the key part is looked - // at. This is just because I don't know how to assign just a key.) - private: - void squash_deleted() { // gets rid of any deleted entries we have - if ( num_deleted ) { // get rid of deleted before writing - dense_hashtable tmp(*this); // copying will get rid of deleted - swap(tmp); // now we are tmp - } - assert(num_deleted == 0); - } - - bool test_deleted_key(const key_type& key) const { - // The num_deleted test is crucial for read(): after read(), the ht values - // are garbage, and we don't want to think some of them are deleted. - // Invariant: !use_deleted implies num_deleted is 0. - assert(use_deleted || num_deleted == 0); - return num_deleted > 0 && equals(delkey, key); - } - - public: - void set_deleted_key(const key_type &key) { - // the empty indicator (if specified) and the deleted indicator - // must be different - assert(!use_empty || !equals(key, get_key(emptyval))); - // It's only safe to change what "deleted" means if we purge deleted guys - squash_deleted(); - use_deleted = true; - delkey = key; - } - void clear_deleted_key() { - squash_deleted(); - use_deleted = false; - } - key_type deleted_key() const { - assert(use_deleted); - return delkey; - } - - // These are public so the iterators can use them - // True if the item at position bucknum is "deleted" marker - bool test_deleted(size_type bucknum) const { - return test_deleted_key(get_key(table[bucknum])); - } - bool test_deleted(const iterator &it) const { - return test_deleted_key(get_key(*it)); - } - bool test_deleted(const const_iterator &it) const { - return test_deleted_key(get_key(*it)); - } - - // Set it so test_deleted is true. true if object didn't used to be deleted. - bool set_deleted(iterator &it) { - assert(use_deleted); // bad if set_deleted_key() wasn't called - bool retval = !test_deleted(it); - // &* converts from iterator to value-type. - set_key(&(*it), delkey); - return retval; - } - // Set it so test_deleted is false. true if object used to be deleted - bool clear_deleted(iterator &it) { - assert(use_deleted); // bad if set_deleted_key() wasn't called - // Happens automatically when we assign something else in its place. - return test_deleted(it); - } - - // We also allow to set/clear the deleted bit on a const iterator. - // We allow a const_iterator for the same reason you can delete a - // const pointer: it's convenient, and semantically you can't use - // 'it' after it's been deleted anyway, so its const-ness doesn't - // really matter. - bool set_deleted(const_iterator &it) { - assert(use_deleted); // bad if set_deleted_key() wasn't called - bool retval = !test_deleted(it); - set_key(const_cast(&(*it)), delkey); - return retval; - } - // Set it so test_deleted is false. true if object used to be deleted - bool clear_deleted(const_iterator &it) { - assert(use_deleted); // bad if set_deleted_key() wasn't called - return test_deleted(it); - } - - // EMPTY HELPER FUNCTIONS - // This lets the user describe a key that will indicate empty (unused) - // table entries. This key should be an "impossible" entry -- - // if you try to insert it for real, you won't be able to retrieve it! - // (NB: while you pass in an entire value, only the key part is looked - // at. This is just because I don't know how to assign just a key.) - public: - // These are public so the iterators can use them - // True if the item at position bucknum is "empty" marker - bool test_empty(size_type bucknum) const { - assert(use_empty); // we always need to know what's empty! - return equals(get_key(emptyval), get_key(table[bucknum])); - } - bool test_empty(const iterator &it) const { - assert(use_empty); // we always need to know what's empty! - return equals(get_key(emptyval), get_key(*it)); - } - bool test_empty(const const_iterator &it) const { - assert(use_empty); // we always need to know what's empty! - return equals(get_key(emptyval), get_key(*it)); - } - - private: - // You can either set a range empty or an individual element - void set_empty(size_type bucknum) { - assert(use_empty); - set_value(&table[bucknum], emptyval); - } - void fill_range_with_empty(value_type* table_start, value_type* table_end) { - // Like set_empty(range), but doesn't destroy previous contents - STL_NAMESPACE::uninitialized_fill(table_start, table_end, emptyval); - } - void set_empty(size_type buckstart, size_type buckend) { - assert(use_empty); - destroy_buckets(buckstart, buckend); - fill_range_with_empty(table + buckstart, table + buckend); - } - - public: - // TODO(csilvers): change all callers of this to pass in a key instead, - // and take a const key_type instead of const value_type. - void set_empty_key(const value_type &val) { - // Once you set the empty key, you can't change it - assert(!use_empty); - // The deleted indicator (if specified) and the empty indicator - // must be different. - assert(!use_deleted || !equals(get_key(val), delkey)); - use_empty = true; - set_value(&emptyval, val); - - assert(!table); // must set before first use - // num_buckets was set in constructor even though table was NULL - table = (value_type *) malloc(num_buckets * sizeof(*table)); - assert(table); - fill_range_with_empty(table, table + num_buckets); - } - // TODO(sjackman): return a key_type rather than a value_type - value_type empty_key() const { - assert(use_empty); - return emptyval; - } - - // FUNCTIONS CONCERNING SIZE - public: - size_type size() const { return num_elements - num_deleted; } - // Buckets are always a power of 2 - size_type max_size() const { return (size_type(-1) >> 1U) + 1; } - bool empty() const { return size() == 0; } - size_type bucket_count() const { return num_buckets; } - size_type max_bucket_count() const { return max_size(); } - size_type nonempty_bucket_count() const { return num_elements; } - // These are tr1 methods. Their idea of 'bucket' doesn't map well to - // what we do. We just say every bucket has 0 or 1 items in it. - size_type bucket_size(size_type i) const { - return begin(i) == end(i) ? 0 : 1; - } - - - - private: - // Because of the above, size_type(-1) is never legal; use it for errors - static const size_type ILLEGAL_BUCKET = size_type(-1); - - private: - // This is the smallest size a hashtable can be without being too crowded - // If you like, you can give a min #buckets as well as a min #elts - size_type min_size(size_type num_elts, size_type min_buckets_wanted) { - size_type sz = HT_MIN_BUCKETS; // min buckets allowed - while ( sz < min_buckets_wanted || - num_elts >= static_cast(sz * enlarge_resize_percent) ) { - if (sz * 2 < sz) - throw std::length_error("resize overflow"); // protect against overflow - sz *= 2; - } - return sz; - } - - // Used after a string of deletes - void maybe_shrink() { - assert(num_elements >= num_deleted); - assert((bucket_count() & (bucket_count()-1)) == 0); // is a power of two - assert(bucket_count() >= HT_MIN_BUCKETS); - - // If you construct a hashtable with < HT_DEFAULT_STARTING_BUCKETS, - // we'll never shrink until you get relatively big, and we'll never - // shrink below HT_DEFAULT_STARTING_BUCKETS. Otherwise, something - // like "dense_hash_set x; x.insert(4); x.erase(4);" will - // shrink us down to HT_MIN_BUCKETS buckets, which is too small. - if (shrink_threshold > 0 && - (num_elements-num_deleted) < shrink_threshold && - bucket_count() > HT_DEFAULT_STARTING_BUCKETS ) { - size_type sz = bucket_count() / 2; // find how much we should shrink - while ( sz > HT_DEFAULT_STARTING_BUCKETS && - (num_elements - num_deleted) < sz * shrink_resize_percent ) - sz /= 2; // stay a power of 2 - dense_hashtable tmp(*this, sz); // Do the actual resizing - swap(tmp); // now we are tmp - } - consider_shrink = false; // because we just considered it - } - - // We'll let you resize a hashtable -- though this makes us copy all! - // When you resize, you say, "make it big enough for this many more elements" - void resize_delta(size_type delta) { - if ( consider_shrink ) // see if lots of deletes happened - maybe_shrink(); - if ( bucket_count() > HT_MIN_BUCKETS && - (num_elements + delta) <= enlarge_threshold ) - return; // we're ok as we are - - // Sometimes, we need to resize just to get rid of all the - // "deleted" buckets that are clogging up the hashtable. So when - // deciding whether to resize, count the deleted buckets (which - // are currently taking up room). But later, when we decide what - // size to resize to, *don't* count deleted buckets, since they - // get discarded during the resize. - const size_type needed_size = min_size(num_elements + delta, 0); - if ( needed_size > bucket_count() ) { // we don't have enough buckets - size_type resize_to = min_size(num_elements - num_deleted + delta, - bucket_count()); - if (resize_to < needed_size) { - // This situation means that we have enough deleted elements, - // that once we purge them, we won't actually have needed to - // grow. But we may want to grow anyway: if we just purge one - // element, say, we'll have to grow anyway next time we - // insert. Might as well grow now, since we're already going - // through the trouble of copying (in order to purge the - // deleted elements). - if (num_elements - num_deleted + delta >= - static_cast(resize_to*2 * shrink_resize_percent)) { - // Good, we won't be below the shrink threshhold even if we double. - resize_to *= 2; - } - } - dense_hashtable tmp(*this, resize_to); - swap(tmp); // now we are tmp - } - } - - // Increase number of buckets, assuming value_type has trivial copy - // constructor and destructor. (Really, we want it to have "trivial - // move", because that's what realloc does. But there's no way to - // capture that using type_traits, so we pretend that move(x, y) is - // equivalent to "x.~T(); new(x) T(y);" which is pretty much - // correct, if a bit conservative.) - void expand_array(size_t resize_to, true_type) { - table = (value_type *) realloc(table, resize_to * sizeof(value_type)); - assert(table); - fill_range_with_empty(table + num_buckets, table + resize_to); - } - - // Increase number of buckets, without special assumptions about value_type. - // TODO(austern): make this exception safe. Handle exceptions from - // value_type's copy constructor. - void expand_array(size_t resize_to, false_type) { - value_type* new_table = - (value_type *) malloc(resize_to * sizeof(value_type)); - assert(new_table); - STL_NAMESPACE::uninitialized_copy(table, table + num_buckets, new_table); - fill_range_with_empty(new_table + num_buckets, new_table + resize_to); - destroy_buckets(0, num_buckets); - free(table); - table = new_table; - } - - // Used to actually do the rehashing when we grow/shrink a hashtable - void copy_from(const dense_hashtable &ht, size_type min_buckets_wanted) { - clear(); // clear table, set num_deleted to 0 - - // If we need to change the size of our table, do it now - const size_type resize_to = min_size(ht.size(), min_buckets_wanted); - if ( resize_to > bucket_count() ) { // we don't have enough buckets - typedef integral_constant::value && - has_trivial_destructor::value)> - realloc_ok; // we pretend mv(x,y) == "x.~T(); new(x) T(y)" - expand_array(resize_to, realloc_ok()); - num_buckets = resize_to; - reset_thresholds(); - } - - // We use a normal iterator to get non-deleted bcks from ht - // We could use insert() here, but since we know there are - // no duplicates and no deleted items, we can be more efficient - assert((bucket_count() & (bucket_count()-1)) == 0); // a power of two - for ( const_iterator it = ht.begin(); it != ht.end(); ++it ) { - size_type num_probes = 0; // how many times we've probed - size_type bucknum; - const size_type bucket_count_minus_one = bucket_count() - 1; - for (bucknum = hash(get_key(*it)) & bucket_count_minus_one; - !test_empty(bucknum); // not empty - bucknum = (bucknum + JUMP_(key, num_probes)) & bucket_count_minus_one) { - ++num_probes; - assert(num_probes < bucket_count()); // or else the hashtable is full - } - set_value(&table[bucknum], *it); // copies the value to here - num_elements++; - } - num_ht_copies++; - } - - // Required by the spec for hashed associative container - public: - // Though the docs say this should be num_buckets, I think it's much - // more useful as req_elements. As a special feature, calling with - // req_elements==0 will cause us to shrink if we can, saving space. - void resize(size_type req_elements) { // resize to this or larger - if ( consider_shrink || req_elements == 0 ) - maybe_shrink(); - if ( req_elements > num_elements ) - return resize_delta(req_elements - num_elements); - } - - // Get and change the value of shrink_resize_percent and - // enlarge_resize_percent. The description at the beginning of this - // file explains how to choose the values. Setting the shrink - // parameter to 0.0 ensures that the table never shrinks. - void get_resizing_parameters(float* shrink, float* grow) const { - *shrink = shrink_resize_percent; - *grow = enlarge_resize_percent; - } - void set_resizing_parameters(float shrink, float grow) { - assert(shrink >= 0.0); - assert(grow <= 1.0); - if (shrink > grow/2.0f) - shrink = grow / 2.0f; // otherwise we thrash hashtable size - shrink_resize_percent = shrink; - enlarge_resize_percent = grow; - reset_thresholds(); - } - - // CONSTRUCTORS -- as required by the specs, we take a size, - // but also let you specify a hashfunction, key comparator, - // and key extractor. We also define a copy constructor and =. - // DESTRUCTOR -- needs to free the table - explicit dense_hashtable(size_type expected_max_items_in_table = 0, - const HashFcn& hf = HashFcn(), - const EqualKey& eql = EqualKey(), - const ExtractKey& ext = ExtractKey(), - const SetKey& set = SetKey()) - : hash(hf), equals(eql), get_key(ext), set_key(set), num_deleted(0), - use_deleted(false), use_empty(false), - delkey(), emptyval(), enlarge_resize_percent(HT_OCCUPANCY_FLT), - shrink_resize_percent(HT_EMPTY_FLT), table(NULL), - num_buckets(expected_max_items_in_table == 0 - ? HT_DEFAULT_STARTING_BUCKETS - : min_size(expected_max_items_in_table, 0)), - num_elements(0), num_ht_copies(0) { - // table is NULL until emptyval is set. However, we set num_buckets - // here so we know how much space to allocate once emptyval is set - reset_thresholds(); - } - - // As a convenience for resize(), we allow an optional second argument - // which lets you make this new hashtable a different size than ht - dense_hashtable(const dense_hashtable& ht, - size_type min_buckets_wanted = HT_DEFAULT_STARTING_BUCKETS) - : hash(ht.hash), equals(ht.equals), - get_key(ht.get_key), set_key(ht.set_key), num_deleted(0), - use_deleted(ht.use_deleted), use_empty(ht.use_empty), - delkey(ht.delkey), emptyval(ht.emptyval), - enlarge_resize_percent(ht.enlarge_resize_percent), - shrink_resize_percent(ht.shrink_resize_percent), table(NULL), - num_buckets(0), num_elements(0), num_ht_copies(ht.num_ht_copies) { - if (!ht.use_empty) { - // If use_empty isn't set, copy_from will crash, so we do our own copying. - assert(ht.empty()); - num_buckets = min_size(ht.size(), min_buckets_wanted); - reset_thresholds(); - return; - } - reset_thresholds(); - copy_from(ht, min_buckets_wanted); // copy_from() ignores deleted entries - } - - dense_hashtable& operator= (const dense_hashtable& ht) { - if (&ht == this) return *this; // don't copy onto ourselves - if (!ht.use_empty) { - assert(ht.empty()); - dense_hashtable empty_table(ht); // empty table with ht's thresholds - this->swap(empty_table); - return *this; - } - hash = ht.hash; - equals = ht.equals; - get_key = ht.get_key; - set_key = ht.set_key; - use_deleted = ht.use_deleted; - use_empty = ht.use_empty; - delkey = ht.delkey; - set_value(&emptyval, ht.emptyval); - enlarge_resize_percent = ht.enlarge_resize_percent; - shrink_resize_percent = ht.shrink_resize_percent; - copy_from(ht, HT_MIN_BUCKETS); // calls clear and sets num_deleted to 0 too - return *this; - } - - ~dense_hashtable() { - if (table) { - destroy_buckets(0, num_buckets); - free(table); - } - } - - // Many STL algorithms use swap instead of copy constructors - void swap(dense_hashtable& ht) { - STL_NAMESPACE::swap(hash, ht.hash); - STL_NAMESPACE::swap(equals, ht.equals); - STL_NAMESPACE::swap(get_key, ht.get_key); - STL_NAMESPACE::swap(set_key, ht.set_key); - STL_NAMESPACE::swap(num_deleted, ht.num_deleted); - STL_NAMESPACE::swap(use_deleted, ht.use_deleted); - STL_NAMESPACE::swap(use_empty, ht.use_empty); - STL_NAMESPACE::swap(enlarge_resize_percent, ht.enlarge_resize_percent); - STL_NAMESPACE::swap(shrink_resize_percent, ht.shrink_resize_percent); - STL_NAMESPACE::swap(delkey, ht.delkey); - { value_type tmp; // for annoying reasons, swap() doesn't work - set_value(&tmp, emptyval); - set_value(&emptyval, ht.emptyval); - set_value(&ht.emptyval, tmp); - } - STL_NAMESPACE::swap(table, ht.table); - STL_NAMESPACE::swap(num_buckets, ht.num_buckets); - STL_NAMESPACE::swap(num_elements, ht.num_elements); - STL_NAMESPACE::swap(num_ht_copies, ht.num_ht_copies); - reset_thresholds(); - ht.reset_thresholds(); - } - - // It's always nice to be able to clear a table without deallocating it - void clear() { - const size_type new_num_buckets = min_size(0,0); - if (num_elements == 0 && - num_deleted == 0 && - new_num_buckets == num_buckets) { - // Table is already empty, and the number of buckets is already as we - // desire, so nothing to do. - return; - } - if (table) - destroy_buckets(0, num_buckets); - if (!table || (new_num_buckets != num_buckets)) { - // Recompute the resize thresholds and realloc the table only if we're - // actually changing its size. - num_buckets = new_num_buckets; // our new size - reset_thresholds(); - table = (value_type *) realloc(table, num_buckets * sizeof(*table)); - } - assert(table); - fill_range_with_empty(table, table + num_buckets); - num_elements = 0; - num_deleted = 0; - } - - // Clear the table without resizing it. - // Mimicks the stl_hashtable's behaviour when clear()-ing in that it - // does not modify the bucket count - void clear_no_resize() { - if (table) { - set_empty(0, num_buckets); - } - // don't consider to shrink before another erase() - reset_thresholds(); - num_elements = 0; - num_deleted = 0; - } - - // LOOKUP ROUTINES - private: - // Returns a pair of positions: 1st where the object is, 2nd where - // it would go if you wanted to insert it. 1st is ILLEGAL_BUCKET - // if object is not found; 2nd is ILLEGAL_BUCKET if it is. - // Note: because of deletions where-to-insert is not trivial: it's the - // first deleted bucket we see, as long as we don't find the key later - pair find_position(const key_type &key) const { - size_type num_probes = 0; // how many times we've probed - const size_type bucket_count_minus_one = bucket_count() - 1; - size_type bucknum = hash(key) & bucket_count_minus_one; - size_type insert_pos = ILLEGAL_BUCKET; // where we would insert - while ( 1 ) { // probe until something happens - if ( test_empty(bucknum) ) { // bucket is empty - if ( insert_pos == ILLEGAL_BUCKET ) // found no prior place to insert - return pair(ILLEGAL_BUCKET, bucknum); - else - return pair(ILLEGAL_BUCKET, insert_pos); - - } else if ( test_deleted(bucknum) ) {// keep searching, but mark to insert - if ( insert_pos == ILLEGAL_BUCKET ) - insert_pos = bucknum; - - } else if ( equals(key, get_key(table[bucknum])) ) { - return pair(bucknum, ILLEGAL_BUCKET); - } - ++num_probes; // we're doing another probe - bucknum = (bucknum + JUMP_(key, num_probes)) & bucket_count_minus_one; - assert(num_probes < bucket_count()); // don't probe too many times! - } - } - - public: - iterator find(const key_type& key) { - if ( size() == 0 ) return end(); - pair pos = find_position(key); - if ( pos.first == ILLEGAL_BUCKET ) // alas, not there - return end(); - else - return iterator(this, table + pos.first, table + num_buckets, false); - } - - const_iterator find(const key_type& key) const { - if ( size() == 0 ) return end(); - pair pos = find_position(key); - if ( pos.first == ILLEGAL_BUCKET ) // alas, not there - return end(); - else - return const_iterator(this, table + pos.first, table+num_buckets, false); - } - - // This is a tr1 method: the bucket a given key is in, or what bucket - // it would be put in, if it were to be inserted. Shrug. - size_type bucket(const key_type& key) const { - pair pos = find_position(key); - return pos.first == ILLEGAL_BUCKET ? pos.second : pos.first; - } - - // Counts how many elements have key key. For maps, it's either 0 or 1. - size_type count(const key_type &key) const { - pair pos = find_position(key); - return pos.first == ILLEGAL_BUCKET ? 0 : 1; - } - - // Likewise, equal_range doesn't really make sense for us. Oh well. - pair equal_range(const key_type& key) { - iterator pos = find(key); // either an iterator or end - if (pos == end()) { - return pair(pos, pos); - } else { - const iterator startpos = pos++; - return pair(startpos, pos); - } - } - pair equal_range(const key_type& key) const { - const_iterator pos = find(key); // either an iterator or end - if (pos == end()) { - return pair(pos, pos); - } else { - const const_iterator startpos = pos++; - return pair(startpos, pos); - } - } - - - // INSERTION ROUTINES - private: - // If you know *this is big enough to hold obj, use this routine - pair insert_noresize(const value_type& obj) { - // First, double-check we're not inserting delkey or emptyval - assert(!use_empty || !equals(get_key(obj), get_key(emptyval))); - assert(!use_deleted || !equals(get_key(obj), delkey)); - const pair pos = find_position(get_key(obj)); - if ( pos.first != ILLEGAL_BUCKET) { // object was already there - return pair(iterator(this, table + pos.first, - table + num_buckets, false), - false); // false: we didn't insert - } else { // pos.second says where to put it - if ( test_deleted(pos.second) ) { // just replace if it's been del. - const_iterator delpos(this, table + pos.second, // shrug: - table + num_buckets, false);// shouldn't need const - clear_deleted(delpos); - assert( num_deleted > 0); - --num_deleted; // used to be, now it isn't - } else { - ++num_elements; // replacing an empty bucket - } - set_value(&table[pos.second], obj); - return pair(iterator(this, table + pos.second, - table + num_buckets, false), - true); // true: we did insert - } - } - - public: - // This is the normal insert routine, used by the outside world - pair insert(const value_type& obj) { - resize_delta(1); // adding an object, grow if need be - return insert_noresize(obj); - } - - // When inserting a lot at a time, we specialize on the type of iterator - template - void insert(InputIterator f, InputIterator l) { - // specializes on iterator type - insert(f, l, typename STL_NAMESPACE::iterator_traits::iterator_category()); - } - - // Iterator supports operator-, resize before inserting - template - void insert(ForwardIterator f, ForwardIterator l, - STL_NAMESPACE::forward_iterator_tag) { - size_type n = STL_NAMESPACE::distance(f, l); // TODO(csilvers): standard? - resize_delta(n); - for ( ; n > 0; --n, ++f) - insert_noresize(*f); - } - - // Arbitrary iterator, can't tell how much to resize - template - void insert(InputIterator f, InputIterator l, - STL_NAMESPACE::input_iterator_tag) { - for ( ; f != l; ++f) - insert(*f); - } - - - // DELETION ROUTINES - size_type erase(const key_type& key) { - // First, double-check we're not trying to erase delkey or emptyval - assert(!use_empty || !equals(key, get_key(emptyval))); - assert(!use_deleted || !equals(key, delkey)); - const_iterator pos = find(key); // shrug: shouldn't need to be const - if ( pos != end() ) { - assert(!test_deleted(pos)); // or find() shouldn't have returned it - set_deleted(pos); - ++num_deleted; - consider_shrink = true; // will think about shrink after next insert - return 1; // because we deleted one thing - } else { - return 0; // because we deleted nothing - } - } - - // We return the iterator past the deleted item. - void erase(iterator pos) { - if ( pos == end() ) return; // sanity check - if ( set_deleted(pos) ) { // true if object has been newly deleted - ++num_deleted; - consider_shrink = true; // will think about shrink after next insert - } - } - - void erase(iterator f, iterator l) { - for ( ; f != l; ++f) { - if ( set_deleted(f) ) // should always be true - ++num_deleted; - } - consider_shrink = true; // will think about shrink after next insert - } - - // We allow you to erase a const_iterator just like we allow you to - // erase an iterator. This is in parallel to 'delete': you can delete - // a const pointer just like a non-const pointer. The logic is that - // you can't use the object after it's erased anyway, so it doesn't matter - // if it's const or not. - void erase(const_iterator pos) { - if ( pos == end() ) return; // sanity check - if ( set_deleted(pos) ) { // true if object has been newly deleted - ++num_deleted; - consider_shrink = true; // will think about shrink after next insert - } - } - void erase(const_iterator f, const_iterator l) { - for ( ; f != l; ++f) { - if ( set_deleted(f) ) // should always be true - ++num_deleted; - } - consider_shrink = true; // will think about shrink after next insert - } - - - // COMPARISON - bool operator==(const dense_hashtable& ht) const { - if (size() != ht.size()) { - return false; - } else if (this == &ht) { - return true; - } else { - // Iterate through the elements in "this" and see if the - // corresponding element is in ht - for ( const_iterator it = begin(); it != end(); ++it ) { - const_iterator it2 = ht.find(get_key(*it)); - if ((it2 == ht.end()) || (*it != *it2)) { - return false; - } - } - return true; - } - } - bool operator!=(const dense_hashtable& ht) const { - return !(*this == ht); - } - - - // I/O - // We support reading and writing hashtables to disk. Alas, since - // I don't know how to write a hasher or key_equal, you have to make - // sure everything but the table is the same. We compact before writing - // - // NOTE: These functions are currently TODO. They've not been implemented. - bool write_metadata(FILE *fp) { - squash_deleted(); // so we don't have to worry about delkey - return false; // TODO - } - - bool read_metadata(FILE *fp) { - num_deleted = 0; // since we got rid before writing - assert(use_empty); // have to set this before calling us - if (table) free(table); // we'll make our own - // TODO: read magic number - // TODO: read num_buckets - reset_thresholds(); - table = (value_type *) malloc(num_buckets * sizeof(*table)); - assert(table); - fill_range_with_empty(table, table + num_buckets); - // TODO: read num_elements - for ( size_type i = 0; i < num_elements; ++i ) { - // TODO: read bucket_num - // TODO: set with non-empty, non-deleted value - } - return false; // TODO - } - - // If your keys and values are simple enough, we can write them to - // disk for you. "simple enough" means value_type is a POD type - // that contains no pointers. However, we don't try to normalize - // endianness - bool write_nopointer_data(FILE *fp) const { - for ( const_iterator it = begin(); it != end(); ++it ) { - // TODO: skip empty/deleted values - if ( !fwrite(&*it, sizeof(*it), 1, fp) ) return false; - } - return false; - } - - // When reading, we have to override the potential const-ness of *it - bool read_nopointer_data(FILE *fp) { - for ( iterator it = begin(); it != end(); ++it ) { - // TODO: skip empty/deleted values - if ( !fread(reinterpret_cast(&(*it)), sizeof(*it), 1, fp) ) - return false; - } - return false; - } - - private: - // The actual data - hasher hash; // required by hashed_associative_container - key_equal equals; - ExtractKey get_key; - SetKey set_key; - size_type num_deleted; // how many occupied buckets are marked deleted - bool use_deleted; // false until delkey has been set - bool use_empty; // you must do this before you start - // TODO(csilvers): make a pointer, and get rid of use_deleted (benchmark!) - key_type delkey; // which key marks deleted entries - value_type emptyval; // which key marks unused entries - float enlarge_resize_percent; // how full before resize - float shrink_resize_percent; // how empty before resize - size_type shrink_threshold; // num_buckets * shrink_resize_percent - size_type enlarge_threshold; // num_buckets * enlarge_resize_percent - value_type *table; - size_type num_buckets; - size_type num_elements; - int num_ht_copies; // a statistics counter incremented every Copy - bool consider_shrink; // true if we should try to shrink before next insert - - void reset_thresholds() { - enlarge_threshold = static_cast(num_buckets - * enlarge_resize_percent); - shrink_threshold = static_cast(num_buckets - * shrink_resize_percent); - consider_shrink = false; // whatever caused us to reset already considered - } -}; - -// We need a global swap as well -template -inline void swap(dense_hashtable &x, - dense_hashtable &y) { - x.swap(y); -} - -#undef JUMP_ - -template -const typename dense_hashtable::size_type -dense_hashtable::ILLEGAL_BUCKET; - -// How full we let the table get before we resize. Knuth says .8 is -// good -- higher causes us to probe too much, though saves memory. -// However, we go with .5, getting better performance at the cost of -// more space (a trade-off densehashtable explicitly chooses to make). -// Feel free to play around with different values, though. -template -const float dense_hashtable::HT_OCCUPANCY_FLT = 0.5f; - -// How empty we let the table get before we resize lower. -// It should be less than OCCUPANCY_FLT / 2 or we thrash resizing -template -const float dense_hashtable::HT_EMPTY_FLT - = 0.4f * dense_hashtable::HT_OCCUPANCY_FLT; - -_END_GOOGLE_NAMESPACE_ - -#endif /* _DENSEHASHTABLE_H_ */ diff --git a/src/sparsehash-1.6/src/google/sparsehash/sparseconfig.h b/src/sparsehash-1.6/src/google/sparsehash/sparseconfig.h deleted file mode 100644 index f397d3b..0000000 --- a/src/sparsehash-1.6/src/google/sparsehash/sparseconfig.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * NOTE: This file is for internal use only. - * Do not use these #defines in your own program! - */ - -/* Namespace for Google classes */ -#define GOOGLE_NAMESPACE ::google - -/* the location of the header defining hash functions */ -#define HASH_FUN_H - -/* the namespace of the hash<> function */ -#define HASH_NAMESPACE std::tr1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if the system has the type `long long'. */ -#define HAVE_LONG_LONG 1 - -/* Define to 1 if you have the `memcpy' function. */ -#define HAVE_MEMCPY 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if the system has the type `uint16_t'. */ -#define HAVE_UINT16_T 1 - -/* Define to 1 if the system has the type `u_int16_t'. */ -#define HAVE_U_INT16_T 1 - -/* Define to 1 if the system has the type `__uint16'. */ -/* #undef HAVE___UINT16 */ - -/* The system-provided hash function including the namespace. */ -#define SPARSEHASH_HASH HASH_NAMESPACE::hash - -/* the namespace where STL code like vector<> is defined */ -#define STL_NAMESPACE std - -/* Stops putting the code inside the Google namespace */ -#define _END_GOOGLE_NAMESPACE_ } - -/* Puts following code inside the Google namespace */ -#define _START_GOOGLE_NAMESPACE_ namespace google { diff --git a/src/sparsehash-1.6/src/google/sparsehash/sparsehashtable.h b/src/sparsehash-1.6/src/google/sparsehash/sparsehashtable.h deleted file mode 100644 index 62c9dc8..0000000 --- a/src/sparsehash-1.6/src/google/sparsehash/sparsehashtable.h +++ /dev/null @@ -1,1081 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// A sparse hashtable is a particular implementation of -// a hashtable: one that is meant to minimize memory use. -// It does this by using a *sparse table* (cf sparsetable.h), -// which uses between 1 and 2 bits to store empty buckets -// (we may need another bit for hashtables that support deletion). -// -// When empty buckets are so cheap, an appealing hashtable -// implementation is internal probing, in which the hashtable -// is a single table, and collisions are resolved by trying -// to insert again in another bucket. The most cache-efficient -// internal probing schemes are linear probing (which suffers, -// alas, from clumping) and quadratic probing, which is what -// we implement by default. -// -// Deleted buckets are a bit of a pain. We have to somehow mark -// deleted buckets (the probing must distinguish them from empty -// buckets). The most principled way is to have another bitmap, -// but that's annoying and takes up space. Instead we let the -// user specify an "impossible" key. We set deleted buckets -// to have the impossible key. -// -// Note it is possible to change the value of the delete key -// on the fly; you can even remove it, though after that point -// the hashtable is insert_only until you set it again. -// -// You probably shouldn't use this code directly. Use -// or instead. -// -// You can modify the following, below: -// HT_OCCUPANCY_FLT -- how full before we double size -// HT_EMPTY_FLT -- how empty before we halve size -// HT_MIN_BUCKETS -- smallest bucket size -// HT_DEFAULT_STARTING_BUCKETS -- default bucket size at construct-time -// -// You can also change enlarge_resize_percent (which defaults to -// HT_OCCUPANCY_FLT), and shrink_resize_percent (which defaults to -// HT_EMPTY_FLT) with set_resizing_parameters(). -// -// How to decide what values to use? -// shrink_resize_percent's default of .4 * OCCUPANCY_FLT, is probably good. -// HT_MIN_BUCKETS is probably unnecessary since you can specify -// (indirectly) the starting number of buckets at construct-time. -// For enlarge_resize_percent, you can use this chart to try to trade-off -// expected lookup time to the space taken up. By default, this -// code uses quadratic probing, though you can change it to linear -// via _JUMP below if you really want to. -// -// From http://www.augustana.ca/~mohrj/courses/1999.fall/csc210/lecture_notes/hashing.html -// NUMBER OF PROBES / LOOKUP Successful Unsuccessful -// Quadratic collision resolution 1 - ln(1-L) - L/2 1/(1-L) - L - ln(1-L) -// Linear collision resolution [1+1/(1-L)]/2 [1+1/(1-L)2]/2 -// -// -- enlarge_resize_percent -- 0.10 0.50 0.60 0.75 0.80 0.90 0.99 -// QUADRATIC COLLISION RES. -// probes/successful lookup 1.05 1.44 1.62 2.01 2.21 2.85 5.11 -// probes/unsuccessful lookup 1.11 2.19 2.82 4.64 5.81 11.4 103.6 -// LINEAR COLLISION RES. -// probes/successful lookup 1.06 1.5 1.75 2.5 3.0 5.5 50.5 -// probes/unsuccessful lookup 1.12 2.5 3.6 8.5 13.0 50.0 5000.0 -// -// The value type is required to be copy constructible and default -// constructible, but it need not be (and commonly isn't) assignable. - -#ifndef _SPARSEHASHTABLE_H_ -#define _SPARSEHASHTABLE_H_ - -#ifndef SPARSEHASH_STAT_UPDATE -#define SPARSEHASH_STAT_UPDATE(x) ((void) 0) -#endif - -// The probing method -// Linear probing -// #define JUMP_(key, num_probes) ( 1 ) -// Quadratic-ish probing -#define JUMP_(key, num_probes) ( num_probes ) - - -#include -#include -#include // For swap(), eg -#include // For length_error -#include // for facts about iterator tags -#include // for pair<> -#include // Since that's basically what we are - -_START_GOOGLE_NAMESPACE_ - -using STL_NAMESPACE::pair; - -// Hashtable class, used to implement the hashed associative containers -// hash_set and hash_map. -// -// Value: what is stored in the table (each bucket is a Value). -// Key: something in a 1-to-1 correspondence to a Value, that can be used -// to search for a Value in the table (find() takes a Key). -// HashFcn: Takes a Key and returns an integer, the more unique the better. -// ExtractKey: given a Value, returns the unique Key associated with it. -// SetKey: given a Value* and a Key, modifies the value such that -// ExtractKey(value) == key. We guarantee this is only called -// with key == deleted_key. -// EqualKey: Given two Keys, says whether they are the same (that is, -// if they are both associated with the same Value). -// Alloc: STL allocator to use to allocate memory. Currently ignored. - -template -class sparse_hashtable; - -template -struct sparse_hashtable_iterator; - -template -struct sparse_hashtable_const_iterator; - -// As far as iterating, we're basically just a sparsetable -// that skips over deleted elements. -template -struct sparse_hashtable_iterator { - public: - typedef sparse_hashtable_iterator iterator; - typedef sparse_hashtable_const_iterator const_iterator; - typedef typename sparsetable::nonempty_iterator st_iterator; - - typedef STL_NAMESPACE::forward_iterator_tag iterator_category; - typedef V value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef V& reference; // Value - typedef V* pointer; - - // "Real" constructor and default constructor - sparse_hashtable_iterator(const sparse_hashtable *h, - st_iterator it, st_iterator it_end) - : ht(h), pos(it), end(it_end) { advance_past_deleted(); } - sparse_hashtable_iterator() { } // not ever used internally - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // Happy dereferencer - reference operator*() const { return *pos; } - pointer operator->() const { return &(operator*()); } - - // Arithmetic. The only hard part is making sure that - // we're not on a marked-deleted array element - void advance_past_deleted() { - while ( pos != end && ht->test_deleted(*this) ) - ++pos; - } - iterator& operator++() { - assert(pos != end); ++pos; advance_past_deleted(); return *this; - } - iterator operator++(int) { iterator tmp(*this); ++*this; return tmp; } - - // Comparison. - bool operator==(const iterator& it) const { return pos == it.pos; } - bool operator!=(const iterator& it) const { return pos != it.pos; } - - - // The actual data - const sparse_hashtable *ht; - st_iterator pos, end; -}; - -// Now do it all again, but with const-ness! -template -struct sparse_hashtable_const_iterator { - public: - typedef sparse_hashtable_iterator iterator; - typedef sparse_hashtable_const_iterator const_iterator; - typedef typename sparsetable::const_nonempty_iterator st_iterator; - - typedef STL_NAMESPACE::forward_iterator_tag iterator_category; - typedef V value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef const V& reference; // Value - typedef const V* pointer; - - // "Real" constructor and default constructor - sparse_hashtable_const_iterator(const sparse_hashtable *h, - st_iterator it, st_iterator it_end) - : ht(h), pos(it), end(it_end) { advance_past_deleted(); } - // This lets us convert regular iterators to const iterators - sparse_hashtable_const_iterator() { } // never used internally - sparse_hashtable_const_iterator(const iterator &it) - : ht(it.ht), pos(it.pos), end(it.end) { } - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // Happy dereferencer - reference operator*() const { return *pos; } - pointer operator->() const { return &(operator*()); } - - // Arithmetic. The only hard part is making sure that - // we're not on a marked-deleted array element - void advance_past_deleted() { - while ( pos != end && ht->test_deleted(*this) ) - ++pos; - } - const_iterator& operator++() { - assert(pos != end); ++pos; advance_past_deleted(); return *this; - } - const_iterator operator++(int) { const_iterator tmp(*this); ++*this; return tmp; } - - // Comparison. - bool operator==(const const_iterator& it) const { return pos == it.pos; } - bool operator!=(const const_iterator& it) const { return pos != it.pos; } - - - // The actual data - const sparse_hashtable *ht; - st_iterator pos, end; -}; - -// And once again, but this time freeing up memory as we iterate -template -struct sparse_hashtable_destructive_iterator { - public: - typedef sparse_hashtable_destructive_iterator iterator; - typedef typename sparsetable::destructive_iterator st_iterator; - - typedef STL_NAMESPACE::forward_iterator_tag iterator_category; - typedef V value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef V& reference; // Value - typedef V* pointer; - - // "Real" constructor and default constructor - sparse_hashtable_destructive_iterator(const - sparse_hashtable *h, - st_iterator it, st_iterator it_end) - : ht(h), pos(it), end(it_end) { advance_past_deleted(); } - sparse_hashtable_destructive_iterator() { } // never used internally - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // Happy dereferencer - reference operator*() const { return *pos; } - pointer operator->() const { return &(operator*()); } - - // Arithmetic. The only hard part is making sure that - // we're not on a marked-deleted array element - void advance_past_deleted() { - while ( pos != end && ht->test_deleted(*this) ) - ++pos; - } - iterator& operator++() { - assert(pos != end); ++pos; advance_past_deleted(); return *this; - } - iterator operator++(int) { iterator tmp(*this); ++*this; return tmp; } - - // Comparison. - bool operator==(const iterator& it) const { return pos == it.pos; } - bool operator!=(const iterator& it) const { return pos != it.pos; } - - - // The actual data - const sparse_hashtable *ht; - st_iterator pos, end; -}; - - -template -class sparse_hashtable { - public: - typedef Key key_type; - typedef Value value_type; - typedef HashFcn hasher; - typedef EqualKey key_equal; - - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef sparse_hashtable_iterator - iterator; - - typedef sparse_hashtable_const_iterator - const_iterator; - - typedef sparse_hashtable_destructive_iterator - destructive_iterator; - - // These come from tr1. For us they're the same as regular iterators. - typedef iterator local_iterator; - typedef const_iterator const_local_iterator; - - // How full we let the table get before we resize, by default. - // Knuth says .8 is good -- higher causes us to probe too much, - // though it saves memory. - static const float HT_OCCUPANCY_FLT; // = 0.8f; - - // How empty we let the table get before we resize lower, by default. - // It should be less than OCCUPANCY_FLT / 2 or we thrash resizing - static const float HT_EMPTY_FLT; // = 0.4 * HT_OCCUPANCY_FLT; - - // Minimum size we're willing to let hashtables be. - // Must be a power of two, and at least 4. - // Note, however, that for a given hashtable, the minimum size is - // determined by the first constructor arg, and may be >HT_MIN_BUCKETS. - static const size_t HT_MIN_BUCKETS = 4; - - // By default, if you don't specify a hashtable size at - // construction-time, we use this size. Must be a power of two, and - // at least HT_MIN_BUCKETS. - static const size_t HT_DEFAULT_STARTING_BUCKETS = 32; - - // ITERATOR FUNCTIONS - iterator begin() { return iterator(this, table.nonempty_begin(), - table.nonempty_end()); } - iterator end() { return iterator(this, table.nonempty_end(), - table.nonempty_end()); } - const_iterator begin() const { return const_iterator(this, - table.nonempty_begin(), - table.nonempty_end()); } - const_iterator end() const { return const_iterator(this, - table.nonempty_end(), - table.nonempty_end()); } - - // These come from tr1 unordered_map. They iterate over 'bucket' n. - // For sparsehashtable, we could consider each 'group' to be a bucket, - // I guess, but I don't really see the point. We'll just consider - // bucket n to be the n-th element of the sparsetable, if it's occupied, - // or some empty element, otherwise. - local_iterator begin(size_type i) { - if (table.test(i)) - return local_iterator(this, table.get_iter(i), table.nonempty_end()); - else - return local_iterator(this, table.nonempty_end(), table.nonempty_end()); - } - local_iterator end(size_type i) { - local_iterator it = begin(i); - if (table.test(i) && !test_deleted(i)) - ++it; - return it; - } - const_local_iterator begin(size_type i) const { - if (table.test(i)) - return const_local_iterator(this, table.get_iter(i), - table.nonempty_end()); - else - return const_local_iterator(this, table.nonempty_end(), - table.nonempty_end()); - } - const_local_iterator end(size_type i) const { - const_local_iterator it = begin(i); - if (table.test(i) && !test_deleted(i)) - ++it; - return it; - } - - // This is used when resizing - destructive_iterator destructive_begin() { - return destructive_iterator(this, table.destructive_begin(), - table.destructive_end()); - } - destructive_iterator destructive_end() { - return destructive_iterator(this, table.destructive_end(), - table.destructive_end()); - } - - - // ACCESSOR FUNCTIONS for the things we templatize on, basically - hasher hash_funct() const { return hash; } - key_equal key_eq() const { return equals; } - - // Accessor function for statistics gathering. - int num_table_copies() const { return num_ht_copies; } - - private: - // We need to copy values when we set the special marker for deleted - // elements, but, annoyingly, we can't just use the copy assignment - // operator because value_type might not be assignable (it's often - // pair). We use explicit destructor invocation and - // placement new to get around this. Arg. - void set_value(value_type* dst, const value_type src) { - dst->~value_type(); // delete the old value, if any - new(dst) value_type(src); - } - - // This is used as a tag for the copy constructor, saying to destroy its - // arg We have two ways of destructively copying: with potentially growing - // the hashtable as we copy, and without. To make sure the outside world - // can't do a destructive copy, we make the typename private. - enum MoveDontCopyT {MoveDontCopy, MoveDontGrow}; - - - // DELETE HELPER FUNCTIONS - // This lets the user describe a key that will indicate deleted - // table entries. This key should be an "impossible" entry -- - // if you try to insert it for real, you won't be able to retrieve it! - // (NB: while you pass in an entire value, only the key part is looked - // at. This is just because I don't know how to assign just a key.) - private: - void squash_deleted() { // gets rid of any deleted entries we have - if ( num_deleted ) { // get rid of deleted before writing - sparse_hashtable tmp(MoveDontGrow, *this); - swap(tmp); // now we are tmp - } - assert(num_deleted == 0); - } - - public: - void set_deleted_key(const key_type &key) { - // It's only safe to change what "deleted" means if we purge deleted guys - squash_deleted(); - use_deleted = true; - delkey = key; - } - void clear_deleted_key() { - squash_deleted(); - use_deleted = false; - } - key_type deleted_key() const { - assert(use_deleted); - return delkey; - } - - // These are public so the iterators can use them - // True if the item at position bucknum is "deleted" marker - bool test_deleted(size_type bucknum) const { - // The num_deleted test is crucial for read(): after read(), the ht values - // are garbage, and we don't want to think some of them are deleted. - return (use_deleted && num_deleted > 0 && table.test(bucknum) && - equals(delkey, get_key(table.unsafe_get(bucknum)))); - } - bool test_deleted(const iterator &it) const { - return (use_deleted && num_deleted > 0 && - equals(delkey, get_key(*it))); - } - bool test_deleted(const const_iterator &it) const { - return (use_deleted && num_deleted > 0 && - equals(delkey, get_key(*it))); - } - bool test_deleted(const destructive_iterator &it) const { - return (use_deleted && num_deleted > 0 && - equals(delkey, get_key(*it))); - } - // Set it so test_deleted is true. true if object didn't used to be deleted. - bool set_deleted(iterator &it) { - assert(use_deleted); - bool retval = !test_deleted(it); - // &* converts from iterator to value-type. - set_key(&(*it), delkey); - return retval; - } - // Set it so test_deleted is false. true if object used to be deleted. - bool clear_deleted(iterator &it) { - assert(use_deleted); - // Happens automatically when we assign something else in its place. - return test_deleted(it); - } - - // We also allow to set/clear the deleted bit on a const iterator. - // We allow a const_iterator for the same reason you can delete a - // const pointer: it's convenient, and semantically you can't use - // 'it' after it's been deleted anyway, so its const-ness doesn't - // really matter. - bool set_deleted(const_iterator &it) { - assert(use_deleted); // bad if set_deleted_key() wasn't called - bool retval = !test_deleted(it); - set_key(const_cast(&(*it)), delkey); - return retval; - } - bool clear_deleted(const_iterator &it) { - assert(use_deleted); // bad if set_deleted_key() wasn't called - return test_deleted(it); - } - - - // FUNCTIONS CONCERNING SIZE - size_type size() const { return table.num_nonempty() - num_deleted; } - // Buckets are always a power of 2 - size_type max_size() const { return (size_type(-1) >> 1U) + 1; } - bool empty() const { return size() == 0; } - size_type bucket_count() const { return table.size(); } - size_type max_bucket_count() const { return max_size(); } - // These are tr1 methods. Their idea of 'bucket' doesn't map well to - // what we do. We just say every bucket has 0 or 1 items in it. - size_type bucket_size(size_type i) const { - return begin(i) == end(i) ? 0 : 1; - } - - - private: - // Because of the above, size_type(-1) is never legal; use it for errors - static const size_type ILLEGAL_BUCKET = size_type(-1); - - private: - // This is the smallest size a hashtable can be without being too crowded - // If you like, you can give a min #buckets as well as a min #elts - size_type min_size(size_type num_elts, size_type min_buckets_wanted) { - size_type sz = HT_MIN_BUCKETS; // min buckets allowed - while ( sz < min_buckets_wanted || - num_elts >= static_cast(sz * enlarge_resize_percent) ) { - if (sz * 2 < sz) - throw std::length_error("resize overflow"); // protect against overflow - sz *= 2; - } - return sz; - } - - // Used after a string of deletes - void maybe_shrink() { - assert(table.num_nonempty() >= num_deleted); - assert((bucket_count() & (bucket_count()-1)) == 0); // is a power of two - assert(bucket_count() >= HT_MIN_BUCKETS); - - // If you construct a hashtable with < HT_DEFAULT_STARTING_BUCKETS, - // we'll never shrink until you get relatively big, and we'll never - // shrink below HT_DEFAULT_STARTING_BUCKETS. Otherwise, something - // like "dense_hash_set x; x.insert(4); x.erase(4);" will - // shrink us down to HT_MIN_BUCKETS buckets, which is too small. - if (shrink_threshold > 0 && - (table.num_nonempty()-num_deleted) < shrink_threshold && - bucket_count() > HT_DEFAULT_STARTING_BUCKETS) { - size_type sz = bucket_count() / 2; // find how much we should shrink - while ( sz > HT_DEFAULT_STARTING_BUCKETS && - (table.num_nonempty() - num_deleted) <= sz * - shrink_resize_percent ) - sz /= 2; // stay a power of 2 - sparse_hashtable tmp(MoveDontCopy, *this, sz); - swap(tmp); // now we are tmp - } - consider_shrink = false; // because we just considered it - } - - // We'll let you resize a hashtable -- though this makes us copy all! - // When you resize, you say, "make it big enough for this many more elements" - void resize_delta(size_type delta) { - if ( consider_shrink ) // see if lots of deletes happened - maybe_shrink(); - if ( bucket_count() >= HT_MIN_BUCKETS && - (table.num_nonempty() + delta) <= enlarge_threshold ) - return; // we're ok as we are - - // Sometimes, we need to resize just to get rid of all the - // "deleted" buckets that are clogging up the hashtable. So when - // deciding whether to resize, count the deleted buckets (which - // are currently taking up room). But later, when we decide what - // size to resize to, *don't* count deleted buckets, since they - // get discarded during the resize. - const size_type needed_size = min_size(table.num_nonempty() + delta, 0); - if ( needed_size > bucket_count() ) { // we don't have enough buckets - size_type resize_to = min_size(table.num_nonempty() - num_deleted + delta, - bucket_count()); - if (resize_to < needed_size) { - // This situation means that we have enough deleted elements, - // that once we purge them, we won't actually have needed to - // grow. But we may want to grow anyway: if we just purge one - // element, say, we'll have to grow anyway next time we - // insert. Might as well grow now, since we're already going - // through the trouble of copying (in order to purge the - // deleted elements). - if (table.num_nonempty() - num_deleted + delta >= - static_cast(resize_to*2 * shrink_resize_percent)) { - // Good, we won't be below the shrink threshhold even if we double. - resize_to *= 2; - } - } - - sparse_hashtable tmp(MoveDontCopy, *this, resize_to); - swap(tmp); // now we are tmp - } - } - - // Used to actually do the rehashing when we grow/shrink a hashtable - void copy_from(const sparse_hashtable &ht, size_type min_buckets_wanted) { - clear(); // clear table, set num_deleted to 0 - - // If we need to change the size of our table, do it now - const size_type resize_to = min_size(ht.size(), min_buckets_wanted); - if ( resize_to > bucket_count() ) { // we don't have enough buckets - table.resize(resize_to); // sets the number of buckets - reset_thresholds(); - } - - // We use a normal iterator to get non-deleted bcks from ht - // We could use insert() here, but since we know there are - // no duplicates and no deleted items, we can be more efficient - assert( (bucket_count() & (bucket_count()-1)) == 0); // a power of two - for ( const_iterator it = ht.begin(); it != ht.end(); ++it ) { - size_type num_probes = 0; // how many times we've probed - size_type bucknum; - const size_type bucket_count_minus_one = bucket_count() - 1; - for (bucknum = hash(get_key(*it)) & bucket_count_minus_one; - table.test(bucknum); // not empty - bucknum = (bucknum + JUMP_(key, num_probes)) & bucket_count_minus_one) { - ++num_probes; - assert(num_probes < bucket_count()); // or else the hashtable is full - } - table.set(bucknum, *it); // copies the value to here - } - num_ht_copies++; - } - - // Implementation is like copy_from, but it destroys the table of the - // "from" guy by freeing sparsetable memory as we iterate. This is - // useful in resizing, since we're throwing away the "from" guy anyway. - void move_from(MoveDontCopyT mover, sparse_hashtable &ht, - size_type min_buckets_wanted) { - clear(); // clear table, set num_deleted to 0 - - // If we need to change the size of our table, do it now - size_t resize_to; - if ( mover == MoveDontGrow ) - resize_to = ht.bucket_count(); // keep same size as old ht - else // MoveDontCopy - resize_to = min_size(ht.size(), min_buckets_wanted); - if ( resize_to > bucket_count() ) { // we don't have enough buckets - table.resize(resize_to); // sets the number of buckets - reset_thresholds(); - } - - // We use a normal iterator to get non-deleted bcks from ht - // We could use insert() here, but since we know there are - // no duplicates and no deleted items, we can be more efficient - assert( (bucket_count() & (bucket_count()-1)) == 0); // a power of two - // THIS IS THE MAJOR LINE THAT DIFFERS FROM COPY_FROM(): - for ( destructive_iterator it = ht.destructive_begin(); - it != ht.destructive_end(); ++it ) { - size_type num_probes = 0; // how many times we've probed - size_type bucknum; - for ( bucknum = hash(get_key(*it)) & (bucket_count()-1); // h % buck_cnt - table.test(bucknum); // not empty - bucknum = (bucknum + JUMP_(key, num_probes)) & (bucket_count()-1) ) { - ++num_probes; - assert(num_probes < bucket_count()); // or else the hashtable is full - } - table.set(bucknum, *it); // copies the value to here - } - num_ht_copies++; - } - - - // Required by the spec for hashed associative container - public: - // Though the docs say this should be num_buckets, I think it's much - // more useful as num_elements. As a special feature, calling with - // req_elements==0 will cause us to shrink if we can, saving space. - void resize(size_type req_elements) { // resize to this or larger - if ( consider_shrink || req_elements == 0 ) - maybe_shrink(); - if ( req_elements > table.num_nonempty() ) // we only grow - resize_delta(req_elements - table.num_nonempty()); - } - - // Get and change the value of shrink_resize_percent and - // enlarge_resize_percent. The description at the beginning of this - // file explains how to choose the values. Setting the shrink - // parameter to 0.0 ensures that the table never shrinks. - void get_resizing_parameters(float* shrink, float* grow) const { - *shrink = shrink_resize_percent; - *grow = enlarge_resize_percent; - } - void set_resizing_parameters(float shrink, float grow) { - assert(shrink >= 0.0); - assert(grow <= 1.0); - if (shrink > grow/2.0f) - shrink = grow / 2.0f; // otherwise we thrash hashtable size - shrink_resize_percent = shrink; - enlarge_resize_percent = grow; - reset_thresholds(); - } - - // CONSTRUCTORS -- as required by the specs, we take a size, - // but also let you specify a hashfunction, key comparator, - // and key extractor. We also define a copy constructor and =. - // DESTRUCTOR -- the default is fine, surprisingly. - explicit sparse_hashtable(size_type expected_max_items_in_table = 0, - const HashFcn& hf = HashFcn(), - const EqualKey& eql = EqualKey(), - const SetKey& set = SetKey(), - const ExtractKey& ext = ExtractKey()) - : hash(hf), equals(eql), get_key(ext), set_key(set), num_deleted(0), - use_deleted(false), delkey(), enlarge_resize_percent(HT_OCCUPANCY_FLT), - shrink_resize_percent(HT_EMPTY_FLT), - table(expected_max_items_in_table == 0 - ? HT_DEFAULT_STARTING_BUCKETS - : min_size(expected_max_items_in_table, 0)), - num_ht_copies(0) { - reset_thresholds(); - } - - // As a convenience for resize(), we allow an optional second argument - // which lets you make this new hashtable a different size than ht. - // We also provide a mechanism of saying you want to "move" the ht argument - // into us instead of copying. - sparse_hashtable(const sparse_hashtable& ht, - size_type min_buckets_wanted = HT_DEFAULT_STARTING_BUCKETS) - : hash(ht.hash), equals(ht.equals), - get_key(ht.get_key), set_key(ht.set_key), num_deleted(0), - use_deleted(ht.use_deleted), delkey(ht.delkey), - enlarge_resize_percent(ht.enlarge_resize_percent), - shrink_resize_percent(ht.shrink_resize_percent), - table(), num_ht_copies(ht.num_ht_copies) { - reset_thresholds(); - copy_from(ht, min_buckets_wanted); // copy_from() ignores deleted entries - } - sparse_hashtable(MoveDontCopyT mover, sparse_hashtable& ht, - size_type min_buckets_wanted = HT_DEFAULT_STARTING_BUCKETS) - : hash(ht.hash), equals(ht.equals), get_key(ht.get_key), - num_deleted(0), use_deleted(ht.use_deleted), delkey(ht.delkey), - enlarge_resize_percent(ht.enlarge_resize_percent), - shrink_resize_percent(ht.shrink_resize_percent), - table(), num_ht_copies(ht.num_ht_copies) { - reset_thresholds(); - move_from(mover, ht, min_buckets_wanted); // ignores deleted entries - } - - sparse_hashtable& operator= (const sparse_hashtable& ht) { - if (&ht == this) return *this; // don't copy onto ourselves - hash = ht.hash; - equals = ht.equals; - get_key = ht.get_key; - set_key = ht.set_key; - use_deleted = ht.use_deleted; - delkey = ht.delkey; - copy_from(ht, HT_MIN_BUCKETS); // calls clear and sets num_deleted to 0 too - return *this; - } - - // Many STL algorithms use swap instead of copy constructors - void swap(sparse_hashtable& ht) { - STL_NAMESPACE::swap(hash, ht.hash); - STL_NAMESPACE::swap(equals, ht.equals); - STL_NAMESPACE::swap(get_key, ht.get_key); - STL_NAMESPACE::swap(set_key, ht.set_key); - STL_NAMESPACE::swap(num_deleted, ht.num_deleted); - STL_NAMESPACE::swap(use_deleted, ht.use_deleted); - STL_NAMESPACE::swap(enlarge_resize_percent, ht.enlarge_resize_percent); - STL_NAMESPACE::swap(shrink_resize_percent, ht.shrink_resize_percent); - STL_NAMESPACE::swap(delkey, ht.delkey); - table.swap(ht.table); - STL_NAMESPACE::swap(num_ht_copies, ht.num_ht_copies); - reset_thresholds(); - ht.reset_thresholds(); - } - - // It's always nice to be able to clear a table without deallocating it - void clear() { - if (!empty() || (num_deleted != 0)) { - table.clear(); - } - reset_thresholds(); - num_deleted = 0; - } - - - // LOOKUP ROUTINES - private: - // Returns a pair of positions: 1st where the object is, 2nd where - // it would go if you wanted to insert it. 1st is ILLEGAL_BUCKET - // if object is not found; 2nd is ILLEGAL_BUCKET if it is. - // Note: because of deletions where-to-insert is not trivial: it's the - // first deleted bucket we see, as long as we don't find the key later - pair find_position(const key_type &key) const { - size_type num_probes = 0; // how many times we've probed - const size_type bucket_count_minus_one = bucket_count() - 1; - size_type bucknum = hash(key) & bucket_count_minus_one; - size_type insert_pos = ILLEGAL_BUCKET; // where we would insert - SPARSEHASH_STAT_UPDATE(total_lookups += 1); - while ( 1 ) { // probe until something happens - if ( !table.test(bucknum) ) { // bucket is empty - SPARSEHASH_STAT_UPDATE(total_probes += num_probes); - if ( insert_pos == ILLEGAL_BUCKET ) // found no prior place to insert - return pair(ILLEGAL_BUCKET, bucknum); - else - return pair(ILLEGAL_BUCKET, insert_pos); - - } else if ( test_deleted(bucknum) ) {// keep searching, but mark to insert - if ( insert_pos == ILLEGAL_BUCKET ) - insert_pos = bucknum; - - } else if ( equals(key, get_key(table.unsafe_get(bucknum))) ) { - SPARSEHASH_STAT_UPDATE(total_probes += num_probes); - return pair(bucknum, ILLEGAL_BUCKET); - } - ++num_probes; // we're doing another probe - bucknum = (bucknum + JUMP_(key, num_probes)) & bucket_count_minus_one; - assert(num_probes < bucket_count()); // don't probe too many times! - } - } - - public: - iterator find(const key_type& key) { - if ( size() == 0 ) return end(); - pair pos = find_position(key); - if ( pos.first == ILLEGAL_BUCKET ) // alas, not there - return end(); - else - return iterator(this, table.get_iter(pos.first), table.nonempty_end()); - } - - const_iterator find(const key_type& key) const { - if ( size() == 0 ) return end(); - pair pos = find_position(key); - if ( pos.first == ILLEGAL_BUCKET ) // alas, not there - return end(); - else - return const_iterator(this, - table.get_iter(pos.first), table.nonempty_end()); - } - - // This is a tr1 method: the bucket a given key is in, or what bucket - // it would be put in, if it were to be inserted. Shrug. - size_type bucket(const key_type& key) const { - pair pos = find_position(key); - return pos.first == ILLEGAL_BUCKET ? pos.second : pos.first; - } - - // Counts how many elements have key key. For maps, it's either 0 or 1. - size_type count(const key_type &key) const { - pair pos = find_position(key); - return pos.first == ILLEGAL_BUCKET ? 0 : 1; - } - - // Likewise, equal_range doesn't really make sense for us. Oh well. - pair equal_range(const key_type& key) { - iterator pos = find(key); // either an iterator or end - if (pos == end()) { - return pair(pos, pos); - } else { - const iterator startpos = pos++; - return pair(startpos, pos); - } - } - pair equal_range(const key_type& key) const { - const_iterator pos = find(key); // either an iterator or end - if (pos == end()) { - return pair(pos, pos); - } else { - const const_iterator startpos = pos++; - return pair(startpos, pos); - } - } - - - // INSERTION ROUTINES - private: - // If you know *this is big enough to hold obj, use this routine - pair insert_noresize(const value_type& obj) { - // First, double-check we're not inserting delkey - assert(!use_deleted || !equals(get_key(obj), delkey)); - const pair pos = find_position(get_key(obj)); - if ( pos.first != ILLEGAL_BUCKET) { // object was already there - return pair(iterator(this, table.get_iter(pos.first), - table.nonempty_end()), - false); // false: we didn't insert - } else { // pos.second says where to put it - if ( test_deleted(pos.second) ) { // just replace if it's been del. - // The set() below will undelete this object. We just worry about stats - assert(num_deleted > 0); - --num_deleted; // used to be, now it isn't - } - table.set(pos.second, obj); - return pair(iterator(this, table.get_iter(pos.second), - table.nonempty_end()), - true); // true: we did insert - } - } - - public: - // This is the normal insert routine, used by the outside world - pair insert(const value_type& obj) { - resize_delta(1); // adding an object, grow if need be - return insert_noresize(obj); - } - - // When inserting a lot at a time, we specialize on the type of iterator - template - void insert(InputIterator f, InputIterator l) { - // specializes on iterator type - insert(f, l, typename STL_NAMESPACE::iterator_traits::iterator_category()); - } - - // Iterator supports operator-, resize before inserting - template - void insert(ForwardIterator f, ForwardIterator l, - STL_NAMESPACE::forward_iterator_tag) { - size_type n = STL_NAMESPACE::distance(f, l); // TODO(csilvers): standard? - resize_delta(n); - for ( ; n > 0; --n, ++f) - insert_noresize(*f); - } - - // Arbitrary iterator, can't tell how much to resize - template - void insert(InputIterator f, InputIterator l, - STL_NAMESPACE::input_iterator_tag) { - for ( ; f != l; ++f) - insert(*f); - } - - - // DELETION ROUTINES - size_type erase(const key_type& key) { - // First, double-check we're not erasing delkey. - assert(!use_deleted || !equals(key, delkey)); - const_iterator pos = find(key); // shrug: shouldn't need to be const - if ( pos != end() ) { - assert(!test_deleted(pos)); // or find() shouldn't have returned it - set_deleted(pos); - ++num_deleted; - consider_shrink = true; // will think about shrink after next insert - return 1; // because we deleted one thing - } else { - return 0; // because we deleted nothing - } - } - - // We return the iterator past the deleted item. - void erase(iterator pos) { - if ( pos == end() ) return; // sanity check - if ( set_deleted(pos) ) { // true if object has been newly deleted - ++num_deleted; - consider_shrink = true; // will think about shrink after next insert - } - } - - void erase(iterator f, iterator l) { - for ( ; f != l; ++f) { - if ( set_deleted(f) ) // should always be true - ++num_deleted; - } - consider_shrink = true; // will think about shrink after next insert - } - - // We allow you to erase a const_iterator just like we allow you to - // erase an iterator. This is in parallel to 'delete': you can delete - // a const pointer just like a non-const pointer. The logic is that - // you can't use the object after it's erased anyway, so it doesn't matter - // if it's const or not. - void erase(const_iterator pos) { - if ( pos == end() ) return; // sanity check - if ( set_deleted(pos) ) { // true if object has been newly deleted - ++num_deleted; - consider_shrink = true; // will think about shrink after next insert - } - } - void erase(const_iterator f, const_iterator l) { - for ( ; f != l; ++f) { - if ( set_deleted(f) ) // should always be true - ++num_deleted; - } - consider_shrink = true; // will think about shrink after next insert - } - - - // COMPARISON - bool operator==(const sparse_hashtable& ht) const { - // We really want to check that the hash functions are the same - // but alas there's no way to do this. We just hope. - return ( num_deleted == ht.num_deleted && table == ht.table ); - } - bool operator!=(const sparse_hashtable& ht) const { - return !(*this == ht); - } - - - // I/O - // We support reading and writing hashtables to disk. NOTE that - // this only stores the hashtable metadata, not the stuff you've - // actually put in the hashtable! Alas, since I don't know how to - // write a hasher or key_equal, you have to make sure everything - // but the table is the same. We compact before writing. - bool write_metadata(FILE *fp) { - squash_deleted(); // so we don't have to worry about delkey - return table.write_metadata(fp); - } - - bool read_metadata(FILE *fp) { - num_deleted = 0; // since we got rid before writing - bool result = table.read_metadata(fp); - reset_thresholds(); - return result; - } - - // Only meaningful if value_type is a POD. - bool write_nopointer_data(FILE *fp) { - return table.write_nopointer_data(fp); - } - - // Only meaningful if value_type is a POD. - bool read_nopointer_data(FILE *fp) { - return table.read_nopointer_data(fp); - } - - private: - // The actual data - hasher hash; // required by hashed_associative_container - key_equal equals; - ExtractKey get_key; - SetKey set_key; - size_type num_deleted; // how many occupied buckets are marked deleted - bool use_deleted; // false until delkey has been set - // TODO(csilvers): make a pointer, and get rid of use_deleted (benchmark!) - key_type delkey; // which key marks deleted entries - float enlarge_resize_percent; // how full before resize - float shrink_resize_percent; // how empty before resize - size_type shrink_threshold; // table.size() * shrink_resize_percent - size_type enlarge_threshold; // table.size() * enlarge_resize_percent - sparsetable table; // holds num_buckets and num_elements too - bool consider_shrink; // true if we should try to shrink before next insert - int num_ht_copies; // a statistics counter incremented every Copy/Move - - void reset_thresholds() { - enlarge_threshold = static_cast(table.size() - * enlarge_resize_percent); - shrink_threshold = static_cast(table.size() - * shrink_resize_percent); - consider_shrink = false; // whatever caused us to reset already considered - } -}; - -// We need a global swap as well -template -inline void swap(sparse_hashtable &x, - sparse_hashtable &y) { - x.swap(y); -} - -#undef JUMP_ - -template -const typename sparse_hashtable::size_type - sparse_hashtable::ILLEGAL_BUCKET; - -// How full we let the table get before we resize. Knuth says .8 is -// good -- higher causes us to probe too much, though saves memory -template -const float sparse_hashtable::HT_OCCUPANCY_FLT = 0.8f; - -// How empty we let the table get before we resize lower. -// It should be less than OCCUPANCY_FLT / 2 or we thrash resizing -template -const float sparse_hashtable::HT_EMPTY_FLT = 0.4f * -sparse_hashtable::HT_OCCUPANCY_FLT; - -_END_GOOGLE_NAMESPACE_ - -#endif /* _SPARSEHASHTABLE_H_ */ diff --git a/src/sparsehash-1.6/src/google/sparsetable b/src/sparsehash-1.6/src/google/sparsetable deleted file mode 100644 index 6dc0937..0000000 --- a/src/sparsehash-1.6/src/google/sparsetable +++ /dev/null @@ -1,1473 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// A sparsetable is a random container that implements a sparse array, -// that is, an array that uses very little memory to store unassigned -// indices (in this case, between 1-2 bits per unassigned index). For -// instance, if you allocate an array of size 5 and assign a[2] = , then a[2] will take up a lot of memory but a[0], a[1], -// a[3], and a[4] will not. Array elements that have a value are -// called "assigned". Array elements that have no value yet, or have -// had their value cleared using erase() or clear(), are called -// "unassigned". -// -// Unassigned values seem to have the default value of T (see below). -// Nevertheless, there is a difference between an unassigned index and -// one explicitly assigned the value of T(). The latter is considered -// assigned. -// -// Access to an array element is constant time, as is insertion and -// deletion. Insertion and deletion may be fairly slow, however: -// because of this container's memory economy, each insert and delete -// causes a memory reallocation. -// -// See /usr/(local/)?doc/sparsehash-0.1/sparsetable.html -// for information about how to use this class. - -#ifndef _SPARSETABLE_H_ -#define _SPARSETABLE_H_ - -#include -#include // for malloc/free -#include // to read/write tables -#ifdef HAVE_STDINT_H -#include // the normal place uint16_t is defined -#endif -#ifdef HAVE_SYS_TYPES_H -#include // the normal place u_int16_t is defined -#endif -#ifdef HAVE_INTTYPES_H -#include // a third place for uint16_t or u_int16_t -#endif -#include // for bounds checking -#include // to define reverse_iterator for me -#include // equal, lexicographical_compare, swap,... -#include // uninitialized_copy -#include // a sparsetable is a vector of groups -#include // for true_type, integral_constant, etc. - -#if STDC_HEADERS -#include // for memcpy -#else -#if !HAVE_MEMCPY -#define memcpy(d, s, n) bcopy ((s), (d), (n)) -#endif -#endif - -_START_GOOGLE_NAMESPACE_ - -#ifndef HAVE_U_INT16_T -# if defined HAVE_UINT16_T - typedef uint16_t u_int16_t; // true on solaris, possibly other C99 libc's -# elif defined HAVE___UINT16 - typedef __int16 int16_t; // true on vc++7 - typedef unsigned __int16 u_int16_t; -# else - // Cannot find a 16-bit integer type. Hoping for the best with "short"... - typedef short int int16_t; - typedef unsigned short int u_int16_t; -# endif -#endif - -using STL_NAMESPACE::vector; -using STL_NAMESPACE::uninitialized_copy; - -// The smaller this is, the faster lookup is (because the group bitmap is -// smaller) and the faster insert is, because there's less to move. -// On the other hand, there are more groups. Since group::size_type is -// a short, this number should be of the form 32*x + 16 to avoid waste. -static const u_int16_t DEFAULT_SPARSEGROUP_SIZE = 48; // fits in 1.5 words - - -// A NOTE ON ASSIGNING: -// A sparse table does not actually allocate memory for entries -// that are not filled. Because of this, it becomes complicated -// to have a non-const iterator: we don't know, if the iterator points -// to a not-filled bucket, whether you plan to fill it with something -// or whether you plan to read its value (in which case you'll get -// the default bucket value). Therefore, while we can define const -// operations in a pretty 'normal' way, for non-const operations, we -// define something that returns a helper object with operator= and -// operator& that allocate a bucket lazily. We use this for table[] -// and also for regular table iterators. - -template -class table_element_adaptor { - public: - typedef typename tabletype::value_type value_type; - typedef typename tabletype::size_type size_type; - typedef typename tabletype::reference reference; - typedef typename tabletype::pointer pointer; - - table_element_adaptor(tabletype *tbl, size_type p) - : table(tbl), pos(p) { } - table_element_adaptor& operator= (const value_type &val) { - table->set(pos, val); - return *this; - } - operator value_type() { return table->get(pos); } // we look like a value - pointer operator& () { return &table->mutating_get(pos); } - - private: - tabletype* table; - size_type pos; -}; - -// Our iterator as simple as iterators can be: basically it's just -// the index into our table. Dereference, the only complicated -// thing, we punt to the table class. This just goes to show how -// much machinery STL requires to do even the most trivial tasks. -// -// By templatizing over tabletype, we have one iterator type which -// we can use for both sparsetables and sparsebins. In fact it -// works on any class that allows size() and operator[] (eg vector), -// as long as it does the standard STL typedefs too (eg value_type). - -template -class table_iterator { - public: - typedef table_iterator iterator; - - typedef STL_NAMESPACE::random_access_iterator_tag iterator_category; - typedef typename tabletype::value_type value_type; - typedef typename tabletype::difference_type difference_type; - typedef typename tabletype::size_type size_type; - typedef table_element_adaptor reference; - typedef table_element_adaptor* pointer; - - // The "real" constructor - table_iterator(tabletype *tbl, size_type p) - : table(tbl), pos(p) { } - // The default constructor, used when I define vars of type table::iterator - table_iterator() : table(NULL), pos(0) { } - // The copy constructor, for when I say table::iterator foo = tbl.begin() - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // The main thing our iterator does is dereference. If the table entry - // we point to is empty, we return the default value type. - // This is the big different function from the const iterator. - reference operator*() { - return table_element_adaptor(table, pos); - } - pointer operator->() { return &(operator*()); } - - // Helper function to assert things are ok; eg pos is still in range - void check() const { - assert(table); - assert(pos <= table->size()); - } - - // Arithmetic: we just do arithmetic on pos. We don't even need to - // do bounds checking, since STL doesn't consider that it's job. :-) - iterator& operator+=(size_type t) { pos += t; check(); return *this; } - iterator& operator-=(size_type t) { pos -= t; check(); return *this; } - iterator& operator++() { ++pos; check(); return *this; } - iterator& operator--() { --pos; check(); return *this; } - iterator operator++(int) { iterator tmp(*this); // for x++ - ++pos; check(); return tmp; } - iterator operator--(int) { iterator tmp(*this); // for x-- - --pos; check(); return tmp; } - iterator operator+(difference_type i) const { iterator tmp(*this); - tmp += i; return tmp; } - iterator operator-(difference_type i) const { iterator tmp(*this); - tmp -= i; return tmp; } - difference_type operator-(iterator it) const { // for "x = it2 - it" - assert(table == it.table); - return pos - it.pos; - } - reference operator[](difference_type n) const { - return *(*this + n); // simple though not totally efficient - } - - // Comparisons. - bool operator==(const iterator& it) const { - return table == it.table && pos == it.pos; - } - bool operator<(const iterator& it) const { - assert(table == it.table); // life is bad bad bad otherwise - return pos < it.pos; - } - bool operator!=(const iterator& it) const { return !(*this == it); } - bool operator<=(const iterator& it) const { return !(it < *this); } - bool operator>(const iterator& it) const { return it < *this; } - bool operator>=(const iterator& it) const { return !(*this < it); } - - // Here's the info we actually need to be an iterator - tabletype *table; // so we can dereference and bounds-check - size_type pos; // index into the table -}; - -// support for "3 + iterator" has to be defined outside the class, alas -template -table_iterator operator+(typename table_iterator::difference_type i, - table_iterator it) { - return it + i; // so people can say it2 = 3 + it -} - -template -class const_table_iterator { - public: - typedef table_iterator iterator; - typedef const_table_iterator const_iterator; - - typedef STL_NAMESPACE::random_access_iterator_tag iterator_category; - typedef typename tabletype::value_type value_type; - typedef typename tabletype::difference_type difference_type; - typedef typename tabletype::size_type size_type; - typedef typename tabletype::const_reference reference; // we're const-only - typedef typename tabletype::const_pointer pointer; - - // The "real" constructor - const_table_iterator(const tabletype *tbl, size_type p) - : table(tbl), pos(p) { } - // The default constructor, used when I define vars of type table::iterator - const_table_iterator() : table(NULL), pos(0) { } - // The copy constructor, for when I say table::iterator foo = tbl.begin() - // Also converts normal iterators to const iterators - const_table_iterator(const iterator &from) - : table(from.table), pos(from.pos) { } - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // The main thing our iterator does is dereference. If the table entry - // we point to is empty, we return the default value type. - reference operator*() const { return (*table)[pos]; } - pointer operator->() const { return &(operator*()); } - - // Helper function to assert things are ok; eg pos is still in range - void check() const { - assert(table); - assert(pos <= table->size()); - } - - // Arithmetic: we just do arithmetic on pos. We don't even need to - // do bounds checking, since STL doesn't consider that it's job. :-) - const_iterator& operator+=(size_type t) { pos += t; check(); return *this; } - const_iterator& operator-=(size_type t) { pos -= t; check(); return *this; } - const_iterator& operator++() { ++pos; check(); return *this; } - const_iterator& operator--() { --pos; check(); return *this; } - const_iterator operator++(int) { const_iterator tmp(*this); // for x++ - ++pos; check(); return tmp; } - const_iterator operator--(int) { const_iterator tmp(*this); // for x-- - --pos; check(); return tmp; } - const_iterator operator+(difference_type i) const { const_iterator tmp(*this); - tmp += i; return tmp; } - const_iterator operator-(difference_type i) const { const_iterator tmp(*this); - tmp -= i; return tmp; } - difference_type operator-(const_iterator it) const { // for "x = it2 - it" - assert(table == it.table); - return pos - it.pos; - } - reference operator[](difference_type n) const { - return *(*this + n); // simple though not totally efficient - } - - // Comparisons. - bool operator==(const const_iterator& it) const { - return table == it.table && pos == it.pos; - } - bool operator<(const const_iterator& it) const { - assert(table == it.table); // life is bad bad bad otherwise - return pos < it.pos; - } - bool operator!=(const const_iterator& it) const { return !(*this == it); } - bool operator<=(const const_iterator& it) const { return !(it < *this); } - bool operator>(const const_iterator& it) const { return it < *this; } - bool operator>=(const const_iterator& it) const { return !(*this < it); } - - // Here's the info we actually need to be an iterator - const tabletype *table; // so we can dereference and bounds-check - size_type pos; // index into the table -}; - -// support for "3 + iterator" has to be defined outside the class, alas -template -const_table_iterator operator+(typename - const_table_iterator::difference_type i, - const_table_iterator it) { - return it + i; // so people can say it2 = 3 + it -} - - -// --------------------------------------------------------------------------- - - -/* -// This is a 2-D iterator. You specify a begin and end over a list -// of *containers*. We iterate over each container by iterating over -// it. It's actually simple: -// VECTOR.begin() VECTOR[0].begin() --------> VECTOR[0].end() ---, -// | ________________________________________________/ -// | \_> VECTOR[1].begin() --------> VECTOR[1].end() -, -// | ___________________________________________________/ -// v \_> ...... -// VECTOR.end() -// -// It's impossible to do random access on one of these things in constant -// time, so it's just a bidirectional iterator. -// -// Unfortunately, because we need to use this for a non-empty iterator, -// we use nonempty_begin() and nonempty_end() instead of begin() and end() -// (though only going across, not down). -*/ - -#define TWOD_BEGIN_ nonempty_begin -#define TWOD_END_ nonempty_end -#define TWOD_ITER_ nonempty_iterator -#define TWOD_CONST_ITER_ const_nonempty_iterator - -template -class two_d_iterator { - public: - typedef two_d_iterator iterator; - - typedef STL_NAMESPACE::bidirectional_iterator_tag iterator_category; - // apparently some versions of VC++ have trouble with two ::'s in a typename - typedef typename containertype::value_type _tmp_vt; - typedef typename _tmp_vt::value_type value_type; - typedef typename _tmp_vt::difference_type difference_type; - typedef typename _tmp_vt::reference reference; - typedef typename _tmp_vt::pointer pointer; - - // The "real" constructor. begin and end specify how many rows we have - // (in the diagram above); we always iterate over each row completely. - two_d_iterator(typename containertype::iterator begin, - typename containertype::iterator end, - typename containertype::iterator curr) - : row_begin(begin), row_end(end), row_current(curr), col_current() { - if ( row_current != row_end ) { - col_current = row_current->TWOD_BEGIN_(); - advance_past_end(); // in case cur->begin() == cur->end() - } - } - // If you want to start at an arbitrary place, you can, I guess - two_d_iterator(typename containertype::iterator begin, - typename containertype::iterator end, - typename containertype::iterator curr, - typename containertype::value_type::TWOD_ITER_ col) - : row_begin(begin), row_end(end), row_current(curr), col_current(col) { - advance_past_end(); // in case cur->begin() == cur->end() - } - // The default constructor, used when I define vars of type table::iterator - two_d_iterator() : row_begin(), row_end(), row_current(), col_current() { } - // The default destructor is fine; we don't define one - // The default operator= is fine; we don't define one - - // Happy dereferencer - reference operator*() const { return *col_current; } - pointer operator->() const { return &(operator*()); } - - // Arithmetic: we just do arithmetic on pos. We don't even need to - // do bounds checking, since STL doesn't consider that it's job. :-) - // NOTE: this is not amortized constant time! What do we do about it? - void advance_past_end() { // used when col_current points to end() - while ( col_current == row_current->TWOD_END_() ) { // end of current row - ++row_current; // go to beginning of next - if ( row_current != row_end ) // col is irrelevant at end - col_current = row_current->TWOD_BEGIN_(); - else - break; // don't go past row_end - } - } - - iterator& operator++() { - assert(row_current != row_end); // how to ++ from there? - ++col_current; - advance_past_end(); // in case col_current is at end() - return *this; - } - iterator& operator--() { - while ( row_current == row_end || - col_current == row_current->TWOD_BEGIN_() ) { - assert(row_current != row_begin); - --row_current; - col_current = row_current->TWOD_END_(); // this is 1 too far - } - --col_current; - return *this; - } - iterator operator++(int) { iterator tmp(*this); ++*this; return tmp; } - iterator operator--(int) { iterator tmp(*this); --*this; return tmp; } - - - // Comparisons. - bool operator==(const iterator& it) const { - return ( row_begin == it.row_begin && - row_end == it.row_end && - row_current == it.row_current && - (row_current == row_end || col_current == it.col_current) ); - } - bool operator!=(const iterator& it) const { return !(*this == it); } - - - // Here's the info we actually need to be an iterator - // These need to be public so we convert from iterator to const_iterator - typename containertype::iterator row_begin, row_end, row_current; - typename containertype::value_type::TWOD_ITER_ col_current; -}; - -// The same thing again, but this time const. :-( -template -class const_two_d_iterator { - public: - typedef const_two_d_iterator iterator; - - typedef STL_NAMESPACE::bidirectional_iterator_tag iterator_category; - // apparently some versions of VC++ have trouble with two ::'s in a typename - typedef typename containertype::value_type _tmp_vt; - typedef typename _tmp_vt::value_type value_type; - typedef typename _tmp_vt::difference_type difference_type; - typedef typename _tmp_vt::const_reference reference; - typedef typename _tmp_vt::const_pointer pointer; - - const_two_d_iterator(typename containertype::const_iterator begin, - typename containertype::const_iterator end, - typename containertype::const_iterator curr) - : row_begin(begin), row_end(end), row_current(curr), col_current() { - if ( curr != end ) { - col_current = curr->TWOD_BEGIN_(); - advance_past_end(); // in case cur->begin() == cur->end() - } - } - const_two_d_iterator(typename containertype::const_iterator begin, - typename containertype::const_iterator end, - typename containertype::const_iterator curr, - typename containertype::value_type::TWOD_CONST_ITER_ col) - : row_begin(begin), row_end(end), row_current(curr), col_current(col) { - advance_past_end(); // in case cur->begin() == cur->end() - } - const_two_d_iterator() - : row_begin(), row_end(), row_current(), col_current() { - } - // Need this explicitly so we can convert normal iterators to const iterators - const_two_d_iterator(const two_d_iterator& it) : - row_begin(it.row_begin), row_end(it.row_end), row_current(it.row_current), - col_current(it.col_current) { } - - typename containertype::const_iterator row_begin, row_end, row_current; - typename containertype::value_type::TWOD_CONST_ITER_ col_current; - - - // EVERYTHING FROM HERE DOWN IS THE SAME AS THE NON-CONST ITERATOR - reference operator*() const { return *col_current; } - pointer operator->() const { return &(operator*()); } - - void advance_past_end() { // used when col_current points to end() - while ( col_current == row_current->TWOD_END_() ) { // end of current row - ++row_current; // go to beginning of next - if ( row_current != row_end ) // col is irrelevant at end - col_current = row_current->TWOD_BEGIN_(); - else - break; // don't go past row_end - } - } - iterator& operator++() { - assert(row_current != row_end); // how to ++ from there? - ++col_current; - advance_past_end(); // in case col_current is at end() - return *this; - } - iterator& operator--() { - while ( row_current == row_end || - col_current == row_current->TWOD_BEGIN_() ) { - assert(row_current != row_begin); - --row_current; - col_current = row_current->TWOD_END_(); // this is 1 too far - } - --col_current; - return *this; - } - iterator operator++(int) { iterator tmp(*this); ++*this; return tmp; } - iterator operator--(int) { iterator tmp(*this); --*this; return tmp; } - - bool operator==(const iterator& it) const { - return ( row_begin == it.row_begin && - row_end == it.row_end && - row_current == it.row_current && - (row_current == row_end || col_current == it.col_current) ); - } - bool operator!=(const iterator& it) const { return !(*this == it); } -}; - -// We provide yet another version, to be as frugal with memory as -// possible. This one frees each block of memory as it finishes -// iterating over it. By the end, the entire table is freed. -// For understandable reasons, you can only iterate over it once, -// which is why it's an input iterator -template -class destructive_two_d_iterator { - public: - typedef destructive_two_d_iterator iterator; - - typedef STL_NAMESPACE::input_iterator_tag iterator_category; - // apparently some versions of VC++ have trouble with two ::'s in a typename - typedef typename containertype::value_type _tmp_vt; - typedef typename _tmp_vt::value_type value_type; - typedef typename _tmp_vt::difference_type difference_type; - typedef typename _tmp_vt::reference reference; - typedef typename _tmp_vt::pointer pointer; - - destructive_two_d_iterator(typename containertype::iterator begin, - typename containertype::iterator end, - typename containertype::iterator curr) - : row_begin(begin), row_end(end), row_current(curr), col_current() { - if ( curr != end ) { - col_current = curr->TWOD_BEGIN_(); - advance_past_end(); // in case cur->begin() == cur->end() - } - } - destructive_two_d_iterator(typename containertype::iterator begin, - typename containertype::iterator end, - typename containertype::iterator curr, - typename containertype::value_type::TWOD_ITER_ col) - : row_begin(begin), row_end(end), row_current(curr), col_current(col) { - advance_past_end(); // in case cur->begin() == cur->end() - } - destructive_two_d_iterator() - : row_begin(), row_end(), row_current(), col_current() { - } - - typename containertype::iterator row_begin, row_end, row_current; - typename containertype::value_type::TWOD_ITER_ col_current; - - // This is the part that destroys - void advance_past_end() { // used when col_current points to end() - while ( col_current == row_current->TWOD_END_() ) { // end of current row - row_current->clear(); // the destructive part - // It would be nice if we could decrement sparsetable->num_buckets here - ++row_current; // go to beginning of next - if ( row_current != row_end ) // col is irrelevant at end - col_current = row_current->TWOD_BEGIN_(); - else - break; // don't go past row_end - } - } - - // EVERYTHING FROM HERE DOWN IS THE SAME AS THE REGULAR ITERATOR - reference operator*() const { return *col_current; } - pointer operator->() const { return &(operator*()); } - - iterator& operator++() { - assert(row_current != row_end); // how to ++ from there? - ++col_current; - advance_past_end(); // in case col_current is at end() - return *this; - } - iterator operator++(int) { iterator tmp(*this); ++*this; return tmp; } - - bool operator==(const iterator& it) const { - return ( row_begin == it.row_begin && - row_end == it.row_end && - row_current == it.row_current && - (row_current == row_end || col_current == it.col_current) ); - } - bool operator!=(const iterator& it) const { return !(*this == it); } -}; - -#undef TWOD_BEGIN_ -#undef TWOD_END_ -#undef TWOD_ITER_ -#undef TWOD_CONST_ITER_ - - - - -// SPARSE-TABLE -// ------------ -// The idea is that a table with (logically) t buckets is divided -// into t/M *groups* of M buckets each. (M is a constant set in -// GROUP_SIZE for efficiency.) Each group is stored sparsely. -// Thus, inserting into the table causes some array to grow, which is -// slow but still constant time. Lookup involves doing a -// logical-position-to-sparse-position lookup, which is also slow but -// constant time. The larger M is, the slower these operations are -// but the less overhead (slightly). -// -// To store the sparse array, we store a bitmap B, where B[i] = 1 iff -// bucket i is non-empty. Then to look up bucket i we really look up -// array[# of 1s before i in B]. This is constant time for fixed M. -// -// Terminology: the position of an item in the overall table (from -// 1 .. t) is called its "location." The logical position in a group -// (from 1 .. M ) is called its "position." The actual location in -// the array (from 1 .. # of non-empty buckets in the group) is -// called its "offset." - -// The weird mod in the offset is entirely to quiet compiler warnings -// as is the cast to int after doing the "x mod 256" -#define PUT_(take_from, offset) do { \ - if (putc(static_cast(((take_from) >> ((offset) % (sizeof(take_from)*8)))\ - % 256), fp) \ - == EOF) \ - return false; \ -} while (0) - -#define GET_(add_to, offset) do { \ - if ((x=getc(fp)) == EOF) \ - return false; \ - else \ - add_to |= (static_cast(x) << ((offset) % (sizeof(add_to)*8))); \ -} while (0) - -template -class sparsegroup { - public: - // Basic types - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef table_iterator > iterator; - typedef const_table_iterator > const_iterator; - typedef table_element_adaptor > element_adaptor; - typedef value_type &reference; - typedef const value_type &const_reference; - typedef u_int16_t size_type; // max # of buckets - typedef int16_t difference_type; - typedef STL_NAMESPACE::reverse_iterator const_reverse_iterator; - typedef STL_NAMESPACE::reverse_iterator reverse_iterator; - - // These are our special iterators, that go over non-empty buckets in a - // group. These aren't const-only because you can change non-empty bcks. - typedef pointer nonempty_iterator; - typedef const_pointer const_nonempty_iterator; - typedef STL_NAMESPACE::reverse_iterator reverse_nonempty_iterator; - typedef STL_NAMESPACE::reverse_iterator const_reverse_nonempty_iterator; - - // Iterator functions - iterator begin() { return iterator(this, 0); } - const_iterator begin() const { return const_iterator(this, 0); } - iterator end() { return iterator(this, size()); } - const_iterator end() const { return const_iterator(this, size()); } - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - // We'll have versions for our special non-empty iterator too - nonempty_iterator nonempty_begin() { return group; } - const_nonempty_iterator nonempty_begin() const { return group; } - nonempty_iterator nonempty_end() { return group + num_buckets; } - const_nonempty_iterator nonempty_end() const { return group + num_buckets; } - reverse_nonempty_iterator nonempty_rbegin() { - return reverse_nonempty_iterator(nonempty_end()); - } - const_reverse_nonempty_iterator nonempty_rbegin() const { - return const_reverse_nonempty_iterator(nonempty_end()); - } - reverse_nonempty_iterator nonempty_rend() { - return reverse_nonempty_iterator(nonempty_begin()); - } - const_reverse_nonempty_iterator nonempty_rend() const { - return const_reverse_nonempty_iterator(nonempty_begin()); - } - - - // This gives us the "default" value to return for an empty bucket. - // We just use the default constructor on T, the template type - const_reference default_value() const { - static value_type defaultval = value_type(); - return defaultval; - } - - - private: - // We need to do all this bit manipulation, of course. ick - static size_type charbit(size_type i) { return i >> 3; } - static size_type modbit(size_type i) { return 1 << (i&7); } - int bmtest(size_type i) const { return bitmap[charbit(i)] & modbit(i); } - void bmset(size_type i) { bitmap[charbit(i)] |= modbit(i); } - void bmclear(size_type i) { bitmap[charbit(i)] &= ~modbit(i); } - - void* realloc_or_die(void* ptr, size_t num_bytes) { - void* retval = realloc(ptr, num_bytes); - if (retval == NULL) { - // We really should use PRIuS here, but I don't want to have to add - // a whole new configure option, with concomitant macro namespace - // pollution, just to print this (unlikely) error message. So I cast. - fprintf(stderr, "FATAL ERROR: failed to allocate %lu bytes for ptr %p", - static_cast(num_bytes), ptr); - exit(1); - } - return retval; - } - - value_type* allocate_group(size_t n) { - return static_cast(realloc_or_die(NULL, - n * sizeof(value_type))); - } - - void free_group() { - // Valid even for empty group, because NULL+0 is defined to be NULL - value_type* end_it = group + num_buckets; - for (value_type* p = group; p != end_it; ++p) - p->~value_type(); - free(group); - group = NULL; - } - - public: // get_iter() in sparsetable needs it - // We need a small function that tells us how many set bits there are - // in positions 0..i-1 of the bitmap. It uses a big table. - // We make it static so templates don't allocate lots of these tables. - // There are lots of ways to do this calculation (called 'popcount'). - // The 8-bit table lookup is one of the fastest, though this - // implementation suffers from not doing any loop unrolling. See, eg, - // http://www.dalkescientific.com/writings/diary/archive/2008/07/03/hakmem_and_other_popcounts.html - // http://gurmeetsingh.wordpress.com/2008/08/05/fast-bit-counting-routines/ - static size_type pos_to_offset(const unsigned char *bm, size_type pos) { - // We could make these ints. The tradeoff is size (eg does it overwhelm - // the cache?) vs efficiency in referencing sub-word-sized array elements - static const char bits_in[256] = { // # of bits set in one char - 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, - }; - size_type retval = 0; - - // [Note: condition pos > 8 is an optimization; convince yourself we - // give exactly the same result as if we had pos >= 8 here instead.] - for ( ; pos > 8; pos -= 8 ) // bm[0..pos/8-1] - retval += bits_in[*bm++]; // chars we want *all* bits in - return retval + bits_in[*bm & ((1 << pos)-1)]; // the char that includes pos - } - - size_type pos_to_offset(size_type pos) const { // not static but still const - return pos_to_offset(bitmap, pos); - } - - - public: - // Constructors -- default and copy -- and destructor - sparsegroup() : group(0), num_buckets(0) { memset(bitmap, 0, sizeof(bitmap)); } - sparsegroup(const sparsegroup& x) : group(0), num_buckets(x.num_buckets) { - if ( num_buckets ) { - group = allocate_group(x.num_buckets); - uninitialized_copy(x.group, x.group + x.num_buckets, group); - } - memcpy(bitmap, x.bitmap, sizeof(bitmap)); - } - ~sparsegroup() { free_group(); } - - // Operator= is just like the copy constructor, I guess - // TODO(austern): Make this exception safe. Handle exceptions in value_type's - // copy constructor. - sparsegroup &operator=(const sparsegroup& x) { - if ( &x == this ) return *this; // x = x - if ( x.num_buckets == 0 ) { - free_group(); - } else { - value_type* p = allocate_group(x.num_buckets); - uninitialized_copy(x.group, x.group + x.num_buckets, p); - free_group(); - group = p; - } - memcpy(bitmap, x.bitmap, sizeof(bitmap)); - num_buckets = x.num_buckets; - return *this; - } - - // Many STL algorithms use swap instead of copy constructors - void swap(sparsegroup& x) { - STL_NAMESPACE::swap(group, x.group); - for ( int i = 0; i < sizeof(bitmap) / sizeof(*bitmap); ++i ) - STL_NAMESPACE::swap(bitmap[i], x.bitmap[i]); // swap not defined on arrays - STL_NAMESPACE::swap(num_buckets, x.num_buckets); - } - - // It's always nice to be able to clear a table without deallocating it - void clear() { - free_group(); - memset(bitmap, 0, sizeof(bitmap)); - num_buckets = 0; - } - - // Functions that tell you about size. Alas, these aren't so useful - // because our table is always fixed size. - size_type size() const { return GROUP_SIZE; } - size_type max_size() const { return GROUP_SIZE; } - bool empty() const { return false; } - // We also may want to know how many *used* buckets there are - size_type num_nonempty() const { return num_buckets; } - - - // get()/set() are explicitly const/non-const. You can use [] if - // you want something that can be either (potentially more expensive). - const_reference get(size_type i) const { - if ( bmtest(i) ) // bucket i is occupied - return group[pos_to_offset(bitmap, i)]; - else - return default_value(); // return the default reference - } - - // TODO(csilvers): make protected + friend - // This is used by sparse_hashtable to get an element from the table - // when we know it exists. - const_reference unsafe_get(size_type i) const { - assert(bmtest(i)); - return group[pos_to_offset(bitmap, i)]; - } - - // TODO(csilvers): make protected + friend - reference mutating_get(size_type i) { // fills bucket i before getting - if ( !bmtest(i) ) - set(i, default_value()); - return group[pos_to_offset(bitmap, i)]; - } - - // Syntactic sugar. It's easy to return a const reference. To - // return a non-const reference, we need to use the assigner adaptor. - const_reference operator[](size_type i) const { - return get(i); - } - - element_adaptor operator[](size_type i) { - return element_adaptor(this, i); - } - - private: - // Create space at group[offset], assuming value_type has trivial - // copy constructor and destructor. (Really, we want it to have - // "trivial move", because that's what realloc and memmove both do. - // But there's no way to capture that using type_traits, so we - // pretend that move(x, y) is equivalent to "x.~T(); new(x) T(y);" - // which is pretty much correct, if a bit conservative.) - void set_aux(size_type offset, true_type) { - group = (value_type *) - realloc_or_die(group, sizeof(*group) * (num_buckets+1)); - // This is equivalent to memmove(), but faster on my Intel P4, - // at least with gcc4.1 -O2 / glibc 2.3.6. - for (size_type i = num_buckets; i > offset; --i) - memcpy(group + i, group + i-1, sizeof(*group)); - } - - // Create space at group[offset], without special assumptions about value_type - void set_aux(size_type offset, false_type) { - // This is valid because 0 <= offset <= num_buckets - value_type* p = allocate_group(num_buckets + 1); - uninitialized_copy(group, group + offset, p); - uninitialized_copy(group + offset, group + num_buckets, p + offset + 1); - free_group(); - group = p; - } - - public: - // This returns a reference to the inserted item (which is a copy of val). - // TODO(austern): Make this exception safe: handle exceptions from - // value_type's copy constructor. - reference set(size_type i, const_reference val) { - size_type offset = pos_to_offset(bitmap, i); // where we'll find (or insert) - if ( bmtest(i) ) { - // Delete the old value, which we're replacing with the new one - group[offset].~value_type(); - } else { - typedef integral_constant::value && - has_trivial_destructor::value)> - realloc_and_memmove_ok; // we pretend mv(x,y) == "x.~T(); new(x) T(y)" - set_aux(offset, realloc_and_memmove_ok()); - ++num_buckets; - bmset(i); - } - // This does the actual inserting. Since we made the array using - // malloc, we use "placement new" to just call the constructor. - new(&group[offset]) value_type(val); - return group[offset]; - } - - // We let you see if a bucket is non-empty without retrieving it - bool test(size_type i) const { - return bmtest(i) ? true : false; // cast an int to a bool - } - bool test(iterator pos) const { - return bmtest(pos.pos) ? true : false; - } - - private: - // Shrink the array, assuming value_type has trivial copy - // constructor and destructor. (Really, we want it to have "trivial - // move", because that's what realloc and memmove both do. But - // there's no way to capture that using type_traits, so we pretend - // that move(x, y) is equivalent to ""x.~T(); new(x) T(y);" - // which is pretty much correct, if a bit conservative.) - void erase_aux(size_type offset, true_type) { - // This isn't technically necessary, since we know we have a - // trivial destructor, but is a cheap way to get a bit more safety. - group[offset].~value_type(); - // This is equivalent to memmove(), but faster on my Intel P4, - // at lesat with gcc4.1 -O2 / glibc 2.3.6. - assert(num_buckets > 0); - for (size_type i = offset; i < num_buckets-1; ++i) - memcpy(group + i, group + i+1, sizeof(*group)); // hopefully inlined! - group = (value_type *) - realloc_or_die(group, sizeof(*group) * (num_buckets-1)); - } - - // Shrink the array, without any special assumptions about value_type. - void erase_aux(size_type offset, false_type) { - // This is valid because 0 <= offset < num_buckets. Note the inequality. - value_type* p = allocate_group(num_buckets - 1); - uninitialized_copy(group, group + offset, p); - uninitialized_copy(group + offset + 1, group + num_buckets, p + offset); - free_group(); - group = p; - } - - public: - // This takes the specified elements out of the group. This is - // "undefining", rather than "clearing". - // TODO(austern): Make this exception safe: handle exceptions from - // value_type's copy constructor. - void erase(size_type i) { - if ( bmtest(i) ) { // trivial to erase empty bucket - size_type offset = pos_to_offset(bitmap,i); // where we'll find (or insert) - if ( num_buckets == 1 ) { - free_group(); - group = NULL; - } else { - typedef integral_constant::value && - has_trivial_destructor::value)> - realloc_and_memmove_ok; // pretend mv(x,y) == "x.~T(); new(x) T(y)" - erase_aux(offset, realloc_and_memmove_ok()); - } - --num_buckets; - bmclear(i); - } - } - - void erase(iterator pos) { - erase(pos.pos); - } - - void erase(iterator start_it, iterator end_it) { - // This could be more efficient, but to do so we'd need to make - // bmclear() clear a range of indices. Doesn't seem worth it. - for ( ; start_it != end_it; ++start_it ) - erase(start_it); - } - - - // I/O - // We support reading and writing groups to disk. We don't store - // the actual array contents (which we don't know how to store), - // just the bitmap and size. Meant to be used with table I/O. - // Returns true if all was ok - bool write_metadata(FILE *fp) const { - assert(sizeof(num_buckets) == 2); // we explicitly set to u_int16_t - PUT_(num_buckets, 8); - PUT_(num_buckets, 0); - if ( !fwrite(bitmap, sizeof(bitmap), 1, fp) ) return false; - return true; - } - - // Reading destroys the old group contents! Returns true if all was ok - bool read_metadata(FILE *fp) { - clear(); - - int x; // the GET_ macro requires an 'int x' to be defined - GET_(num_buckets, 8); - GET_(num_buckets, 0); - - if ( !fread(bitmap, sizeof(bitmap), 1, fp) ) return false; - - // We'll allocate the space, but we won't fill it: it will be - // left as uninitialized raw memory. - group = allocate_group(num_buckets); - return true; - } - - // If your keys and values are simple enough, we can write them - // to disk for you. "simple enough" means POD and no pointers. - // However, we don't try to normalize endianness - bool write_nopointer_data(FILE *fp) const { - for ( const_nonempty_iterator it = nonempty_begin(); - it != nonempty_end(); ++it ) { - if ( !fwrite(&*it, sizeof(*it), 1, fp) ) return false; - } - return true; - } - - // When reading, we have to override the potential const-ness of *it. - // Again, only meaningful if value_type is a POD. - bool read_nopointer_data(FILE *fp) { - for ( nonempty_iterator it = nonempty_begin(); - it != nonempty_end(); ++it ) { - if ( !fread(reinterpret_cast(&(*it)), sizeof(*it), 1, fp) ) - return false; - } - return true; - } - - // Comparisons. Note the comparisons are pretty arbitrary: we - // compare values of the first index that isn't equal (using default - // value for empty buckets). - bool operator==(const sparsegroup& x) const { - return ( num_buckets == x.num_buckets && - memcmp(bitmap, x.bitmap, sizeof(bitmap)) == 0 && - STL_NAMESPACE::equal(begin(), end(), x.begin()) ); // from algorithm - } - bool operator<(const sparsegroup& x) const { // also from algorithm - return STL_NAMESPACE::lexicographical_compare(begin(), end(), - x.begin(), x.end()); - } - bool operator!=(const sparsegroup& x) const { return !(*this == x); } - bool operator<=(const sparsegroup& x) const { return !(x < *this); } - bool operator>(const sparsegroup& x) const { return x < *this; } - bool operator>=(const sparsegroup& x) const { return !(*this < x); } - - private: - // The actual data - value_type *group; // (small) array of T's - unsigned char bitmap[(GROUP_SIZE-1)/8 + 1]; // fancy math is so we round up - size_type num_buckets; // limits GROUP_SIZE to 64K -}; - -// We need a global swap as well -template -inline void swap(sparsegroup &x, sparsegroup &y) { - x.swap(y); -} - -// --------------------------------------------------------------------------- - - -template -class sparsetable { - public: - // Basic types - typedef T value_type; // stolen from stl_vector.h - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef table_iterator > iterator; - typedef const_table_iterator > const_iterator; - typedef table_element_adaptor > element_adaptor; - typedef value_type &reference; - typedef const value_type &const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef STL_NAMESPACE::reverse_iterator const_reverse_iterator; - typedef STL_NAMESPACE::reverse_iterator reverse_iterator; - - // These are our special iterators, that go over non-empty buckets in a - // table. These aren't const only because you can change non-empty bcks. - typedef two_d_iterator< vector< sparsegroup > > - nonempty_iterator; - typedef const_two_d_iterator< vector< sparsegroup > > - const_nonempty_iterator; - typedef STL_NAMESPACE::reverse_iterator reverse_nonempty_iterator; - typedef STL_NAMESPACE::reverse_iterator const_reverse_nonempty_iterator; - // Another special iterator: it frees memory as it iterates (used to resize) - typedef destructive_two_d_iterator< vector< sparsegroup > > - destructive_iterator; - - // Iterator functions - iterator begin() { return iterator(this, 0); } - const_iterator begin() const { return const_iterator(this, 0); } - iterator end() { return iterator(this, size()); } - const_iterator end() const { return const_iterator(this, size()); } - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - // Versions for our special non-empty iterator - nonempty_iterator nonempty_begin() { - return nonempty_iterator(groups.begin(), groups.end(), groups.begin()); - } - const_nonempty_iterator nonempty_begin() const { - return const_nonempty_iterator(groups.begin(),groups.end(), groups.begin()); - } - nonempty_iterator nonempty_end() { - return nonempty_iterator(groups.begin(), groups.end(), groups.end()); - } - const_nonempty_iterator nonempty_end() const { - return const_nonempty_iterator(groups.begin(), groups.end(), groups.end()); - } - reverse_nonempty_iterator nonempty_rbegin() { - return reverse_nonempty_iterator(nonempty_end()); - } - const_reverse_nonempty_iterator nonempty_rbegin() const { - return const_reverse_nonempty_iterator(nonempty_end()); - } - reverse_nonempty_iterator nonempty_rend() { - return reverse_nonempty_iterator(nonempty_begin()); - } - const_reverse_nonempty_iterator nonempty_rend() const { - return const_reverse_nonempty_iterator(nonempty_begin()); - } - destructive_iterator destructive_begin() { - return destructive_iterator(groups.begin(), groups.end(), groups.begin()); - } - destructive_iterator destructive_end() { - return destructive_iterator(groups.begin(), groups.end(), groups.end()); - } - - private: - typedef typename vector< sparsegroup >::reference - GroupsReference; - typedef typename - vector< sparsegroup >::const_reference - GroupsConstReference; - typedef typename vector< sparsegroup >::iterator - GroupsIterator; - typedef typename vector< sparsegroup >::const_iterator - GroupsConstIterator; - - // How to deal with the proper group - static size_type num_groups(size_type num) { // how many to hold num buckets - return num == 0 ? 0 : ((num-1) / GROUP_SIZE) + 1; - } - - u_int16_t pos_in_group(size_type i) const { - return static_cast(i % GROUP_SIZE); - } - size_type group_num(size_type i) const { - return i / GROUP_SIZE; - } - GroupsReference which_group(size_type i) { - return groups[group_num(i)]; - } - GroupsConstReference which_group(size_type i) const { - return groups[group_num(i)]; - } - - public: - // Constructors -- default, normal (when you specify size), and copy - sparsetable(size_type sz = 0) - : groups(num_groups(sz)), table_size(sz), num_buckets(0) { } - // We'll can get away with using the default copy constructor, - // and default destructor, and hence the default operator=. Huzzah! - - // Many STL algorithms use swap instead of copy constructors - void swap(sparsetable& x) { - STL_NAMESPACE::swap(groups, x.groups); - STL_NAMESPACE::swap(table_size, x.table_size); - STL_NAMESPACE::swap(num_buckets, x.num_buckets); - } - - // It's always nice to be able to clear a table without deallocating it - void clear() { - GroupsIterator group; - for ( group = groups.begin(); group != groups.end(); ++group ) { - group->clear(); - } - num_buckets = 0; - } - - // Functions that tell you about size. - // NOTE: empty() is non-intuitive! It does not tell you the number - // of not-empty buckets (use num_nonempty() for that). Instead - // it says whether you've allocated any buckets or not. - size_type size() const { return table_size; } - size_type max_size() const { return size_type(-1); } - bool empty() const { return table_size == 0; } - // We also may want to know how many *used* buckets there are - size_type num_nonempty() const { return num_buckets; } - - // OK, we'll let you resize one of these puppies - void resize(size_type new_size) { - groups.resize(num_groups(new_size)); - if ( new_size < table_size) { // lower num_buckets, clear last group - if ( pos_in_group(new_size) > 0 ) // need to clear inside last group - groups.back().erase(groups.back().begin() + pos_in_group(new_size), - groups.back().end()); - num_buckets = 0; // refigure # of used buckets - GroupsConstIterator group; - for ( group = groups.begin(); group != groups.end(); ++group ) - num_buckets += group->num_nonempty(); - } - table_size = new_size; - } - - - // We let you see if a bucket is non-empty without retrieving it - bool test(size_type i) const { - return which_group(i).test(pos_in_group(i)); - } - bool test(iterator pos) const { - return which_group(pos.pos).test(pos_in_group(pos.pos)); - } - bool test(const_iterator pos) const { - return which_group(pos.pos).test(pos_in_group(pos.pos)); - } - - // We only return const_references because it's really hard to - // return something settable for empty buckets. Use set() instead. - const_reference get(size_type i) const { - assert(i < table_size); - return which_group(i).get(pos_in_group(i)); - } - - // TODO(csilvers): make protected + friend - // This is used by sparse_hashtable to get an element from the table - // when we know it exists (because the caller has called test(i)). - const_reference unsafe_get(size_type i) const { - assert(i < table_size); - assert(test(i)); - return which_group(i).unsafe_get(pos_in_group(i)); - } - - // TODO(csilvers): make protected + friend element_adaptor - reference mutating_get(size_type i) { // fills bucket i before getting - assert(i < table_size); - size_type old_numbuckets = which_group(i).num_nonempty(); - reference retval = which_group(i).mutating_get(pos_in_group(i)); - num_buckets += which_group(i).num_nonempty() - old_numbuckets; - return retval; - } - - // Syntactic sugar. As in sparsegroup, the non-const version is harder - const_reference operator[](size_type i) const { - return get(i); - } - - element_adaptor operator[](size_type i) { - return element_adaptor(this, i); - } - - // Needed for hashtables, gets as a nonempty_iterator. Crashes for empty bcks - const_nonempty_iterator get_iter(size_type i) const { - assert(test(i)); // how can a nonempty_iterator point to an empty bucket? - return const_nonempty_iterator( - groups.begin(), groups.end(), - groups.begin() + group_num(i), - (groups[group_num(i)].nonempty_begin() + - groups[group_num(i)].pos_to_offset(pos_in_group(i)))); - } - // For nonempty we can return a non-const version - nonempty_iterator get_iter(size_type i) { - assert(test(i)); // how can a nonempty_iterator point to an empty bucket? - return nonempty_iterator( - groups.begin(), groups.end(), - groups.begin() + group_num(i), - (groups[group_num(i)].nonempty_begin() + - groups[group_num(i)].pos_to_offset(pos_in_group(i)))); - } - - - // This returns a reference to the inserted item (which is a copy of val) - // The trick is to figure out whether we're replacing or inserting anew - reference set(size_type i, const_reference val) { - assert(i < table_size); - size_type old_numbuckets = which_group(i).num_nonempty(); - reference retval = which_group(i).set(pos_in_group(i), val); - num_buckets += which_group(i).num_nonempty() - old_numbuckets; - return retval; - } - - // This takes the specified elements out of the table. This is - // "undefining", rather than "clearing". - void erase(size_type i) { - assert(i < table_size); - size_type old_numbuckets = which_group(i).num_nonempty(); - which_group(i).erase(pos_in_group(i)); - num_buckets += which_group(i).num_nonempty() - old_numbuckets; - } - - void erase(iterator pos) { - erase(pos.pos); - } - - void erase(iterator start_it, iterator end_it) { - // This could be more efficient, but then we'd need to figure - // out if we spanned groups or not. Doesn't seem worth it. - for ( ; start_it != end_it; ++start_it ) - erase(start_it); - } - - - // We support reading and writing tables to disk. We don't store - // the actual array contents (which we don't know how to store), - // just the groups and sizes. Returns true if all went ok. - - private: - // Every time the disk format changes, this should probably change too - static const unsigned long MAGIC_NUMBER = 0x24687531; - - // Old versions of this code write all data in 32 bits. We need to - // support these files as well as having support for 64-bit systems. - // So we use the following encoding scheme: for values < 2^32-1, we - // store in 4 bytes in big-endian order. For values > 2^32, we - // store 0xFFFFFFF followed by 8 bytes in big-endian order. This - // causes us to mis-read old-version code that stores exactly - // 0xFFFFFFF, but I don't think that is likely to have happened for - // these particular values. - static bool write_32_or_64(FILE* fp, size_type value) { - if ( value < 0xFFFFFFFFULL ) { // fits in 4 bytes - PUT_(value, 24); - PUT_(value, 16); - PUT_(value, 8); - PUT_(value, 0); - } else if ( value == 0xFFFFFFFFUL ) { // special case in 32bit systems - PUT_(0xFF, 0); PUT_(0xFF, 0); PUT_(0xFF, 0); PUT_(0xFF, 0); // marker - PUT_(0, 0); PUT_(0, 0); PUT_(0, 0); PUT_(0, 0); - PUT_(0xFF, 0); PUT_(0xFF, 0); PUT_(0xFF, 0); PUT_(0xFF, 0); - } else { - PUT_(0xFF, 0); PUT_(0xFF, 0); PUT_(0xFF, 0); PUT_(0xFF, 0); // marker - PUT_(value, 56); - PUT_(value, 48); - PUT_(value, 40); - PUT_(value, 32); - PUT_(value, 24); - PUT_(value, 16); - PUT_(value, 8); - PUT_(value, 0); - } - return true; - } - - static bool read_32_or_64(FILE* fp, size_type *value) { // reads into value - size_type first4 = 0; - int x; - GET_(first4, 24); - GET_(first4, 16); - GET_(first4, 8); - GET_(first4, 0); - if ( first4 < 0xFFFFFFFFULL ) { - *value = first4; - } else { - GET_(*value, 56); - GET_(*value, 48); - GET_(*value, 40); - GET_(*value, 32); - GET_(*value, 24); - GET_(*value, 16); - GET_(*value, 8); - GET_(*value, 0); - } - return true; - } - - public: - bool write_metadata(FILE *fp) const { - if ( !write_32_or_64(fp, MAGIC_NUMBER) ) return false; - if ( !write_32_or_64(fp, table_size) ) return false; - if ( !write_32_or_64(fp, num_buckets) ) return false; - - GroupsConstIterator group; - for ( group = groups.begin(); group != groups.end(); ++group ) - if ( group->write_metadata(fp) == false ) return false; - return true; - } - - // Reading destroys the old table contents! Returns true if read ok. - bool read_metadata(FILE *fp) { - size_type magic_read = 0; - if ( !read_32_or_64(fp, &magic_read) ) return false; - if ( magic_read != MAGIC_NUMBER ) { - clear(); // just to be consistent - return false; - } - - if ( !read_32_or_64(fp, &table_size) ) return false; - if ( !read_32_or_64(fp, &num_buckets) ) return false; - - resize(table_size); // so the vector's sized ok - GroupsIterator group; - for ( group = groups.begin(); group != groups.end(); ++group ) - if ( group->read_metadata(fp) == false ) return false; - return true; - } - - // This code is identical to that for SparseGroup - // If your keys and values are simple enough, we can write them - // to disk for you. "simple enough" means no pointers. - // However, we don't try to normalize endianness - bool write_nopointer_data(FILE *fp) const { - for ( const_nonempty_iterator it = nonempty_begin(); - it != nonempty_end(); ++it ) { - if ( !fwrite(&*it, sizeof(*it), 1, fp) ) return false; - } - return true; - } - - // When reading, we have to override the potential const-ness of *it - bool read_nopointer_data(FILE *fp) { - for ( nonempty_iterator it = nonempty_begin(); - it != nonempty_end(); ++it ) { - if ( !fread(reinterpret_cast(&(*it)), sizeof(*it), 1, fp) ) - return false; - } - return true; - } - - // Comparisons. Note the comparisons are pretty arbitrary: we - // compare values of the first index that isn't equal (using default - // value for empty buckets). - bool operator==(const sparsetable& x) const { - return ( table_size == x.table_size && - num_buckets == x.num_buckets && - groups == x.groups ); - } - bool operator<(const sparsetable& x) const { // also from algobase.h - return STL_NAMESPACE::lexicographical_compare(begin(), end(), - x.begin(), x.end()); - } - bool operator!=(const sparsetable& x) const { return !(*this == x); } - bool operator<=(const sparsetable& x) const { return !(x < *this); } - bool operator>(const sparsetable& x) const { return x < *this; } - bool operator>=(const sparsetable& x) const { return !(*this < x); } - - - private: - // The actual data - vector< sparsegroup > groups; // our list of groups - size_type table_size; // how many buckets they want - size_type num_buckets; // number of non-empty buckets -}; - -// We need a global swap as well -template -inline void swap(sparsetable &x, sparsetable &y) { - x.swap(y); -} - -#undef GET_ -#undef PUT_ - -_END_GOOGLE_NAMESPACE_ - -#endif diff --git a/src/sparsehash-1.6/src/google/type_traits.h b/src/sparsehash-1.6/src/google/type_traits.h deleted file mode 100644 index 5f88133..0000000 --- a/src/sparsehash-1.6/src/google/type_traits.h +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// ---- -// Author: Matt Austern -// -// Define a small subset of tr1 type traits. The traits we define are: -// is_integral -// is_floating_point -// is_pointer -// is_reference -// is_pod -// has_trivial_constructor -// has_trivial_copy -// has_trivial_assign -// has_trivial_destructor -// remove_const -// remove_volatile -// remove_cv -// remove_reference -// remove_pointer -// is_convertible -// We can add more type traits as required. - -#ifndef BASE_TYPE_TRAITS_H_ -#define BASE_TYPE_TRAITS_H_ - -#include -#include // For pair - -_START_GOOGLE_NAMESPACE_ - -// integral_constant, defined in tr1, is a wrapper for an integer -// value. We don't really need this generality; we could get away -// with hardcoding the integer type to bool. We use the fully -// general integer_constant for compatibility with tr1. - -template -struct integral_constant { - static const T value = v; - typedef T value_type; - typedef integral_constant type; -}; - -template const T integral_constant::value; - -// Abbreviations: true_type and false_type are structs that represent -// boolean true and false values. -typedef integral_constant true_type; -typedef integral_constant false_type; - -// Types small_ and big_ are guaranteed such that sizeof(small_) < -// sizeof(big_) -typedef char small_; - -struct big_ { - char dummy[2]; -}; - -// is_integral is false except for the built-in integer types. -template struct is_integral : false_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -#if defined(_MSC_VER) -// wchar_t is not by default a distinct type from unsigned short in -// Microsoft C. -// See http://msdn2.microsoft.com/en-us/library/dh8che7s(VS.80).aspx -template<> struct is_integral<__wchar_t> : true_type { }; -#else -template<> struct is_integral : true_type { }; -#endif -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -#ifdef HAVE_LONG_LONG -template<> struct is_integral : true_type { }; -template<> struct is_integral : true_type { }; -#endif - - -// is_floating_point is false except for the built-in floating-point types. -template struct is_floating_point : false_type { }; -template<> struct is_floating_point : true_type { }; -template<> struct is_floating_point : true_type { }; -template<> struct is_floating_point : true_type { }; - - -// is_pointer is false except for pointer types. -template struct is_pointer : false_type { }; -template struct is_pointer : true_type { }; - - -// is_reference is false except for reference types. -template struct is_reference : false_type {}; -template struct is_reference : true_type {}; - - -// We can't get is_pod right without compiler help, so fail conservatively. -// We will assume it's false except for arithmetic types and pointers, -// and const versions thereof. Note that std::pair is not a POD. -template struct is_pod - : integral_constant::value || - is_floating_point::value || - is_pointer::value)> { }; -template struct is_pod : is_pod { }; - - -// We can't get has_trivial_constructor right without compiler help, so -// fail conservatively. We will assume it's false except for: (1) types -// for which is_pod is true. (2) std::pair of types with trivial -// constructors. (3) array of a type with a trivial constructor. -// (4) const versions thereof. -template struct has_trivial_constructor : is_pod { }; -template struct has_trivial_constructor > - : integral_constant::value && - has_trivial_constructor::value)> { }; -template struct has_trivial_constructor - : has_trivial_constructor { }; -template struct has_trivial_constructor - : has_trivial_constructor { }; - -// We can't get has_trivial_copy right without compiler help, so fail -// conservatively. We will assume it's false except for: (1) types -// for which is_pod is true. (2) std::pair of types with trivial copy -// constructors. (3) array of a type with a trivial copy constructor. -// (4) const versions thereof. -template struct has_trivial_copy : is_pod { }; -template struct has_trivial_copy > - : integral_constant::value && - has_trivial_copy::value)> { }; -template struct has_trivial_copy - : has_trivial_copy { }; -template struct has_trivial_copy : has_trivial_copy { }; - -// We can't get has_trivial_assign right without compiler help, so fail -// conservatively. We will assume it's false except for: (1) types -// for which is_pod is true. (2) std::pair of types with trivial copy -// constructors. (3) array of a type with a trivial assign constructor. -template struct has_trivial_assign : is_pod { }; -template struct has_trivial_assign > - : integral_constant::value && - has_trivial_assign::value)> { }; -template struct has_trivial_assign - : has_trivial_assign { }; - -// We can't get has_trivial_destructor right without compiler help, so -// fail conservatively. We will assume it's false except for: (1) types -// for which is_pod is true. (2) std::pair of types with trivial -// destructors. (3) array of a type with a trivial destructor. -// (4) const versions thereof. -template struct has_trivial_destructor : is_pod { }; -template struct has_trivial_destructor > - : integral_constant::value && - has_trivial_destructor::value)> { }; -template struct has_trivial_destructor - : has_trivial_destructor { }; -template struct has_trivial_destructor - : has_trivial_destructor { }; - -// Specified by TR1 [4.7.1] -template struct remove_const { typedef T type; }; -template struct remove_const { typedef T type; }; -template struct remove_volatile { typedef T type; }; -template struct remove_volatile { typedef T type; }; -template struct remove_cv { - typedef typename remove_const::type>::type type; -}; - - -// Specified by TR1 [4.7.2] -template struct remove_reference { typedef T type; }; -template struct remove_reference { typedef T type; }; - -// Specified by TR1 [4.7.4] Pointer modifications. -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { typedef T type; }; -template struct remove_pointer { - typedef T type; }; - -// Specified by TR1 [4.6] Relationships between types -#ifndef _MSC_VER -namespace internal { - -// This class is an implementation detail for is_convertible, and you -// don't need to know how it works to use is_convertible. For those -// who care: we declare two different functions, one whose argument is -// of type To and one with a variadic argument list. We give them -// return types of different size, so we can use sizeof to trick the -// compiler into telling us which function it would have chosen if we -// had called it with an argument of type From. See Alexandrescu's -// _Modern C++ Design_ for more details on this sort of trick. - -template -struct ConvertHelper { - static small_ Test(To); - static big_ Test(...); - static From Create(); -}; -} // namespace internal - -// Inherits from true_type if From is convertible to To, false_type otherwise. -template -struct is_convertible - : integral_constant::Test( - internal::ConvertHelper::Create())) - == sizeof(small_)> { -}; -#endif - -_END_GOOGLE_NAMESPACE_ - -#endif // BASE_TYPE_TRAITS_H_ diff --git a/src/sparsehash-1.6/src/hashtable_unittest.cc b/src/sparsehash-1.6/src/hashtable_unittest.cc deleted file mode 100644 index 3dcbfee..0000000 --- a/src/sparsehash-1.6/src/hashtable_unittest.cc +++ /dev/null @@ -1,1531 +0,0 @@ -// Copyright (c) 2005, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// --- -// Author: Craig Silverstein -// -// This tests -// This tests -// This tests -// This tests -// This tests -// This tests - -// Since {dense,sparse}hashtable is templatized, it's important that -// we test every function in every class in this file -- not just to -// see if it works, but even if it compiles. - -#include "config.h" -#include -#include // for stat() -#ifdef HAVE_UNISTD_H -#include // for unlink() -#endif -#include -#include // for silly random-number-seed generator -#include // for sqrt() -#include -#include -#include // for insert_iterator -#include -#include // for setprecision() -#include -#include // for std::length_error -#include HASH_FUN_H // defined in config.h -#include -#include -#include -#include -#include -#include -#include - -// Otherwise, VC++7 warns about size_t -> int in the cout logging lines -#ifdef _MSC_VER -#pragma warning(disable:4267) -#endif - -using GOOGLE_NAMESPACE::sparse_hash_map; -using GOOGLE_NAMESPACE::dense_hash_map; -using GOOGLE_NAMESPACE::sparse_hash_set; -using GOOGLE_NAMESPACE::dense_hash_set; -using GOOGLE_NAMESPACE::sparse_hashtable; -using GOOGLE_NAMESPACE::dense_hashtable; -using STL_NAMESPACE::map; -using STL_NAMESPACE::set; -using STL_NAMESPACE::pair; -using STL_NAMESPACE::make_pair; -using STL_NAMESPACE::string; -using STL_NAMESPACE::insert_iterator; -using STL_NAMESPACE::allocator; -using STL_NAMESPACE::equal_to; -using STL_NAMESPACE::ostream; - -#define LOGF STL_NAMESPACE::cout // where we log to; LOGF is a historical name - -#define CHECK(cond) do { \ - if (!(cond)) { \ - LOGF << "Test failed: " #cond "\n"; \ - exit(1); \ - } \ -} while (0) - -#define CHECK_EQ(a, b) CHECK((a) == (b)) -#define CHECK_LT(a, b) CHECK((a) < (b)) -#define CHECK_GE(a, b) CHECK((a) >= (b)) - -#ifndef _MSC_VER // windows defines its own version -static string TmpFile(const char* basename) { - return string("/tmp/") + basename; -} -#endif - -const char *words[] = {"Baffin\n", // in /usr/dict/words - "Boffin\n", // not in - "baffin\n", // not in - "genial\n", // last word in - "Aarhus\n", // first word alphabetically - "Zurich\n", // last word alphabetically - "Getty\n", -}; - -const char *nwords[] = {"Boffin\n", - "baffin\n", -}; - -const char *default_dict[] = {"Aarhus\n", - "aback\n", - "abandon\n", - "Baffin\n", - "baffle\n", - "bagged\n", - "congenial\n", - "genial\n", - "Getty\n", - "indiscreet\n", - "linens\n", - "pence\n", - "reassure\n", - "sequel\n", - "zoning\n", - "zoo\n", - "Zurich\n", -}; - -// Likewise, it's not standard to hash a string pre-tr1. Luckily, it is a char* -#ifdef HAVE_UNORDERED_MAP -typedef SPARSEHASH_HASH StrHash; -struct CharStarHash { - size_t operator()(const char* s) const { - return StrHash()(string(s)); - } - // These are used by MSVC: - bool operator()(const char* a, const char* b) const { - return strcmp(a, b) < 0; - } - static const size_t bucket_size = 4; // These are required by MSVC - static const size_t min_buckets = 8; // 4 and 8 are the defaults -}; -#else -typedef SPARSEHASH_HASH CharStarHash; -struct StrHash { - size_t operator()(const string& s) const { - return SPARSEHASH_HASH()(s.c_str()); - } - // These are used by MSVC: - bool operator()(const string& a, const string& b) const { - return a < b; - } - static const size_t bucket_size = 4; // These are required by MSVC - static const size_t min_buckets = 8; // 4 and 8 are the defaults -}; -#endif - -// Let us log the pairs that make up a hash_map -template -ostream& operator<<(ostream& s, const pair& p) { - s << "pair(" << p.first << ", " << p.second << ")"; - return s; -} - -struct strcmp_fnc { - bool operator()(const char* s1, const char* s2) const { - return ((s1 == 0 && s2 == 0) || - (s1 && s2 && *s1 == *s2 && strcmp(s1, s2) == 0)); - } -}; - -namespace { - -template -void set_empty_key(sparse_hashtable *ht, T val) { -} - -template -void set_empty_key(sparse_hash_set *ht, T val) { -} - -template -void set_empty_key(sparse_hash_map *ht, K val) { -} - -template -void set_empty_key(dense_hashtable *ht, T val) { - ht->set_empty_key(val); -} - -template -void set_empty_key(dense_hash_set *ht, T val) { - ht->set_empty_key(val); -} - -template -void set_empty_key(dense_hash_map *ht, K val) { - ht->set_empty_key(val); -} - -template -bool clear_no_resize(sparse_hashtable *ht) { - return false; -} - -template -bool clear_no_resize(sparse_hash_set *ht) { - return false; -} - -template -bool clear_no_resize(sparse_hash_map *ht) { - return false; -} - -template -bool clear_no_resize(dense_hashtable *ht) { - ht->clear_no_resize(); - return true; -} - -template -bool clear_no_resize(dense_hash_set *ht) { - ht->clear_no_resize(); - return true; -} - -template -bool clear_no_resize(dense_hash_map *ht) { - ht->clear_no_resize(); - return true; -} - -template -void insert(dense_hashtable *ht, T val) { - ht->insert(val); -} - -template -void insert(dense_hash_set *ht, T val) { - ht->insert(val); -} - -template -void insert(dense_hash_map *ht, K val) { - ht->insert(pair(val,V())); -} - -template -void insert(sparse_hashtable *ht, T val) { - ht->insert(val); -} - -template -void insert(sparse_hash_set *ht, T val) { - ht->insert(val); -} - -template -void insert(sparse_hash_map *ht, K val) { - ht->insert(pair(val,V())); -} - -template -void insert(HT *ht, Iterator begin, Iterator end) { - ht->insert(begin, end); -} - -// For hashtable's and hash_set's, the iterator insert works fine (and -// is used). But for the hash_map's, the iterator insert expects the -// iterators to point to pair's. So by looping over and calling insert -// on each element individually, the code below automatically expands -// into inserting a pair. -template -void insert(dense_hash_map *ht, Iterator begin, Iterator end) { - while (begin != end) { - insert(ht, *begin); - ++begin; - } -} - -template -void insert(sparse_hash_map *ht, Iterator begin, Iterator end) { - while (begin != end) { - insert(ht, *begin); - ++begin; - } -} - -// A version of insert that uses the insert_iterator. But insert_iterator -// isn't defined for the low level hashtable classes, so we just punt to insert. - -template -void iterator_insert(dense_hashtable* ht, T val, - insert_iterator >* ) { - ht->insert(val); -} - -template -void iterator_insert(dense_hash_set* , T val, - insert_iterator >* ii) { - *(*ii)++ = val; -} - -template -void iterator_insert(dense_hash_map* , K val, - insert_iterator >* ii) { - *(*ii)++ = pair(val,V()); -} - -template -void iterator_insert(sparse_hashtable* ht, T val, - insert_iterator >* ) { - ht->insert(val); -} - -template -void iterator_insert(sparse_hash_set* , T val, - insert_iterator >* ii) { - *(*ii)++ = val; -} - -template -void iterator_insert(sparse_hash_map *, K val, - insert_iterator >* ii) { - *(*ii)++ = pair(val,V()); -} - - -void write_item(FILE *fp, const char *val) { - fwrite(val, strlen(val), 1, fp); // \n serves to separate -} - -// The weird 'const' declarations are desired by the compiler. Yucko. -void write_item(FILE *fp, const pair &val) { - fwrite(val.first, strlen(val.first), 1, fp); -} - -void write_item(FILE *fp, const string &val) { - fwrite(val.data(), val.length(), 1, fp); // \n serves to separate -} - -// The weird 'const' declarations are desired by the compiler. Yucko. -void write_item(FILE *fp, const pair &val) { - fwrite(val.first.data(), val.first.length(), 1, fp); -} - -char* read_line(FILE* fp, char* line, int linesize) { - if ( fgets(line, linesize, fp) == NULL ) - return NULL; - // normalize windows files :-( - const size_t linelen = strlen(line); - if ( linelen >= 2 && line[linelen-2] == '\r' && line[linelen-1] == '\n' ) { - line[linelen-2] = '\n'; - line[linelen-1] = '\0'; - } - return line; -} - -void read_item(FILE *fp, char*const* val) { - char line[1024]; - read_line(fp, line, sizeof(line)); - char **p = const_cast(val); - *p = strdup(line); -} - -void read_item(FILE *fp, pair *val) { - char line[1024]; - read_line(fp, line, sizeof(line)); - char **p = const_cast(&val->first); - *p = strdup(line); -} - -void read_item(FILE *fp, const string* val) { - char line[1024]; - read_line(fp, line, sizeof(line)); - new(const_cast(val)) string(line); // need to use placement new -} - -void read_item(FILE *fp, pair *val) { - char line[1024]; - read_line(fp, line, sizeof(line)); - new(const_cast(&val->first)) string(line); -} - -void free_item(char*const* val) { - free(*val); -} - -void free_item(pair *val) { - free(val->first); -} - -int get_int_item(int int_item) { - return int_item; -} - -int get_int_item(pair val) { - return val.first; -} - -int getintkey(int i) { return i; } - -int getintkey(const pair &p) { return p.first; } - -} // end anonymous namespace - -// Performs tests where the hashtable's value type is assumed to be int. -template -void test_int() { - htint x; - htint y(1000); - htint z(64); - set_empty_key(&x, 0xefefef); - set_empty_key(&y, 0xefefef); - set_empty_key(&z, 0xefefef); - - CHECK(y.empty()); - insert(&y, 1); - CHECK(!y.empty()); - insert(&y, 11); - insert(&y, 111); - insert(&y, 1111); - insert(&y, 11111); - insert(&y, 111111); - insert(&y, 1111111); // 1M, more or less - insert(&y, 11111111); - insert(&y, 111111111); - insert(&y, 1111111111); // 1B, more or less - for ( int i = 0; i < 64; ++i ) - insert(&z, i); - // test the second half of the insert with an insert_iterator - insert_iterator insert_iter(z, z.begin()); - for ( int i = 32; i < 64; ++i ) - iterator_insert(&z, i, &insert_iter); - - // only perform the following CHECKs for - // dense{hashtable, _hash_set, _hash_map} - if (clear_no_resize(&x)) { - // make sure x has to increase its number of buckets - typename htint::size_type empty_bucket_count = x.bucket_count(); - int last_element = 0; - while (x.bucket_count() == empty_bucket_count) { - insert(&x, last_element); - ++last_element; - } - // if clear_no_resize is supported (i.e. htint is a - // dense{hashtable,_hash_set,_hash_map}), it should leave the bucket_count - // as is. - typename htint::size_type last_bucket_count = x.bucket_count(); - clear_no_resize(&x); - CHECK(last_bucket_count == x.bucket_count()); - CHECK(x.empty()); - LOGF << "x has " << x.bucket_count() << " buckets\n"; - LOGF << "x size " << x.size() << "\n"; - // when inserting the same number of elements again, no resize should be - // necessary - for (int i = 0; i < last_element; ++i) { - insert(&x, i); - CHECK(x.bucket_count() == last_bucket_count); - } - } - - for ( typename htint::const_iterator it = y.begin(); it != y.end(); ++it ) - LOGF << "y: " << get_int_item(*it) << "\n"; - z.insert(y.begin(), y.end()); - swap(y,z); - for ( typename htint::iterator it = y.begin(); it != y.end(); ++it ) - LOGF << "y+z: " << get_int_item(*it) << "\n"; - LOGF << "z has " << z.bucket_count() << " buckets\n"; - LOGF << "y has " << y.bucket_count() << " buckets\n"; - LOGF << "z size: " << z.size() << "\n"; - - for (int i = 0; i < 64; ++i) - CHECK(y.find(i) != y.end()); - - CHECK(z.size() == 10); - z.set_deleted_key(1010101010); // an unused value - CHECK(z.deleted_key() == 1010101010); - z.erase(11111); - CHECK(z.size() == 9); - insert(&z, 11111); // should retake deleted value - CHECK(z.size() == 10); - // Do the delete/insert again. Last time we probably resized; this time no - z.erase(11111); - insert(&z, 11111); // should retake deleted value - CHECK(z.size() == 10); - - z.erase(-11111); // shouldn't do anything - CHECK(z.size() == 10); - z.erase(1); - CHECK(z.size() == 9); - - typename htint::iterator itdel = z.find(1111); - pair itdel2 - = z.equal_range(1111); - CHECK(itdel2.first != z.end()); - CHECK(&*itdel2.first == &*itdel); // while we're here, check equal_range() - CHECK(itdel2.second == ++itdel2.first); - pair itdel3 - = const_cast(&z)->equal_range(1111); - CHECK(itdel3.first != z.end()); - CHECK(&*itdel3.first == &*itdel); - CHECK(itdel3.second == ++itdel3.first); - - z.erase(itdel); - CHECK(z.size() == 8); - itdel2 = z.equal_range(1111); - CHECK(itdel2.first == z.end()); - CHECK(itdel2.second == itdel2.first); - itdel3 = const_cast(&z)->equal_range(1111); - CHECK(itdel3.first == z.end()); - CHECK(itdel3.second == itdel3.first); - - itdel = z.find(2222); // should be end() - z.erase(itdel); // shouldn't do anything - CHECK(z.size() == 8); - for ( typename htint::const_iterator it = z.begin(); it != z.end(); ++it ) - LOGF << "y: " << get_int_item(*it) << "\n"; - z.set_deleted_key(1010101011); // a different unused value - CHECK(z.deleted_key() == 1010101011); - for ( typename htint::const_iterator it = z.begin(); it != z.end(); ++it ) - LOGF << "y: " << get_int_item(*it) << "\n"; - LOGF << "That's " << z.size() << " elements\n"; - z.erase(z.begin(), z.end()); - CHECK(z.empty()); - - y.clear(); - CHECK(y.empty()); - LOGF << "y has " << y.bucket_count() << " buckets\n"; -} - -// Performs tests where the hashtable's value type is assumed to be char*. -// The read_write parameters specifies whether the read/write tests -// should be performed. Note that densehashtable::write_metdata is not -// implemented, so we only do the read/write tests for the -// sparsehashtable varieties. -template -void test_charptr(bool read_write) { - ht w; - set_empty_key(&w, (char*) NULL); - insert(&w, const_cast(nwords), - const_cast(nwords) + sizeof(nwords) / sizeof(*nwords)); - LOGF << "w has " << w.size() << " items\n"; - CHECK(w.size() == 2); - CHECK(w == w); - - ht x; - set_empty_key(&x, (char*) NULL); - long dict_size = 1; // for size stats -- can't be 0 'cause of division - - map counts; - // Hash the dictionary - { - // automake says 'look for all data files in $srcdir.' OK. - string filestr = (string(getenv("srcdir") ? getenv("srcdir") : ".") + - "/src/words"); - const char* file = filestr.c_str(); - FILE *fp = fopen(file, "rb"); - if ( fp == NULL ) { - LOGF << "Can't open " << file << ", using small, built-in dict...\n"; - for (int i = 0; i < sizeof(default_dict)/sizeof(*default_dict); ++i) { - insert(&x, strdup(default_dict[i])); - counts[default_dict[i]] = 0; - } - } else { - char line[1024]; - while ( read_line(fp, line, sizeof(line)) ) { - insert(&x, strdup(line)); - counts[line] = 0; - } - LOGF << "Read " << x.size() << " words from " << file << "\n"; - fclose(fp); - struct stat buf; - stat(file, &buf); - dict_size = buf.st_size; - LOGF << "Size of " << file << ": " << buf.st_size << " bytes\n"; - } - for (char **word = const_cast(words); - word < const_cast(words) + sizeof(words) / sizeof(*words); - ++word ) { - if (x.find(*word) == x.end()) { - CHECK(w.find(*word) != w.end()); - } else { - CHECK(w.find(*word) == w.end()); - } - } - } - CHECK(counts.size() == x.size()); - - // Save the hashtable. - if (read_write) { - const string file_string = TmpFile(".hashtable_unittest_dicthash"); - const char* file = file_string.c_str(); - FILE *fp = fopen(file, "wb"); - if ( fp == NULL ) { - // maybe we can't write to /tmp/. Try the current directory - file = ".hashtable_unittest_dicthash"; - fp = fopen(file, "wb"); - } - if ( fp == NULL ) { - LOGF << "Can't open " << file << " skipping hashtable save...\n"; - } else { - x.write_metadata(fp); // this only writes meta-information - int write_count = 0; - for ( typename ht::iterator it = x.begin(); it != x.end(); ++it ) { - write_item(fp, *it); - free_item(&(*it)); - ++write_count; - } - LOGF << "Wrote " << write_count << " words to " << file << "\n"; - fclose(fp); - struct stat buf; - stat(file, &buf); - LOGF << "Size of " << file << ": " << buf.st_size << " bytes\n"; - LOGF << STL_NAMESPACE::setprecision(3) - << "Hashtable overhead " - << (buf.st_size - dict_size) * 100.0 / dict_size - << "% (" - << (buf.st_size - dict_size) * 8.0 / write_count - << " bits/entry)\n"; - x.clear(); - - // Load the hashtable - fp = fopen(file, "rb"); - if ( fp == NULL ) { - LOGF << "Can't open " << file << " skipping hashtable reload...\n"; - } else { - x.read_metadata(fp); // reads metainformation - LOGF << "Hashtable size: " << x.size() << "\n"; - int read_count = 0; - for ( typename ht::iterator it = x.begin(); it != x.end(); ++it ) { - read_item(fp, &(*it)); - ++read_count; - } - LOGF << "Read " << read_count << " words from " << file << "\n"; - fclose(fp); - unlink(file); - for ( char **word = const_cast(words); - word < const_cast(words) + sizeof(words) / sizeof(*words); - ++word ) { - if (x.find(*word) == x.end()) { - CHECK(w.find(*word) != w.end()); - } else { - CHECK(w.find(*word) == w.end()); - } - } - } - } - } - for ( typename ht::iterator it = x.begin(); it != x.end(); ++it ) { - free_item(&(*it)); - } -} - -// Perform tests where the hashtable's value type is assumed to -// be string. -// TODO(austern): factor out the bulk of test_charptr and test_string -// into a common function. -template -void test_string(bool read_write) { - ht w; - set_empty_key(&w, string("-*- empty key -*-")); - const int N = sizeof(nwords) / sizeof(*nwords); - string* nwords1 = new string[N]; - for (int i = 0; i < N; ++i) - nwords1[i] = nwords[i]; - insert(&w, nwords1, nwords1 + N); - delete[] nwords1; - LOGF << "w has " << w.size() << " items\n"; - CHECK(w.size() == 2); - CHECK(w == w); - - ht x; - set_empty_key(&x, string("-*- empty key -*-")); - long dict_size = 1; // for size stats -- can't be 0 'cause of division - - map counts; - // Hash the dictionary - { - // automake says 'look for all data files in $srcdir.' OK. - string filestr = (string(getenv("srcdir") ? getenv("srcdir") : ".") + - "/src/words"); - const char* file = filestr.c_str(); - FILE *fp = fopen(file, "rb"); - if ( fp == NULL ) { - LOGF << "Can't open " << file << ", using small, built-in dict...\n"; - for (int i = 0; i < sizeof(default_dict)/sizeof(*default_dict); ++i) { - insert(&x, string(default_dict[i])); - counts[default_dict[i]] = 0; - } - } else { - char line[1024]; - while ( fgets(line, sizeof(line), fp) ) { - insert(&x, string(line)); - counts[line] = 0; - } - LOGF << "Read " << x.size() << " words from " << file << "\n"; - fclose(fp); - struct stat buf; - stat(file, &buf); - dict_size = buf.st_size; - LOGF << "Size of " << file << ": " << buf.st_size << " bytes\n"; - } - for ( const char* const* word = words; - word < words + sizeof(words) / sizeof(*words); - ++word ) { - if (x.find(*word) == x.end()) { - CHECK(w.find(*word) != w.end()); - } else { - CHECK(w.find(*word) == w.end()); - } - } - } - CHECK(counts.size() == x.size()); - { - // verify that size() works correctly - int xcount = 0; - for ( typename ht::iterator it = x.begin(); it != x.end(); ++it ) { - ++xcount; - } - CHECK(x.size() == xcount); - } - - // Save the hashtable. - if (read_write) { - const string file_string = TmpFile(".hashtable_unittest_dicthash_str"); - const char* file = file_string.c_str(); - FILE *fp = fopen(file, "wb"); - if ( fp == NULL ) { - // maybe we can't write to /tmp/. Try the current directory - file = ".hashtable_unittest_dicthash_str"; - fp = fopen(file, "wb"); - } - if ( fp == NULL ) { - LOGF << "Can't open " << file << " skipping hashtable save...\n"; - } else { - x.write_metadata(fp); // this only writes meta-information - int write_count = 0; - for ( typename ht::iterator it = x.begin(); it != x.end(); ++it ) { - write_item(fp, *it); - ++write_count; - } - LOGF << "Wrote " << write_count << " words to " << file << "\n"; - fclose(fp); - struct stat buf; - stat(file, &buf); - LOGF << "Size of " << file << ": " << buf.st_size << " bytes\n"; - LOGF << STL_NAMESPACE::setprecision(3) - << "Hashtable overhead " - << (buf.st_size - dict_size) * 100.0 / dict_size - << "% (" - << (buf.st_size - dict_size) * 8.0 / write_count - << " bits/entry)\n"; - x.clear(); - - // Load the hashtable - fp = fopen(file, "rb"); - if ( fp == NULL ) { - LOGF << "Can't open " << file << " skipping hashtable reload...\n"; - } else { - x.read_metadata(fp); // reads metainformation - LOGF << "Hashtable size: " << x.size() << "\n"; - int count = 0; - for ( typename ht::iterator it = x.begin(); it != x.end(); ++it ) { - read_item(fp, &(*it)); - ++count; - } - LOGF << "Read " << count << " words from " << file << "\n"; - fclose(fp); - unlink(file); - for ( const char* const* word = words; - word < words + sizeof(words) / sizeof(*words); - ++word ) { - if (x.find(*word) == x.end()) { - CHECK(w.find(*word) != w.end()); - } else { - CHECK(w.find(*word) == w.end()); - } - } - } - } - } - - // ensure that destruction is done properly in clear_no_resize() - if (!clear_no_resize(&w)) w.clear(); -} - -// The read_write parameters specifies whether the read/write tests -// should be performed. Note that densehashtable::write_metdata is not -// implemented, so we only do the read/write tests for the -// sparsehashtable varieties. -template -void test(bool read_write) { - test_int(); - test_string(read_write); - test_charptr(read_write); -} - -// For data types with trivial copy-constructors and destructors, we -// should use an optimized routine for data-copying, that involves -// memmove. We test this by keeping count of how many times the -// copy-constructor is called; it should be much less with the -// optimized code. - -class Memmove { - public: - Memmove(): i_(0) {} - explicit Memmove(int i): i_(i) {} - Memmove(const Memmove& that) { - this->i_ = that.i_; - num_copies_++; - } - - int i_; - static int num_copies_; -}; -int Memmove::num_copies_ = 0; - - -// This is what tells the hashtable code it can use memmove for this class: -_START_GOOGLE_NAMESPACE_ -template<> struct has_trivial_copy : true_type { }; -template<> struct has_trivial_destructor : true_type { }; -_END_GOOGLE_NAMESPACE_ - -class NoMemmove { - public: - NoMemmove(): i_(0) {} - explicit NoMemmove(int i): i_(i) {} - NoMemmove(const NoMemmove& that) { - this->i_ = that.i_; - num_copies_++; - } - - int i_; - static int num_copies_; -}; -int NoMemmove::num_copies_ = 0; - -void TestSimpleDataTypeOptimizations() { - { - sparse_hash_map memmove; - sparse_hash_map nomemmove; - - Memmove::num_copies_ = 0; // reset - NoMemmove::num_copies_ = 0; // reset - for (int i = 10000; i > 0; i--) { - memmove[i] = Memmove(i); - } - for (int i = 10000; i > 0; i--) { - nomemmove[i] = NoMemmove(i); - } - LOGF << "sparse_hash_map copies for unoptimized/optimized cases: " - << NoMemmove::num_copies_ << "/" << Memmove::num_copies_ << "\n"; - CHECK(NoMemmove::num_copies_ > Memmove::num_copies_); - } - // Same should hold true for dense_hash_map - { - dense_hash_map memmove; - dense_hash_map nomemmove; - memmove.set_empty_key(0); - nomemmove.set_empty_key(0); - - Memmove::num_copies_ = 0; // reset - NoMemmove::num_copies_ = 0; // reset - for (int i = 10000; i > 0; i--) { - memmove[i] = Memmove(i); - } - for (int i = 10000; i > 0; i--) { - nomemmove[i] = NoMemmove(i); - } - LOGF << "dense_hash_map copies for unoptimized/optimized cases: " - << NoMemmove::num_copies_ << "/" << Memmove::num_copies_ << "\n"; - CHECK(NoMemmove::num_copies_ > Memmove::num_copies_); - } -} - -void TestShrinking() { - // We want to make sure that when we create a hashtable, and then - // add and delete one element, the size of the hashtable doesn't - // change. - { - sparse_hash_set s; - s.set_deleted_key(0); - const int old_bucket_count = s.bucket_count(); - s.insert(4); - s.erase(4); - s.insert(4); - s.erase(4); - CHECK_EQ(old_bucket_count, s.bucket_count()); - } - { - dense_hash_set s; - s.set_deleted_key(0); - s.set_empty_key(1); - const int old_bucket_count = s.bucket_count(); - s.insert(4); - s.erase(4); - s.insert(4); - s.erase(4); - CHECK_EQ(old_bucket_count, s.bucket_count()); - } - { - sparse_hash_set s(2); // start small: only expects 2 items - CHECK_LT(s.bucket_count(), 32); // verify we actually do start small - s.set_deleted_key(0); - const int old_bucket_count = s.bucket_count(); - s.insert(4); - s.erase(4); - s.insert(4); - s.erase(4); - CHECK_EQ(old_bucket_count, s.bucket_count()); - } - { - dense_hash_set s(2); // start small: only expects 2 items - CHECK_LT(s.bucket_count(), 32); // verify we actually do start small - s.set_deleted_key(0); - s.set_empty_key(1); - const int old_bucket_count = s.bucket_count(); - s.insert(4); - s.erase(4); - s.insert(4); - s.erase(4); - CHECK_EQ(old_bucket_count, s.bucket_count()); - } -} - -class TestHashFcn : public SPARSEHASH_HASH { - public: - explicit TestHashFcn(int i) - : id_(i) { - } - - int id() const { - return id_; - } - - private: - int id_; -}; - -class TestEqualTo : public equal_to { - public: - explicit TestEqualTo(int i) - : id_(i) { - } - - int id() const { - return id_; - } - - private: - int id_; -}; - -template

n&YR}rE_H5biylHm#8LvNH_pxy!X3-vR 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 diff --git a/src/sparsehash-1.6/m4/acx_pthread.m4 b/src/sparsehash-1.6/m4/acx_pthread.m4 deleted file mode 100644 index 2cf20de..0000000 --- a/src/sparsehash-1.6/m4/acx_pthread.m4 +++ /dev/null @@ -1,363 +0,0 @@ -# This was retrieved from -# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?revision=1277&root=avahi -# See also (perhaps for new versions?) -# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?root=avahi -# -# We've rewritten the inconsistency check code (from avahi), to work -# more broadly. In particular, it no longer assumes ld accepts -zdefs. -# This caused a restructing of the code, but the functionality has only -# changed a little. - -dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -dnl -dnl @summary figure out how to build C programs using POSIX threads -dnl -dnl This macro figures out how to build C programs using POSIX threads. -dnl It sets the PTHREAD_LIBS output variable to the threads library and -dnl linker flags, and the PTHREAD_CFLAGS output variable to any special -dnl C compiler flags that are needed. (The user can also force certain -dnl compiler flags/libs to be tested by setting these environment -dnl variables.) -dnl -dnl Also sets PTHREAD_CC to any special C compiler that is needed for -dnl multi-threaded programs (defaults to the value of CC otherwise). -dnl (This is necessary on AIX to use the special cc_r compiler alias.) -dnl -dnl NOTE: You are assumed to not only compile your program with these -dnl flags, but also link it with them as well. e.g. you should link -dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS -dnl $LIBS -dnl -dnl If you are only building threads programs, you may wish to use -dnl these variables in your default LIBS, CFLAGS, and CC: -dnl -dnl LIBS="$PTHREAD_LIBS $LIBS" -dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -dnl CC="$PTHREAD_CC" -dnl -dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute -dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to -dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). -dnl -dnl ACTION-IF-FOUND is a list of shell commands to run if a threads -dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to -dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the -dnl default action will define HAVE_PTHREAD. -dnl -dnl Please let the authors know if this macro fails on any platform, or -dnl if you have any other suggestions or comments. This macro was based -dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with -dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros -dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. -dnl We are also grateful for the helpful feedback of numerous users. -dnl -dnl @category InstalledPackages -dnl @author Steven G. Johnson -dnl @version 2006-05-29 -dnl @license GPLWithACException -dnl -dnl Checks for GCC shared/pthread inconsistency based on work by -dnl Marcin Owsiany - - -AC_DEFUN([ACX_PTHREAD], [ -AC_REQUIRE([AC_CANONICAL_HOST]) -AC_LANG_SAVE -AC_LANG_C -acx_pthread_ok=no - -# We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). -# It gets checked for in the link test anyway. - -# First of all, check if the user has set any of the PTHREAD_LIBS, -# etcetera environment variables, and if threads linking works using -# them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) - AC_MSG_RESULT($acx_pthread_ok) - if test x"$acx_pthread_ok" = xno; then - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" - fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" -fi - -# We must check for the threads library under a number of different -# names; the ordering is very important because some systems -# (e.g. DEC) have both -lpthread and -lpthreads, where one of the -# libraries is broken (non-POSIX). - -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. - -acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" - -# The ordering *is* (sometimes) important. Some notes on the -# individual items follow: - -# pthreads: AIX (must check this before -lpthread) -# none: in case threads are in libc; should be tried before -Kthread and -# other compiler flags to prevent continual compiler warnings -# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc -# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC -# pthread: Linux, etcetera -# --thread-safe: KAI C++ -# pthread-config: use pthread-config program (for GNU Pth library) - -case "${host_cpu}-${host_os}" in - *solaris*) - - # On Solaris (at least, for some versions), libc contains stubbed - # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: - - acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" - ;; -esac - -if test x"$acx_pthread_ok" = xno; then -for flag in $acx_pthread_flags; do - - case $flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" - ;; - - pthread-config) - AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) - if test x"$acx_pthread_config" = xno; then continue; fi - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - - *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" - ;; - esac - - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [acx_pthread_ok=yes]) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - AC_MSG_RESULT($acx_pthread_ok) - if test "x$acx_pthread_ok" = xyes; then - break; - fi - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi - -# Various other checks: -if test "x$acx_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_TRY_LINK([#include ], [int attr=$attr; return attr;], - [attr_name=$attr; break]) - done - AC_MSG_RESULT($attr_name) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - flag=no - case "${host_cpu}-${host_os}" in - *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; - *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; - esac - AC_MSG_RESULT(${flag}) - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - # More AIX lossage: must compile with xlc_r or cc_r - if test x"$GCC" != xyes; then - AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) - else - PTHREAD_CC=$CC - fi - - # The next part tries to detect GCC inconsistency with -shared on some - # architectures and systems. The problem is that in certain - # configurations, when -shared is specified, GCC "forgets" to - # internally use various flags which are still necessary. - - # - # Prepare the flags - # - save_CFLAGS="$CFLAGS" - save_LIBS="$LIBS" - save_CC="$CC" - - # Try with the flags determined by the earlier checks. - # - # -Wl,-z,defs forces link-time symbol resolution, so that the - # linking checks with -shared actually have any value - # - # FIXME: -fPIC is required for -shared on many architectures, - # so we specify it here, but the right way would probably be to - # properly detect whether it is actually required. - CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CC="$PTHREAD_CC" - - # In order not to create several levels of indentation, we test - # the value of "$done" until we find the cure or run out of ideas. - done="no" - - # First, make sure the CFLAGS we added are actually accepted by our - # compiler. If not (and OS X's ld, for instance, does not accept -z), - # then we can't do this test. - if test x"$done" = xno; then - AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies]) - AC_TRY_LINK(,, , [done=yes]) - - if test "x$done" = xyes ; then - AC_MSG_RESULT([no]) - else - AC_MSG_RESULT([yes]) - fi - fi - - if test x"$done" = xno; then - AC_MSG_CHECKING([whether -pthread is sufficient with -shared]) - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [done=yes]) - - if test "x$done" = xyes; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - fi - - # - # Linux gcc on some architectures such as mips/mipsel forgets - # about -lpthread - # - if test x"$done" = xno; then - AC_MSG_CHECKING([whether -lpthread fixes that]) - LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [done=yes]) - - if test "x$done" = xyes; then - AC_MSG_RESULT([yes]) - PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" - else - AC_MSG_RESULT([no]) - fi - fi - # - # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc - # - if test x"$done" = xno; then - AC_MSG_CHECKING([whether -lc_r fixes that]) - LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [done=yes]) - - if test "x$done" = xyes; then - AC_MSG_RESULT([yes]) - PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" - else - AC_MSG_RESULT([no]) - fi - fi - if test x"$done" = xno; then - # OK, we have run out of ideas - AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries]) - - # so it's not safe to assume that we may use pthreads - acx_pthread_ok=no - fi - - CFLAGS="$save_CFLAGS" - LIBS="$save_LIBS" - CC="$save_CC" -else - PTHREAD_CC="$CC" -fi - -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) - -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$acx_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) - : -else - acx_pthread_ok=no - $2 -fi -AC_LANG_RESTORE -])dnl ACX_PTHREAD diff --git a/src/sparsehash-1.6/m4/google_namespace.m4 b/src/sparsehash-1.6/m4/google_namespace.m4 deleted file mode 100644 index 7f244cc..0000000 --- a/src/sparsehash-1.6/m4/google_namespace.m4 +++ /dev/null @@ -1,42 +0,0 @@ -# Allow users to override the namespace we define our application's classes in -# Arg $1 is the default namespace to use if --enable-namespace isn't present. - -# In general, $1 should be 'google', so we put all our exported symbols in a -# unique namespace that is not likely to conflict with anyone else. However, -# when it makes sense -- for instance, when publishing stl-like code -- you -# may want to go with a different default, like 'std'. - -# We guarantee the invariant that GOOGLE_NAMESPACE starts with ::, -# unless it's the empty string. Thus, it's always safe to do -# GOOGLE_NAMESPACE::foo and be sure you're getting the foo that's -# actually in the google namespace, and not some other namespace that -# the namespace rules might kick in. - -AC_DEFUN([AC_DEFINE_GOOGLE_NAMESPACE], - [google_namespace_default=[$1] - AC_ARG_ENABLE(namespace, [ --enable-namespace=FOO to define these Google - classes in the FOO namespace. --disable-namespace - to define them in the global namespace. Default - is to define them in namespace $1.], - [case "$enableval" in - yes) google_namespace="$google_namespace_default" ;; - no) google_namespace="" ;; - *) google_namespace="$enableval" ;; - esac], - [google_namespace="$google_namespace_default"]) - if test -n "$google_namespace"; then - ac_google_namespace="::$google_namespace" - ac_google_start_namespace="namespace $google_namespace {" - ac_google_end_namespace="}" - else - ac_google_namespace="" - ac_google_start_namespace="" - ac_google_end_namespace="" - fi - AC_DEFINE_UNQUOTED(GOOGLE_NAMESPACE, $ac_google_namespace, - Namespace for Google classes) - AC_DEFINE_UNQUOTED(_START_GOOGLE_NAMESPACE_, $ac_google_start_namespace, - Puts following code inside the Google namespace) - AC_DEFINE_UNQUOTED(_END_GOOGLE_NAMESPACE_, $ac_google_end_namespace, - Stops putting the code inside the Google namespace) -]) diff --git a/src/sparsehash-1.6/m4/namespaces.m4 b/src/sparsehash-1.6/m4/namespaces.m4 deleted file mode 100644 index d78dbe4..0000000 --- a/src/sparsehash-1.6/m4/namespaces.m4 +++ /dev/null @@ -1,15 +0,0 @@ -# Checks whether the compiler implements namespaces -AC_DEFUN([AC_CXX_NAMESPACES], - [AC_CACHE_CHECK(whether the compiler implements namespaces, - ac_cv_cxx_namespaces, - [AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([namespace Outer { - namespace Inner { int i = 0; }}], - [using namespace Outer::Inner; return i;], - ac_cv_cxx_namespaces=yes, - ac_cv_cxx_namespaces=no) - AC_LANG_RESTORE]) - if test "$ac_cv_cxx_namespaces" = yes; then - AC_DEFINE(HAVE_NAMESPACES, 1, [define if the compiler implements namespaces]) - fi]) diff --git a/src/sparsehash-1.6/m4/stl_hash.m4 b/src/sparsehash-1.6/m4/stl_hash.m4 deleted file mode 100644 index a31baab..0000000 --- a/src/sparsehash-1.6/m4/stl_hash.m4 +++ /dev/null @@ -1,70 +0,0 @@ -# We check two things: where the include file is for -# unordered_map/hash_map (we prefer the first form), and what -# namespace unordered/hash_map lives in within that include file. We -# include AC_TRY_COMPILE for all the combinations we've seen in the -# wild. We define HASH_MAP_H to the location of the header file, and -# HASH_NAMESPACE to the namespace the class (unordered_map or -# hash_map) is in. We define HAVE_UNORDERED_MAP if the class we found -# is named unordered_map, or leave it undefined if not. - -# This also checks if unordered map exists. -AC_DEFUN([AC_CXX_STL_HASH], - [AC_REQUIRE([AC_CXX_NAMESPACES]) - AC_MSG_CHECKING(the location of hash_map) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - ac_cv_cxx_hash_map="" - # First try unordered_map, but not on gcc's before 4.2 -- I've - # seen unexplainable unordered_map bugs with -O2 on older gcc's. - AC_TRY_COMPILE([#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)) - # error GCC too old for unordered_map - #endif - ], - [/* no program body necessary */], - [stl_hash_old_gcc=no], - [stl_hash_old_gcc=yes]) - for location in unordered_map tr1/unordered_map; do - for namespace in std std::tr1; do - if test -z "$ac_cv_cxx_hash_map" -a "$stl_hash_old_gcc" != yes; then - # Some older gcc's have a buggy tr1, so test a bit of code. - AC_TRY_COMPILE([#include <$location>], - [const ${namespace}::unordered_map t; - return t.find(5) == t.end();], - [ac_cv_cxx_hash_map="<$location>"; - ac_cv_cxx_hash_namespace="$namespace"; - ac_cv_cxx_have_unordered_map="yes";]) - fi - done - done - # Now try hash_map - for location in ext/hash_map hash_map; do - for namespace in __gnu_cxx "" std stdext; do - if test -z "$ac_cv_cxx_hash_map"; then - AC_TRY_COMPILE([#include <$location>], - [${namespace}::hash_map t], - [ac_cv_cxx_hash_map="<$location>"; - ac_cv_cxx_hash_namespace="$namespace"; - ac_cv_cxx_have_unordered_map="no";]) - fi - done - done - ac_cv_cxx_hash_set=`echo "$ac_cv_cxx_hash_map" | sed s/map/set/`; - if test -n "$ac_cv_cxx_hash_map"; then - AC_DEFINE(HAVE_HASH_MAP, 1, [define if the compiler has hash_map]) - AC_DEFINE(HAVE_HASH_SET, 1, [define if the compiler has hash_set]) - AC_DEFINE_UNQUOTED(HASH_MAP_H,$ac_cv_cxx_hash_map, - [the location of or ]) - AC_DEFINE_UNQUOTED(HASH_SET_H,$ac_cv_cxx_hash_set, - [the location of or ]) - AC_DEFINE_UNQUOTED(HASH_NAMESPACE,$ac_cv_cxx_hash_namespace, - [the namespace of hash_map/hash_set]) - if test "$ac_cv_cxx_have_unordered_map" = yes; then - AC_DEFINE(HAVE_UNORDERED_MAP,1, - [define if the compiler supports unordered_{map,set}]) - fi - AC_MSG_RESULT([$ac_cv_cxx_hash_map]) - else - AC_MSG_RESULT() - AC_MSG_WARN([could not find an STL hash_map]) - fi -]) diff --git a/src/sparsehash-1.6/m4/stl_hash_fun.m4 b/src/sparsehash-1.6/m4/stl_hash_fun.m4 deleted file mode 100644 index 962b088..0000000 --- a/src/sparsehash-1.6/m4/stl_hash_fun.m4 +++ /dev/null @@ -1,36 +0,0 @@ -# We just try to figure out where hash<> is defined. It's in some file -# that ends in hash_fun.h... -# -# Ideally we'd use AC_CACHE_CHECK, but that only lets us store one value -# at a time, and we need to store two (filename and namespace). -# prints messages itself, so we have to do the message-printing ourselves -# via AC_MSG_CHECKING + AC_MSG_RESULT. (TODO(csilvers): can we cache?) -# -# tr1/functional_hash.h: new gcc's with tr1 support -# stl_hash_fun.h: old gcc's (gc2.95?) -# ext/hash_fun.h: newer gcc's (gcc4) -# stl/_hash_fun.h: STLport - -AC_DEFUN([AC_CXX_STL_HASH_FUN], - [AC_REQUIRE([AC_CXX_STL_HASH]) - AC_MSG_CHECKING(how to include hash_fun directly) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - ac_cv_cxx_stl_hash_fun="" - for location in functional tr1/functional \ - ext/hash_fun.h ext/stl_hash_fun.h \ - hash_fun.h stl_hash_fun.h \ - stl/_hash_fun.h; do - if test -z "$ac_cv_cxx_stl_hash_fun"; then - AC_TRY_COMPILE([#include <$location>], - [int x = ${ac_cv_cxx_hash_namespace}::hash()(5)], - [ac_cv_cxx_stl_hash_fun="<$location>";]) - fi - done - AC_LANG_RESTORE - AC_DEFINE_UNQUOTED(HASH_FUN_H,$ac_cv_cxx_stl_hash_fun, - [the location of the header defining hash functions]) - AC_DEFINE_UNQUOTED(HASH_NAMESPACE,$ac_cv_cxx_hash_namespace, - [the namespace of the hash<> function]) - AC_MSG_RESULT([$ac_cv_cxx_stl_hash_fun]) -]) diff --git a/src/sparsehash-1.6/m4/stl_namespace.m4 b/src/sparsehash-1.6/m4/stl_namespace.m4 deleted file mode 100644 index 989ad80..0000000 --- a/src/sparsehash-1.6/m4/stl_namespace.m4 +++ /dev/null @@ -1,25 +0,0 @@ -# We check what namespace stl code like vector expects to be executed in - -AC_DEFUN([AC_CXX_STL_NAMESPACE], - [AC_CACHE_CHECK( - what namespace STL code is in, - ac_cv_cxx_stl_namespace, - [AC_REQUIRE([AC_CXX_NAMESPACES]) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include ], - [vector t; return 0;], - ac_cv_cxx_stl_namespace=none) - AC_TRY_COMPILE([#include ], - [std::vector t; return 0;], - ac_cv_cxx_stl_namespace=std) - AC_LANG_RESTORE]) - if test "$ac_cv_cxx_stl_namespace" = none; then - AC_DEFINE(STL_NAMESPACE,, - [the namespace where STL code like vector<> is defined]) - fi - if test "$ac_cv_cxx_stl_namespace" = std; then - AC_DEFINE(STL_NAMESPACE,std, - [the namespace where STL code like vector<> is defined]) - fi -]) diff --git a/src/sparsehash-1.6/missing b/src/sparsehash-1.6/missing deleted file mode 100755 index 894e786..0000000 --- a/src/sparsehash-1.6/missing +++ /dev/null @@ -1,360 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2005-06-08.21 - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). -case "$1" in - lex|yacc) - # Not GNU programs, they don't have --version. - ;; - - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/src/sparsehash-1.6/mkinstalldirs b/src/sparsehash-1.6/mkinstalldirs deleted file mode 100755 index 259dbfc..0000000 --- a/src/sparsehash-1.6/mkinstalldirs +++ /dev/null @@ -1,158 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2005-06-29.22 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -errstatus=0 -dirmode= - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit $? - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit $? - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - case $file in - /*) pathcomp=/ ;; - *) pathcomp= ;; - esac - oIFS=$IFS - IFS=/ - set fnord $file - shift - IFS=$oIFS - - for d - do - test "x$d" = x && continue - - pathcomp=$pathcomp$d - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr= - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp=$pathcomp/ - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/src/sparsehash-1.6/packages/deb.sh b/src/sparsehash-1.6/packages/deb.sh deleted file mode 100755 index 31b423c..0000000 --- a/src/sparsehash-1.6/packages/deb.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -e - -# This takes one commandline argument, the name of the package. If no -# name is given, then we'll end up just using the name associated with -# an arbitrary .tar.gz file in the rootdir. That's fine: there's probably -# only one. -# -# Run this from the 'packages' directory, just under rootdir - -## Set LIB to lib if exporting a library, empty-string else -LIB= -#LIB=lib - -PACKAGE="$1" -VERSION="$2" - -# We can only build Debian packages, if the Debian build tools are installed -if [ \! -x /usr/bin/debuild ]; then - echo "Cannot find /usr/bin/debuild. Not building Debian packages." 1>&2 - exit 0 -fi - -# Double-check we're in the packages directory, just under rootdir -if [ \! -r ../Makefile -a \! -r ../INSTALL ]; then - echo "Must run $0 in the 'packages' directory, under the root directory." 1>&2 - echo "Also, you must run \"make dist\" before running this script." 1>&2 - exit 0 -fi - -# Find the top directory for this package -topdir="${PWD%/*}" - -# Find the tar archive built by "make dist" -archive="${PACKAGE}-${VERSION}" -archive_with_underscore="${PACKAGE}_${VERSION}" -if [ -z "${archive}" ]; then - echo "Cannot find ../$PACKAGE*.tar.gz. Run \"make dist\" first." 1>&2 - exit 0 -fi - -# Create a pristine directory for building the Debian package files -trap 'rm -rf '`pwd`/tmp'; exit $?' EXIT SIGHUP SIGINT SIGTERM - -rm -rf tmp -mkdir -p tmp -cd tmp - -# Debian has very specific requirements about the naming of build -# directories, and tar archives. It also wants to write all generated -# packages to the parent of the source directory. We accommodate these -# requirements by building directly from the tar file. -ln -s "${topdir}/${archive}.tar.gz" "${LIB}${archive}.orig.tar.gz" -# Some version of debuilder want foo.orig.tar.gz with _ between versions. -ln -s "${topdir}/${archive}.tar.gz" "${LIB}${archive_with_underscore}.orig.tar.gz" -tar zfx "${LIB}${archive}.orig.tar.gz" -[ -n "${LIB}" ] && mv "${archive}" "${LIB}${archive}" -cd "${LIB}${archive}" -# This is one of those 'specific requirements': where the deb control files live -cp -a "packages/deb" "debian" - -# Now, we can call Debian's standard build tool -debuild -uc -us -cd ../.. # get back to the original top-level dir - -# We'll put the result in a subdirectory that's named after the OS version -# we've made this .deb file for. -destdir="debian-$(cat /etc/debian_version 2>/dev/null || echo UNKNOWN)" - -rm -rf "$destdir" -mkdir -p "$destdir" -mv $(find tmp -mindepth 1 -maxdepth 1 -type f) "$destdir" - -echo -echo "The Debian package files are located in $PWD/$destdir" diff --git a/src/sparsehash-1.6/packages/deb/README b/src/sparsehash-1.6/packages/deb/README deleted file mode 100644 index 57becfd..0000000 --- a/src/sparsehash-1.6/packages/deb/README +++ /dev/null @@ -1,7 +0,0 @@ -The list of files here isn't complete. For a step-by-step guide on -how to set this package up correctly, check out - http://www.debian.org/doc/maint-guide/ - -Most of the files that are in this directory are boilerplate. -However, you may need to change the list of binary-arch dependencies -in 'rules'. diff --git a/src/sparsehash-1.6/packages/deb/changelog b/src/sparsehash-1.6/packages/deb/changelog deleted file mode 100644 index 7786c37..0000000 --- a/src/sparsehash-1.6/packages/deb/changelog +++ /dev/null @@ -1,113 +0,0 @@ -sparsehash (1.6-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Fri, 08 Jan 2010 14:47:55 -0800 - -sparsehash (1.5.2-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Tue, 12 May 2009 14:16:38 -0700 - -sparsehash (1.5.1-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Fri, 08 May 2009 15:23:44 -0700 - -sparsehash (1.5-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Wed, 06 May 2009 11:28:49 -0700 - -sparsehash (1.4-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Wed, 28 Jan 2009 17:11:31 -0800 - -sparsehash (1.3-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Thu, 06 Nov 2008 15:06:09 -0800 - -sparsehash (1.2-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Thu, 18 Sep 2008 13:53:20 -0700 - -sparsehash (1.1-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Mon, 11 Feb 2008 16:30:11 -0800 - -sparsehash (1.0-1) unstable; urgency=low - - * New upstream release. We are now out of beta. - - -- Google Inc. Tue, 13 Nov 2007 15:15:46 -0800 - -sparsehash (0.9.1-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Fri, 12 Oct 2007 12:35:24 -0700 - -sparsehash (0.9-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Tue, 09 Oct 2007 14:15:21 -0700 - -sparsehash (0.8-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Tue, 03 Jul 2007 12:55:04 -0700 - -sparsehash (0.7-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Mon, 11 Jun 2007 11:33:41 -0700 - -sparsehash (0.6-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Tue, 20 Mar 2007 17:29:34 -0700 - -sparsehash (0.5-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Sat, 21 Oct 2006 13:47:47 -0700 - -sparsehash (0.4-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Sun, 23 Apr 2006 22:42:35 -0700 - -sparsehash (0.3-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Thu, 03 Nov 2005 20:12:31 -0800 - -sparsehash (0.2-1) unstable; urgency=low - - * New upstream release. - - -- Google Inc. Mon, 02 May 2005 07:04:46 -0700 - -sparsehash (0.1-1) unstable; urgency=low - - * Initial release. - - -- Google Inc. Tue, 15 Feb 2005 07:17:02 -0800 diff --git a/src/sparsehash-1.6/packages/deb/compat b/src/sparsehash-1.6/packages/deb/compat deleted file mode 100644 index b8626c4..0000000 --- a/src/sparsehash-1.6/packages/deb/compat +++ /dev/null @@ -1 +0,0 @@ -4 diff --git a/src/sparsehash-1.6/packages/deb/control b/src/sparsehash-1.6/packages/deb/control deleted file mode 100644 index c387952..0000000 --- a/src/sparsehash-1.6/packages/deb/control +++ /dev/null @@ -1,17 +0,0 @@ -Source: sparsehash -Section: libdevel -Priority: optional -Maintainer: Google Inc. -Build-Depends: debhelper (>= 4.0.0) -Standards-Version: 3.6.1 - -Package: sparsehash -Section: libs -Architecture: any -Description: hash_map and hash_set classes with minimal space overhead - This package contains several hash-map implementations, similar - in API to SGI's hash_map class, but with different performance - characteristics. sparse_hash_map uses very little space overhead: 1-2 - bits per entry. dense_hash_map is typically faster than the default - SGI STL implementation. This package also includes hash-set analogues - of these classes. diff --git a/src/sparsehash-1.6/packages/deb/copyright b/src/sparsehash-1.6/packages/deb/copyright deleted file mode 100644 index 725a37d..0000000 --- a/src/sparsehash-1.6/packages/deb/copyright +++ /dev/null @@ -1,35 +0,0 @@ -This package was debianized by Google Inc. on -15 February 2005. - -It was downloaded from http://code.google.com/ - -Upstream Author: opensource@google.com - -Copyright (c) 2005, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/sparsehash-1.6/packages/deb/docs b/src/sparsehash-1.6/packages/deb/docs deleted file mode 100644 index 752adb4..0000000 --- a/src/sparsehash-1.6/packages/deb/docs +++ /dev/null @@ -1,16 +0,0 @@ -AUTHORS -COPYING -ChangeLog -INSTALL -NEWS -README -TODO -doc/dense_hash_map.html -doc/dense_hash_set.html -doc/sparse_hash_map.html -doc/sparse_hash_set.html -doc/sparsetable.html -doc/implementation.html -doc/performance.html -doc/index.html -doc/designstyle.css diff --git a/src/sparsehash-1.6/packages/deb/rules b/src/sparsehash-1.6/packages/deb/rules deleted file mode 100755 index f520bef..0000000 --- a/src/sparsehash-1.6/packages/deb/rules +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - - -CFLAGS = -Wall -g - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - -# shared library versions, option 1 -#version=2.0.5 -#major=2 -# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so -version=`ls src/.libs/lib*.so.* | \ - awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -major=`ls src/.libs/lib*.so.* | \ - awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` - -config.status: configure - dh_testdir - # Add here commands to configure the package. - CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info - - -build: build-stamp -build-stamp: config.status - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - - # Add here commands to clean up after the build process. - -$(MAKE) distclean -ifneq "$(wildcard /usr/share/misc/config.sub)" "" - cp -f /usr/share/misc/config.sub config.sub -endif -ifneq "$(wildcard /usr/share/misc/config.guess)" "" - cp -f /usr/share/misc/config.guess config.guess -endif - - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/tmp - $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs ChangeLog - dh_installdocs - dh_installexamples - dh_install --sourcedir=debian/tmp -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_python - dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install diff --git a/src/sparsehash-1.6/packages/deb/sparsehash.dirs b/src/sparsehash-1.6/packages/deb/sparsehash.dirs deleted file mode 100644 index 4f17144..0000000 --- a/src/sparsehash-1.6/packages/deb/sparsehash.dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/include -usr/include/google diff --git a/src/sparsehash-1.6/packages/deb/sparsehash.install b/src/sparsehash-1.6/packages/deb/sparsehash.install deleted file mode 100644 index 9625860..0000000 --- a/src/sparsehash-1.6/packages/deb/sparsehash.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/include/google/* -debian/tmp/usr/include/google/* diff --git a/src/sparsehash-1.6/packages/rpm.sh b/src/sparsehash-1.6/packages/rpm.sh deleted file mode 100755 index a655080..0000000 --- a/src/sparsehash-1.6/packages/rpm.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/sh -e - -# Run this from the 'packages' directory, just under rootdir - -# We can only build rpm packages, if the rpm build tools are installed -if [ \! -x /usr/bin/rpmbuild ] -then - echo "Cannot find /usr/bin/rpmbuild. Not building an rpm." 1>&2 - exit 0 -fi - -# Check the commandline flags -PACKAGE="$1" -VERSION="$2" -fullname="${PACKAGE}-${VERSION}" -archive=../$fullname.tar.gz - -if [ -z "$1" -o -z "$2" ] -then - echo "Usage: $0 " 1>&2 - exit 0 -fi - -# Double-check we're in the packages directory, just under rootdir -if [ \! -r ../Makefile -a \! -r ../INSTALL ] -then - echo "Must run $0 in the 'packages' directory, under the root directory." 1>&2 - echo "Also, you must run \"make dist\" before running this script." 1>&2 - exit 0 -fi - -if [ \! -r "$archive" ] -then - echo "Cannot find $archive. Run \"make dist\" first." 1>&2 - exit 0 -fi - -# Create the directory where the input lives, and where the output should live -RPM_SOURCE_DIR="/tmp/rpmsource-$fullname" -RPM_BUILD_DIR="/tmp/rpmbuild-$fullname" - -trap 'rm -rf $RPM_SOURCE_DIR $RPM_BUILD_DIR; exit $?' EXIT SIGHUP SIGINT SIGTERM - -rm -rf "$RPM_SOURCE_DIR" "$RPM_BUILD_DIR" -mkdir "$RPM_SOURCE_DIR" -mkdir "$RPM_BUILD_DIR" - -cp "$archive" "$RPM_SOURCE_DIR" - -# rpmbuild -- as far as I can tell -- asks the OS what CPU it has. -# This may differ from what kind of binaries gcc produces. dpkg -# does a better job of this, so if we can run 'dpkg --print-architecture' -# to get the build CPU, we use that in preference of the rpmbuild -# default. -target=`dpkg --print-architecture 2>/dev/null` # "" if dpkg isn't found -if [ -n "$target" ] -then - target=" --target $target" -fi - -rpmbuild -bb rpm/rpm.spec $target \ - --define "NAME $PACKAGE" \ - --define "VERSION $VERSION" \ - --define "_sourcedir $RPM_SOURCE_DIR" \ - --define "_builddir $RPM_BUILD_DIR" \ - --define "_rpmdir $RPM_SOURCE_DIR" - -# We put the output in a directory based on what system we've built for -destdir=rpm-unknown -if [ -r /etc/issue ] -then - grep "Red Hat.*release 7" /etc/issue >/dev/null 2>&1 && destdir=rh7 - grep "Red Hat.*release 8" /etc/issue >/dev/null 2>&1 && destdir=rh8 - grep "Red Hat.*release 9" /etc/issue >/dev/null 2>&1 && destdir=rh9 - grep "Fedora Core.*release 1" /etc/issue >/dev/null 2>&1 && destdir=fc1 - grep "Fedora Core.*release 2" /etc/issue >/dev/null 2>&1 && destdir=fc2 - grep "Fedora Core.*release 3" /etc/issue >/dev/null 2>&1 && destdir=fc3 -fi - -rm -rf "$destdir" -mkdir -p "$destdir" -# We want to get not only the main package but devel etc, hence the middle * -mv "$RPM_SOURCE_DIR"/*/"${PACKAGE}"-*"${VERSION}"*.rpm "$destdir" - -echo -echo "The rpm package file(s) are located in $PWD/$destdir" diff --git a/src/sparsehash-1.6/packages/rpm/rpm.spec b/src/sparsehash-1.6/packages/rpm/rpm.spec deleted file mode 100644 index f412efe..0000000 --- a/src/sparsehash-1.6/packages/rpm/rpm.spec +++ /dev/null @@ -1,61 +0,0 @@ -%define RELEASE 1 -%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} -%define prefix /usr - -Name: %NAME -Summary: hash_map and hash_set classes with minimal space overhead -Version: %VERSION -Release: %rel -Group: Development/Libraries -URL: http://code.google.com/p/google-sparsehash -License: BSD -Vendor: Google -Packager: Google -Source: http://%{NAME}.googlecode.com/files/%{NAME}-%{VERSION}.tar.gz -Distribution: Redhat 7 and above. -Buildroot: %{_tmppath}/%{name}-root -Prefix: %prefix -Buildarch: noarch - -%description -The %name package contains several hash-map implementations, similar -in API to the SGI hash_map class, but with different performance -characteristics. sparse_hash_map uses very little space overhead: 1-2 -bits per entry. dense_hash_map is typically faster than the default -SGI STL implementation. This package also includes hash-set analogues -of these classes. - -%changelog - * Wed Apr 22 2009 - - Change build rule to use %configure instead of ./configure - - Change install to use DESTDIR instead of prefix for make install - - Use wildcards for doc/ and lib/ directories - - Use {_includedir} instead of {prefix}/include - - * Fri Jan 14 2005 - - First draft - -%prep -%setup - -%build -# I can't use '% configure', because it defines -m32 which breaks on -# my development environment for some reason. But I do take -# as much from % configure (in /usr/lib/rpm/macros) as I can. -./configure --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} --infodir=%{_infodir} -make - -%install -rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) - -%docdir %{prefix}/share/doc/%{NAME}-%{VERSION} -%{prefix}/share/doc/%{NAME}-%{VERSION}/* - -%{_includedir}/google diff --git a/src/sparsehash-1.6/simple_test b/src/sparsehash-1.6/simple_test deleted file mode 100755 index e2b9a84d1097a0e5430ba521343a87915d2c9a6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546143 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�X 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≦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 z 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