From 0121f53f56327fda1aebb9d2e6c12aee07ef3b49 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Tue, 8 Jan 2013 19:07:11 -0800 Subject: [PATCH] refactor and speed up hextree image encoding by using dense_has_map - refs #1629 --- Makefile | 4 + SConstruct | 2 + benchmark/allocation.cpp | 49 + benchmark/build.py | 22 + benchmark/data/multicolor-hextree-actual.png | Bin 0 -> 65927 bytes .../data/multicolor-hextree-expected.png | Bin 0 -> 65927 bytes benchmark/data/multicolor.png | Bin 0 -> 262644 bytes benchmark/run.cpp | 161 ++ benchmark/utils/random_image.py | 15 + deps/sparsehash/dense_hash_map | 369 +++++ deps/sparsehash/internal/densehashtable.h | 1319 +++++++++++++++++ deps/sparsehash/internal/hashtable-common.h | 381 +++++ .../internal/libc_allocator_with_realloc.h | 119 ++ deps/sparsehash/internal/sparseconfig.h | 46 + deps/sparsehash/template_util.h | 134 ++ deps/sparsehash/type_traits.h | 342 +++++ include/mapnik/hextree.hpp | 18 +- include/mapnik/octree.hpp | 3 +- include/mapnik/palette.hpp | 46 +- include/mapnik/png_io.hpp | 6 +- src/palette.cpp | 38 +- 21 files changed, 3014 insertions(+), 60 deletions(-) create mode 100644 benchmark/allocation.cpp create mode 100644 benchmark/build.py create mode 100644 benchmark/data/multicolor-hextree-actual.png create mode 100644 benchmark/data/multicolor-hextree-expected.png create mode 100644 benchmark/data/multicolor.png create mode 100644 benchmark/run.cpp create mode 100644 benchmark/utils/random_image.py create mode 100644 deps/sparsehash/dense_hash_map create mode 100644 deps/sparsehash/internal/densehashtable.h create mode 100644 deps/sparsehash/internal/hashtable-common.h create mode 100644 deps/sparsehash/internal/libc_allocator_with_realloc.h create mode 100644 deps/sparsehash/internal/sparseconfig.h create mode 100644 deps/sparsehash/template_util.h create mode 100644 deps/sparsehash/type_traits.h diff --git a/Makefile b/Makefile index 8f800e055..f944d8921 100755 --- a/Makefile +++ b/Makefile @@ -41,6 +41,10 @@ test-local: export MAPNIK_INPUT_PLUGINS_DIRECTORY=`pwd`/plugins/input/ && \ make test +bench: + @export ${LINK_FIX}=`pwd`/src:${${LINK_FIX}} && \ + ./benchmark/run + check: test-local demo: diff --git a/SConstruct b/SConstruct index 3444d188e..bfcf006a9 100644 --- a/SConstruct +++ b/SConstruct @@ -1756,6 +1756,8 @@ if not HELP_REQUESTED: if env['SVG_RENDERER']: SConscript('tests/cpp_tests/svg_renderer_tests/build.py') + SConscript('benchmark/build.py') + # install pkg-config script and mapnik-config script SConscript('utils/mapnik-config/build.py') diff --git a/benchmark/allocation.cpp b/benchmark/allocation.cpp new file mode 100644 index 000000000..75ca4e733 --- /dev/null +++ b/benchmark/allocation.cpp @@ -0,0 +1,49 @@ +#include +#include + + +#define BOOST_CHRONO_HEADER_ONLY +#include +#include +#include + +using namespace boost::chrono; +using namespace mapnik; + +void threaded_benchmark(void test(),std::string const& name, unsigned threads) { + using namespace boost::chrono; + typedef process_cpu_clock clock_type; + process_real_cpu_clock::time_point start = process_real_cpu_clock::now(); + boost::thread_group threads; + for (unsigned i=0;i(elapsed) + << " (" << boost::chrono::duration_cast(elapsed) << ")" + << " <-- " << name << "\n"; +} + + +void test_wkt_creation() +{ + boost::ptr_vector paths; + mapnik::wkt_parser parse_wkt; + std::string value("GEOMETRYCOLLECTION(MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))),POINT(2 3),LINESTRING(2 3,3 4),MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))),MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))),MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))))"); + if (!parse_wkt.parse(value, paths)) std::clog << "failed to parse\n"; + int iterations = 10000; + typedef process_cpu_clock clock_type; + process_real_cpu_clock::time_point start = process_real_cpu_clock::now(); + for (int i=0;i(elapsed) << "\n"; +} + +int main( int, char*[] ) +{ + return 0; +} \ No newline at end of file diff --git a/benchmark/build.py b/benchmark/build.py new file mode 100644 index 000000000..4dc448854 --- /dev/null +++ b/benchmark/build.py @@ -0,0 +1,22 @@ +import os +import glob +from copy import copy + +Import ('env') + +test_env = env.Clone() + +test_env['LIBS'] = copy(env['LIBMAPNIK_LIBS']) +test_env.AppendUnique(LIBS='mapnik') +#test_env.AppendUnique(LIBS='sqlite3') +test_env.AppendUnique(CXXFLAGS='-g') + +for cpp_test in glob.glob('run*.cpp'): + name = cpp_test.replace('.cpp','') + source_files = [cpp_test] + test_env_local = test_env.Clone() + test_program = test_env_local.Program(name, source=source_files, LINKFLAGS=env['CUSTOM_LDFLAGS']) + Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME'])) + # build locally if installing + if 'install' in COMMAND_LINE_TARGETS: + env.Alias('install',test_program) diff --git a/benchmark/data/multicolor-hextree-actual.png b/benchmark/data/multicolor-hextree-actual.png new file mode 100644 index 0000000000000000000000000000000000000000..0f84b90d8359e3fa18ee32dc1683d216dd73b8dc GIT binary patch literal 65927 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ⅆ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
    o0VyfT_}D`Cl#@H!UrFa0t|TA9(UiutE6OB!2p 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ⅆ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
      o0VyfT_}D`Cl#@H!UrFa0t|TA9(UiutE6OB!2p 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%0AMC>kO33~r_5?h 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 z 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

      vSOKY4Ud`Sp@8bkBNPr02eNa5ID9i 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 ZAo$=5$&QY9$3Or8002ovPDHLkV1l3G6b=9Y literal 0 HcmV?d00001 diff --git a/benchmark/run.cpp b/benchmark/run.cpp new file mode 100644 index 000000000..5f5f94c68 --- /dev/null +++ b/benchmark/run.cpp @@ -0,0 +1,161 @@ +#include +#include +#include +#include + + +// stl +#include +#include +#include +#include + +// boost +#include +#include + +#define BOOST_CHRONO_HEADER_ONLY +#include +#include +#include + +using namespace boost::chrono; +using namespace mapnik; + +typedef process_cpu_clock clock_type; +typedef clock_type::duration dur; + +template +void benchmark(T test, std::string const& name) +{ + if (!test.validate()) throw std::runtime_error(std::string("test did not validate: ") + name); + dur elapsed = test.run(); + std::clog << name << ": " << boost::chrono::duration_cast(elapsed) << "\n"; +} + +bool compare_images(std::string const& src_fn,std::string const& dest_fn) +{ + std::auto_ptr reader1(mapnik::get_image_reader(dest_fn,"png")); + if (!reader1.get()) + { + throw mapnik::image_reader_exception("Failed to load: " + dest_fn); + } + boost::shared_ptr image_ptr1 = boost::make_shared(reader1->width(),reader1->height()); + reader1->read(0,0,image_ptr1->data()); + + std::auto_ptr reader2(mapnik::get_image_reader(src_fn,"png")); + if (!reader2.get()) + { + throw mapnik::image_reader_exception("Failed to load: " + src_fn); + } + boost::shared_ptr image_ptr2 = boost::make_shared(reader2->width(),reader2->height()); + reader2->read(0,0,image_ptr2->data()); + + image_data_32 const& dest = image_ptr1->data(); + image_data_32 const& src = image_ptr2->data(); + + unsigned int width = src.width(); + unsigned int height = src.height(); + if ((width != dest.width()) || height != dest.height()) return false; + for (unsigned int y = 0; y < height; ++y) + { + const unsigned int* row_from = src.getRow(y); + const unsigned int* row_to = dest.getRow(y); + for (unsigned int x = 0; x < width; ++x) + { + if (row_from[x] != row_to[x]) return false; + } + } + return true; +} + +struct test1 +{ + unsigned iter_; + + explicit test1(unsigned iterations) : + iter_(iterations) {} + + bool validate() + { + return true; + } + + dur run() + { + mapnik::image_data_32 im(256,256); + std::string out; + process_cpu_clock::time_point start = process_cpu_clock::now(); + for (int i=0;i im_; + + explicit test2(unsigned iterations) : + iter_(iterations), + im_() + { + std::string filename("./benchmark/data/multicolor.png"); + std::auto_ptr reader(mapnik::get_image_reader(filename,"png")); + if (!reader.get()) + { + throw mapnik::image_reader_exception("Failed to load: " + filename); + } + im_ = boost::make_shared(reader->width(),reader->height()); + reader->read(0,0,im_->data()); + } + + bool validate() + { + std::string expected("./benchmark/data/multicolor-hextree-expected.png"); + std::string actual("./benchmark/data/multicolor-hextree-actual.png"); + mapnik::save_to_file(im_->data(),actual, "png8:m=h"); + return compare_images(actual,expected); + } + + dur run() + { + std::string out; + process_cpu_clock::time_point start = process_cpu_clock::now(); + for (int i=0;idata(),"png8:m=h"); + } + return process_cpu_clock::now() - start; + } +}; + + + +int main( int, char*[] ) +{ + try + { + std::cout << "starting benchmark…\n"; + { + test1 runner(100); + benchmark(runner,"encoding blank image as png"); + } + + { + test2 runner(100); + benchmark(runner,"encoding multicolor image as png8:m=h"); + } + + std::cout << "...benchmark done\n"; + return 0; + } + catch (std::exception const& ex) + { + std::clog << "test error: " << ex.what() << "\n"; + return -1; + } +} \ No newline at end of file diff --git a/benchmark/utils/random_image.py b/benchmark/utils/random_image.py new file mode 100644 index 000000000..43f0f89cc --- /dev/null +++ b/benchmark/utils/random_image.py @@ -0,0 +1,15 @@ +import mapnik +import random + +im = mapnik.Image(256,256) + +for x in xrange(0,im.width()): + for y in xrange(0,im.height()): + r = int(random.random() * 255) + g = random.random() * 255 + b = random.random() * 255 + a = random.random() + color = mapnik.Color('rgba(%i,%i,%i,%f)' % (r,g,b,a)) + im.set_pixel(x,y,color) + +im.save('./benchmark/data/multicolor.png') \ No newline at end of file diff --git a/deps/sparsehash/dense_hash_map b/deps/sparsehash/dense_hash_map new file mode 100644 index 000000000..e0fe2f13a --- /dev/null +++ b/deps/sparsehash/dense_hash_map @@ -0,0 +1,369 @@ +// 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. + +// ---- +// +// 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. (Note if you +// use the constructor that takes an InputIterator range, you pass in +// the empty key in the constructor, rather than after. As a result, +// this constructor differs from the standard STL version.) +// +// 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 // needed by stl_alloc +#include // for equal_to<>, select1st<>, etc +#include // for alloc +#include // for pair<> +#include // IWYU pragma: export +#include +#include HASH_FUN_H // for hash<> +_START_GOOGLE_NAMESPACE_ + +template , // defined in sparseconfig.h + class EqualKey = std::equal_to, + class Alloc = libc_allocator_with_realloc > > +class dense_hash_map { + private: + // Apparently select1st is not stl-standard, so we define our own + struct SelectKey { + typedef const Key& result_type; + const Key& operator()(const std::pair& p) const { + return p.first; + } + }; + struct SetKey { + void operator()(std::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(); + } + }; + // For operator[]. + struct DefaultValue { + std::pair operator()(const Key& key) { + return std::make_pair(key, 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 + allocator_type get_allocator() const { return rep.get_allocator(); } + 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(), + const allocator_type& alloc = allocator_type()) + : rep(expected_max_items_in_table, hf, eql, SelectKey(), SetKey(), alloc) { + } + + template + dense_hash_map(InputIterator f, InputIterator l, + const key_type& empty_key_val, + size_type expected_max_items_in_table = 0, + const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& alloc = allocator_type()) + : rep(expected_max_items_in_table, hf, eql, SelectKey(), SetKey(), alloc) { + set_empty_key(empty_key_val); + 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) { + 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! + // If key is in the hashtable, returns find(key)->second, + // otherwise returns insert(value_type(key, T()).first->second. + // Note it does not create an empty T unless the find fails. + return rep.template find_or_insert(key).second; + } + + size_type count(const key_type& key) const { return rep.count(key); } + + std::pair equal_range(const key_type& key) { + return rep.equal_range(key); + } + std::pair equal_range(const key_type& key) + const { + return rep.equal_range(key); + } + + + // Insertion routines + std::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 hash map to disk + // + // For maximum flexibility, this does not assume a particular + // file type (though it will probably be a FILE *). We just pass + // the fp through to rep. + + // If your keys and values are simple enough, you can pass this + // serializer to serialize()/unserialize(). "Simple enough" means + // value_type is a POD type that contains no pointers. Note, + // however, we don't try to normalize endianness. + typedef typename ht::NopointerSerializer NopointerSerializer; + + // serializer: a class providing operator()(OUTPUT*, const value_type&) + // (writing value_type to OUTPUT). You can specify a + // NopointerSerializer object if appropriate (see above). + // fp: either a FILE*, OR an ostream*/subclass_of_ostream*, OR a + // pointer to a class providing size_t Write(const void*, size_t), + // which writes a buffer into a stream (which fp presumably + // owns) and returns the number of bytes successfully written. + // Note basic_ostream is not currently supported. + template + bool serialize(ValueSerializer serializer, OUTPUT* fp) { + return rep.serialize(serializer, fp); + } + + // serializer: a functor providing operator()(INPUT*, value_type*) + // (reading from INPUT and into value_type). You can specify a + // NopointerSerializer object if appropriate (see above). + // fp: either a FILE*, OR an istream*/subclass_of_istream*, OR a + // pointer to a class providing size_t Read(void*, size_t), + // which reads into a buffer from a stream (which fp presumably + // owns) and returns the number of bytes successfully read. + // Note basic_istream is not currently supported. + // NOTE: Since value_type is std::pair, ValueSerializer + // may need to do a const cast in order to fill in the key. + template + bool unserialize(ValueSerializer serializer, INPUT* fp) { + return rep.unserialize(serializer, 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/deps/sparsehash/internal/densehashtable.h b/deps/sparsehash/internal/densehashtable.h new file mode 100644 index 000000000..19bf0613a --- /dev/null +++ b/deps/sparsehash/internal/densehashtable.h @@ -0,0 +1,1319 @@ +// 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. + +// --- +// +// 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 dense_hash_map<> +// or dense_hash_set<> instead. + +// You can change the following below: +// HT_OCCUPANCY_PCT -- how full before we double size +// HT_EMPTY_PCT -- how empty before we halve size +// HT_MIN_BUCKETS -- default smallest bucket size +// +// You can also change enlarge_factor (which defaults to +// HT_OCCUPANCY_PCT), and shrink_factor (which defaults to +// HT_EMPTY_PCT) with set_resizing_parameters(). +// +// How to decide what values to use? +// shrink_factor's default of .4 * OCCUPANCY_PCT, is probably good. +// HT_MIN_BUCKETS is probably unnecessary since you can specify +// (indirectly) the starting number of buckets at construct-time. +// For enlarge_factor, 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_factor -- 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_ + +#include +#include +#include // for FILE, fwrite, fread +#include // For swap(), eg +#include // For iterator tags +#include // for numeric_limits +#include // For uninitialized_fill +#include // for pair +#include +#include +#include +#include // For length_error + +_START_GOOGLE_NAMESPACE_ + +namespace base { // just to make google->opensource transition easier +using GOOGLE_NAMESPACE::true_type; +using GOOGLE_NAMESPACE::false_type; +using GOOGLE_NAMESPACE::integral_constant; +using GOOGLE_NAMESPACE::is_same; +using GOOGLE_NAMESPACE::remove_const; +} + +// The probing method +// Linear probing +// #define JUMP_(key, num_probes) ( 1 ) +// Quadratic probing +#define JUMP_(key, num_probes) ( num_probes ) + +// 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. +// Must inherit from unary_function, or at least have a +// result_type enum indicating the return type of operator(). +// 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. + +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 { + private: + typedef typename A::template rebind::other value_alloc_type; + + public: + typedef dense_hashtable_iterator iterator; + typedef dense_hashtable_const_iterator const_iterator; + + typedef std::forward_iterator_tag iterator_category; // very little defined! + typedef V value_type; + typedef typename value_alloc_type::difference_type difference_type; + typedef typename value_alloc_type::size_type size_type; + typedef typename value_alloc_type::reference reference; + typedef typename value_alloc_type::pointer 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 { + private: + typedef typename A::template rebind::other value_alloc_type; + + public: + typedef dense_hashtable_iterator iterator; + typedef dense_hashtable_const_iterator const_iterator; + + typedef std::forward_iterator_tag iterator_category; // very little defined! + typedef V value_type; + typedef typename value_alloc_type::difference_type difference_type; + typedef typename value_alloc_type::size_type size_type; + typedef typename value_alloc_type::const_reference reference; + typedef typename value_alloc_type::const_pointer 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() + : ht(NULL), pos(pointer()), end(pointer()) { } + // 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 { + private: + typedef typename Alloc::template rebind::other value_alloc_type; + + public: + typedef Key key_type; + typedef Value value_type; + typedef HashFcn hasher; + typedef EqualKey key_equal; + typedef Alloc allocator_type; + + typedef typename value_alloc_type::size_type size_type; + typedef typename value_alloc_type::difference_type difference_type; + typedef typename value_alloc_type::reference reference; + typedef typename value_alloc_type::const_reference const_reference; + typedef typename value_alloc_type::pointer pointer; + typedef typename value_alloc_type::const_pointer const_pointer; + 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 int HT_OCCUPANCY_PCT; // defined at the bottom of this file + + // 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_PCT / 2 or we thrash resizing + static const int HT_EMPTY_PCT; // defined at the bottom of this file + + // 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_type 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_type 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. + // We'll just consider bucket n to be the n-th element of the table. + 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 settings; } + key_equal key_eq() const { return key_info; } + allocator_type get_allocator() const { + return allocator_type(val_info); + } + + // Accessor function for statistics gathering. + int num_table_copies() const { return settings.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(pointer dst, const_reference src) { + dst->~value_type(); // delete the old value, if any + 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); + } + + // Test if the given key is the deleted indicator. Requires + // num_deleted > 0, for correctness of read(), and because that + // guarantees that key_info.delkey is valid. + bool test_deleted_key(const key_type& key) const { + assert(num_deleted > 0); + return equals(key_info.delkey, key); + } + + public: + void set_deleted_key(const key_type &key) { + // the empty indicator (if specified) and the deleted indicator + // must be different + assert((!settings.use_empty() || !equals(key, get_key(val_info.emptyval))) + && "Passed the empty-key to set_deleted_key"); + // It's only safe to change what "deleted" means if we purge deleted guys + squash_deleted(); + settings.set_use_deleted(true); + key_info.delkey = key; + } + void clear_deleted_key() { + squash_deleted(); + settings.set_use_deleted(false); + } + key_type deleted_key() const { + assert(settings.use_deleted() + && "Must set deleted key before calling deleted_key"); + return key_info.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 { + // Invariant: !use_deleted() implies num_deleted is 0. + assert(settings.use_deleted() || num_deleted == 0); + return num_deleted > 0 && test_deleted_key(get_key(table[bucknum])); + } + bool test_deleted(const iterator &it) const { + // Invariant: !use_deleted() implies num_deleted is 0. + assert(settings.use_deleted() || num_deleted == 0); + return num_deleted > 0 && test_deleted_key(get_key(*it)); + } + bool test_deleted(const const_iterator &it) const { + // Invariant: !use_deleted() implies num_deleted is 0. + assert(settings.use_deleted() || num_deleted == 0); + return num_deleted > 0 && test_deleted_key(get_key(*it)); + } + + private: + void check_use_deleted(const char* caller) { + (void)caller; // could log it if the assert failed + assert(settings.use_deleted()); + } + + // Set it so test_deleted is true. true if object didn't used to be deleted. + bool set_deleted(iterator &it) { + check_use_deleted("set_deleted()"); + bool retval = !test_deleted(it); + // &* converts from iterator to value-type. + set_key(&(*it), key_info.delkey); + return retval; + } + // Set it so test_deleted is false. true if object used to be deleted. + bool clear_deleted(iterator &it) { + check_use_deleted("clear_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) { + check_use_deleted("set_deleted()"); + bool retval = !test_deleted(it); + set_key(const_cast(&(*it)), key_info.delkey); + return retval; + } + // Set it so test_deleted is false. true if object used to be deleted. + bool clear_deleted(const_iterator &it) { + check_use_deleted("clear_deleted()"); + 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(settings.use_empty()); // we always need to know what's empty! + return equals(get_key(val_info.emptyval), get_key(table[bucknum])); + } + bool test_empty(const iterator &it) const { + assert(settings.use_empty()); // we always need to know what's empty! + return equals(get_key(val_info.emptyval), get_key(*it)); + } + bool test_empty(const const_iterator &it) const { + assert(settings.use_empty()); // we always need to know what's empty! + return equals(get_key(val_info.emptyval), get_key(*it)); + } + + private: + void fill_range_with_empty(pointer table_start, pointer table_end) { + std::uninitialized_fill(table_start, table_end, val_info.emptyval); + } + + 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_reference val) { + // Once you set the empty key, you can't change it + assert(!settings.use_empty() && "Calling set_empty_key multiple times"); + // The deleted indicator (if specified) and the empty indicator + // must be different. + assert((!settings.use_deleted() || !equals(get_key(val), key_info.delkey)) + && "Setting the empty key the same as the deleted key"); + settings.set_use_empty(true); + set_value(&val_info.emptyval, val); + + assert(!table); // must set before first use + // num_buckets was set in constructor even though table was NULL + table = val_info.allocate(num_buckets); + assert(table); + fill_range_with_empty(table, table + num_buckets); + } + // TODO(user): return a key_type rather than a value_type + value_type empty_key() const { + assert(settings.use_empty()); + return val_info.emptyval; + } + + // FUNCTIONS CONCERNING SIZE + public: + size_type size() const { return num_elements - num_deleted; } + size_type max_size() const { return val_info.max_size(); } + 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); + + // Used after a string of deletes. Returns true if we actually shrunk. + // TODO(csilvers): take a delta so we can take into account inserts + // done after shrinking. Maybe make part of the Settings class? + bool 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); + bool retval = false; + + // 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. + const size_type num_remain = num_elements - num_deleted; + const size_type shrink_threshold = settings.shrink_threshold(); + if (shrink_threshold > 0 && num_remain < shrink_threshold && + bucket_count() > HT_DEFAULT_STARTING_BUCKETS) { + const float shrink_factor = settings.shrink_factor(); + size_type sz = bucket_count() / 2; // find how much we should shrink + while (sz > HT_DEFAULT_STARTING_BUCKETS && + num_remain < sz * shrink_factor) { + sz /= 2; // stay a power of 2 + } + dense_hashtable tmp(*this, sz); // Do the actual resizing + swap(tmp); // now we are tmp + retval = true; + } + settings.set_consider_shrink(false); // because we just considered it + return retval; + } + + // 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" + // Returns true if we actually resized, false if size was already ok. + bool resize_delta(size_type delta) { + bool did_resize = false; + if ( settings.consider_shrink() ) { // see if lots of deletes happened + if ( maybe_shrink() ) + did_resize = true; + } + if (num_elements >= + (std::numeric_limits::max)() - delta) { + throw std::length_error("resize overflow"); + } + if ( bucket_count() >= HT_MIN_BUCKETS && + (num_elements + delta) <= settings.enlarge_threshold() ) + return did_resize; // 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 = settings.min_buckets(num_elements + delta, 0); + if ( needed_size <= bucket_count() ) // we have enough buckets + return did_resize; + + size_type resize_to = + settings.min_buckets(num_elements - num_deleted + delta, bucket_count()); + + if (resize_to < needed_size && // may double resize_to + resize_to < (std::numeric_limits::max)() / 2) { + // 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). + const size_type target = + static_cast(settings.shrink_size(resize_to*2)); + if (num_elements - num_deleted + delta >= target) { + // 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 + return true; + } + + // We require table be not-NULL and empty before calling this. + void resize_table(size_type /*old_size*/, size_type new_size, + base::true_type) { + table = val_info.realloc_or_die(table, new_size); + } + + void resize_table(size_type old_size, size_type new_size, base::false_type) { + val_info.deallocate(table, old_size); + table = val_info.allocate(new_size); + } + + // 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_to_size(settings.min_buckets(ht.size(), min_buckets_wanted)); + + // 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() + && "Hashtable is full: an error in key_equal<> or hash<>"); + } + set_value(&table[bucknum], *it); // copies the value to here + num_elements++; + } + settings.inc_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 ( settings.consider_shrink() || req_elements == 0 ) + maybe_shrink(); + if ( req_elements > num_elements ) + resize_delta(req_elements - num_elements); + } + + // Get and change the value of shrink_factor and enlarge_factor. 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 = settings.shrink_factor(); + *grow = settings.enlarge_factor(); + } + void set_resizing_parameters(float shrink, float grow) { + settings.set_resizing_parameters(shrink, grow); + settings.reset_thresholds(bucket_count()); + } + + // 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(), + const Alloc& alloc = Alloc()) + : settings(hf), + key_info(ext, set, eql), + num_deleted(0), + num_elements(0), + num_buckets(expected_max_items_in_table == 0 + ? HT_DEFAULT_STARTING_BUCKETS + : settings.min_buckets(expected_max_items_in_table, 0)), + val_info(alloc_impl(alloc)), + table(NULL) { + // 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 + settings.reset_thresholds(bucket_count()); + } + + // 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) + : settings(ht.settings), + key_info(ht.key_info), + num_deleted(0), + num_elements(0), + num_buckets(0), + val_info(ht.val_info), + table(NULL) { + if (!ht.settings.use_empty()) { + // If use_empty isn't set, copy_from will crash, so we do our own copying. + assert(ht.empty()); + num_buckets = settings.min_buckets(ht.size(), min_buckets_wanted); + settings.reset_thresholds(bucket_count()); + return; + } + settings.reset_thresholds(bucket_count()); + 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.settings.use_empty()) { + assert(ht.empty()); + dense_hashtable empty_table(ht); // empty table with ht's thresholds + this->swap(empty_table); + return *this; + } + settings = ht.settings; + key_info = ht.key_info; + set_value(&val_info.emptyval, ht.val_info.emptyval); + // copy_from() calls clear and sets num_deleted to 0 too + copy_from(ht, HT_MIN_BUCKETS); + // we purposefully don't copy the allocator, which may not be copyable + return *this; + } + + ~dense_hashtable() { + if (table) { + destroy_buckets(0, num_buckets); + val_info.deallocate(table, num_buckets); + } + } + + // Many STL algorithms use swap instead of copy constructors + void swap(dense_hashtable& ht) { + std::swap(settings, ht.settings); + std::swap(key_info, ht.key_info); + std::swap(num_deleted, ht.num_deleted); + std::swap(num_elements, ht.num_elements); + std::swap(num_buckets, ht.num_buckets); + { value_type tmp; // for annoying reasons, swap() doesn't work + set_value(&tmp, val_info.emptyval); + set_value(&val_info.emptyval, ht.val_info.emptyval); + set_value(&ht.val_info.emptyval, tmp); + } + std::swap(table, ht.table); + settings.reset_thresholds(bucket_count()); // also resets consider_shrink + ht.settings.reset_thresholds(ht.bucket_count()); + // we purposefully don't swap the allocator, which may not be swap-able + } + + private: + void clear_to_size(size_type new_num_buckets) { + if (!table) { + table = val_info.allocate(new_num_buckets); + } else { + destroy_buckets(0, num_buckets); + if (new_num_buckets != num_buckets) { // resize, if necessary + typedef base::integral_constant >::value> + realloc_ok; + resize_table(num_buckets, new_num_buckets, realloc_ok()); + } + } + assert(table); + fill_range_with_empty(table, table + new_num_buckets); + num_elements = 0; + num_deleted = 0; + num_buckets = new_num_buckets; // our new size + settings.reset_thresholds(bucket_count()); + } + + public: + // It's always nice to be able to clear a table without deallocating it + void clear() { + // If the table is already empty, and the number of buckets is + // already as we desire, there's nothing to do. + const size_type new_num_buckets = settings.min_buckets(0, 0); + if (num_elements == 0 && new_num_buckets == num_buckets) { + return; + } + clear_to_size(new_num_buckets); + } + + // 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 (num_elements > 0) { + assert(table); + destroy_buckets(0, num_buckets); + fill_range_with_empty(table, table + num_buckets); + } + // don't consider to shrink before another erase() + settings.reset_thresholds(bucket_count()); + 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 + std::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 std::pair(ILLEGAL_BUCKET, bucknum); + else + return std::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 std::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() + && "Hashtable is full: an error in key_equal<> or hash<>"); + } + } + + public: + + iterator find(const key_type& key) { + if ( size() == 0 ) return end(); + std::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(); + std::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 { + std::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 { + std::pair pos = find_position(key); + return pos.first == ILLEGAL_BUCKET ? 0 : 1; + } + + // Likewise, equal_range doesn't really make sense for us. Oh well. + std::pair equal_range(const key_type& key) { + iterator pos = find(key); // either an iterator or end + if (pos == end()) { + return std::pair(pos, pos); + } else { + const iterator startpos = pos++; + return std::pair(startpos, pos); + } + } + std::pair equal_range(const key_type& key) + const { + const_iterator pos = find(key); // either an iterator or end + if (pos == end()) { + return std::pair(pos, pos); + } else { + const const_iterator startpos = pos++; + return std::pair(startpos, pos); + } + } + + + // INSERTION ROUTINES + private: + // Private method used by insert_noresize and find_or_insert. + iterator insert_at(const_reference obj, size_type pos) { + if (size() >= max_size()) { + throw std::length_error("insert overflow"); + } + if ( test_deleted(pos) ) { // just replace if it's been del. + // shrug: shouldn't need to be const. + const_iterator delpos(this, table + pos, table + num_buckets, false); + 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], obj); + return iterator(this, table + pos, table + num_buckets, false); + } + + // If you know *this is big enough to hold obj, use this routine + std::pair insert_noresize(const_reference obj) { + // First, double-check we're not inserting delkey or emptyval + assert((!settings.use_empty() || !equals(get_key(obj), + get_key(val_info.emptyval))) + && "Inserting the empty key"); + assert((!settings.use_deleted() || !equals(get_key(obj), key_info.delkey)) + && "Inserting the deleted key"); + const std::pair pos = find_position(get_key(obj)); + if ( pos.first != ILLEGAL_BUCKET) { // object was already there + return std::pair(iterator(this, table + pos.first, + table + num_buckets, false), + false); // false: we didn't insert + } else { // pos.second says where to put it + return std::pair(insert_at(obj, pos.second), true); + } + } + + // Specializations of insert(it, it) depending on the power of the iterator: + // (1) Iterator supports operator-, resize before inserting + template + void insert(ForwardIterator f, ForwardIterator l, std::forward_iterator_tag) { + size_t dist = std::distance(f, l); + if (dist >= (std::numeric_limits::max)()) { + throw std::length_error("insert-range overflow"); + } + resize_delta(static_cast(dist)); + for ( ; dist > 0; --dist, ++f) { + insert_noresize(*f); + } + } + + // (2) Arbitrary iterator, can't tell how much to resize + template + void insert(InputIterator f, InputIterator l, std::input_iterator_tag) { + for ( ; f != l; ++f) + insert(*f); + } + + public: + // This is the normal insert routine, used by the outside world + std::pair insert(const_reference 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 std::iterator_traits::iterator_category()); + } + + // DefaultValue is a functor that takes a key and returns a value_type + // representing the default value to be inserted if none is found. + template + value_type& find_or_insert(const key_type& key) { + // First, double-check we're not inserting emptykey or delkey + assert((!settings.use_empty() || !equals(key, get_key(val_info.emptyval))) + && "Inserting the empty key"); + assert((!settings.use_deleted() || !equals(key, key_info.delkey)) + && "Inserting the deleted key"); + const std::pair pos = find_position(key); + DefaultValue default_value; + if ( pos.first != ILLEGAL_BUCKET) { // object was already there + return table[pos.first]; + } else if (resize_delta(1)) { // needed to rehash to make room + // Since we resized, we can't use pos, so recalculate where to insert. + return *insert_noresize(default_value(key)).first; + } else { // no need to rehash, insert right here + return *insert_at(default_value(key), pos.second); + } + } + + + // DELETION ROUTINES + size_type erase(const key_type& key) { + // First, double-check we're not trying to erase delkey or emptyval. + assert((!settings.use_empty() || !equals(key, get_key(val_info.emptyval))) + && "Erasing the empty key"); + assert((!settings.use_deleted() || !equals(key, key_info.delkey)) + && "Erasing the deleted key"); + 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; + settings.set_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; + settings.set_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; + } + settings.set_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; + settings.set_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; + } + settings.set_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. + private: + // Every time the disk format changes, this should probably change too + typedef unsigned long MagicNumberType; + static const MagicNumberType MAGIC_NUMBER = 0x13578642; + + public: + // I/O -- this is an add-on for writing hash table to disk + // + // INPUT and OUTPUT must be either a FILE, *or* a C++ stream + // (istream, ostream, etc) *or* a class providing + // Read(void*, size_t) and Write(const void*, size_t) + // (respectively), which writes a buffer into a stream + // (which the INPUT/OUTPUT instance presumably owns). + + typedef sparsehash_internal::pod_serializer NopointerSerializer; + + // ValueSerializer: a functor. operator()(OUTPUT*, const value_type&) + template + bool serialize(ValueSerializer serializer, OUTPUT *fp) { + squash_deleted(); // so we don't have to worry about delkey + if ( !sparsehash_internal::write_bigendian_number(fp, MAGIC_NUMBER, 4) ) + return false; + if ( !sparsehash_internal::write_bigendian_number(fp, num_buckets, 8) ) + return false; + if ( !sparsehash_internal::write_bigendian_number(fp, num_elements, 8) ) + return false; + // Now write a bitmap of non-empty buckets. + for ( size_type i = 0; i < num_buckets; i += 8 ) { + unsigned char bits = 0; + for ( int bit = 0; bit < 8; ++bit ) { + if ( i + bit < num_buckets && !test_empty(i + bit) ) + bits |= (1 << bit); + } + if ( !sparsehash_internal::write_data(fp, &bits, sizeof(bits)) ) + return false; + for ( int bit = 0; bit < 8; ++bit ) { + if ( bits & (1 << bit) ) { + if ( !serializer(fp, table[i + bit]) ) return false; + } + } + } + return true; + } + + // INPUT: anything we've written an overload of read_data() for. + // ValueSerializer: a functor. operator()(INPUT*, value_type*) + template + bool unserialize(ValueSerializer serializer, INPUT *fp) { + assert(settings.use_empty() && "empty_key not set for read"); + + clear(); // just to be consistent + MagicNumberType magic_read; + if ( !sparsehash_internal::read_bigendian_number(fp, &magic_read, 4) ) + return false; + if ( magic_read != MAGIC_NUMBER ) { + return false; + } + size_type new_num_buckets; + if ( !sparsehash_internal::read_bigendian_number(fp, &new_num_buckets, 8) ) + return false; + clear_to_size(new_num_buckets); + if ( !sparsehash_internal::read_bigendian_number(fp, &num_elements, 8) ) + return false; + + // Read the bitmap of non-empty buckets. + for (size_type i = 0; i < num_buckets; i += 8) { + unsigned char bits; + if ( !sparsehash_internal::read_data(fp, &bits, sizeof(bits)) ) + return false; + for ( int bit = 0; bit < 8; ++bit ) { + if ( i + bit < num_buckets && (bits & (1 << bit)) ) { // not empty + if ( !serializer(fp, &table[i + bit]) ) return false; + } + } + } + return true; + } + + private: + template + class alloc_impl : public A { + public: + typedef typename A::pointer pointer; + typedef typename A::size_type size_type; + + // Convert a normal allocator to one that has realloc_or_die() + alloc_impl(const A& a) : A(a) { } + + // realloc_or_die should only be used when using the default + // allocator (libc_allocator_with_realloc). + pointer realloc_or_die(pointer /*ptr*/, size_type /*n*/) { + fprintf(stderr, "realloc_or_die is only supported for " + "libc_allocator_with_realloc\n"); + exit(1); + return NULL; + } + }; + + // A template specialization of alloc_impl for + // libc_allocator_with_realloc that can handle realloc_or_die. + template + class alloc_impl > + : public libc_allocator_with_realloc { + public: + typedef typename libc_allocator_with_realloc::pointer pointer; + typedef typename libc_allocator_with_realloc::size_type size_type; + + alloc_impl(const libc_allocator_with_realloc& a) + : libc_allocator_with_realloc(a) { } + + pointer realloc_or_die(pointer ptr, size_type n) { + pointer retval = this->reallocate(ptr, n); + if (retval == NULL) { + fprintf(stderr, "sparsehash: FATAL ERROR: failed to reallocate " + "%lu elements for ptr %p", static_cast(n), ptr); + exit(1); + } + return retval; + } + }; + + // Package allocator with emptyval to eliminate memory needed for + // the zero-size allocator. + // If new fields are added to this class, we should add them to + // operator= and swap. + class ValInfo : public alloc_impl { + public: + typedef typename alloc_impl::value_type value_type; + + ValInfo(const alloc_impl& a) + : alloc_impl(a), emptyval() { } + ValInfo(const ValInfo& v) + : alloc_impl(v), emptyval(v.emptyval) { } + + value_type emptyval; // which key marks unused entries + }; + + + // Package functors with another class to eliminate memory needed for + // zero-size functors. Since ExtractKey and hasher's operator() might + // have the same function signature, they must be packaged in + // different classes. + struct Settings : + sparsehash_internal::sh_hashtable_settings { + explicit Settings(const hasher& hf) + : sparsehash_internal::sh_hashtable_settings( + hf, HT_OCCUPANCY_PCT / 100.0f, HT_EMPTY_PCT / 100.0f) {} + }; + + // Packages ExtractKey and SetKey functors. + class KeyInfo : public ExtractKey, public SetKey, public EqualKey { + public: + KeyInfo(const ExtractKey& ek, const SetKey& sk, const EqualKey& eq) + : ExtractKey(ek), + SetKey(sk), + EqualKey(eq) { + } + + // We want to return the exact same type as ExtractKey: Key or const Key& + typename ExtractKey::result_type get_key(const_reference v) const { + return ExtractKey::operator()(v); + } + void set_key(pointer v, const key_type& k) const { + SetKey::operator()(v, k); + } + bool equals(const key_type& a, const key_type& b) const { + return EqualKey::operator()(a, b); + } + + // Which key marks deleted entries. + // TODO(csilvers): make a pointer, and get rid of use_deleted (benchmark!) + typename base::remove_const::type delkey; + }; + + // Utility functions to access the templated operators + size_type hash(const key_type& v) const { + return settings.hash(v); + } + bool equals(const key_type& a, const key_type& b) const { + return key_info.equals(a, b); + } + typename ExtractKey::result_type get_key(const_reference v) const { + return key_info.get_key(v); + } + void set_key(pointer v, const key_type& k) const { + key_info.set_key(v, k); + } + + private: + // Actual data + Settings settings; + KeyInfo key_info; + + size_type num_deleted; // how many occupied buckets are marked deleted + size_type num_elements; + size_type num_buckets; + ValInfo val_info; // holds emptyval, and also the allocator + pointer table; +}; + + +// 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, via +// max_load_factor() and/or set_resizing_parameters(). +template +const int dense_hashtable::HT_OCCUPANCY_PCT = 50; + +// How empty we let the table get before we resize lower. +// It should be less than OCCUPANCY_PCT / 2 or we thrash resizing. +template +const int dense_hashtable::HT_EMPTY_PCT + = static_cast(0.4 * + dense_hashtable::HT_OCCUPANCY_PCT); + +_END_GOOGLE_NAMESPACE_ + +#endif /* _DENSEHASHTABLE_H_ */ diff --git a/deps/sparsehash/internal/hashtable-common.h b/deps/sparsehash/internal/hashtable-common.h new file mode 100644 index 000000000..d65ac7af1 --- /dev/null +++ b/deps/sparsehash/internal/hashtable-common.h @@ -0,0 +1,381 @@ +// Copyright (c) 2010, 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. + +// --- +// +// Provides classes shared by both sparse and dense hashtable. +// +// sh_hashtable_settings has parameters for growing and shrinking +// a hashtable. It also packages zero-size functor (ie. hasher). +// +// Other functions and classes provide common code for serializing +// and deserializing hashtables to a stream (such as a FILE*). + +#ifndef UTIL_GTL_HASHTABLE_COMMON_H_ +#define UTIL_GTL_HASHTABLE_COMMON_H_ + +#include +#include +#include +#include // for size_t +#include +#include // For length_error + +_START_GOOGLE_NAMESPACE_ + +template struct SparsehashCompileAssert { }; +#define SPARSEHASH_COMPILE_ASSERT(expr, msg) \ + typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] + +namespace sparsehash_internal { + +// Adaptor methods for reading/writing data from an INPUT or OUPTUT +// variable passed to serialize() or unserialize(). For now we +// have implemented INPUT/OUTPUT for FILE*, istream*/ostream* (note +// they are pointers, unlike typical use), or else a pointer to +// something that supports a Read()/Write() method. +// +// For technical reasons, we implement read_data/write_data in two +// stages. The actual work is done in *_data_internal, which takes +// the stream argument twice: once as a template type, and once with +// normal type information. (We only use the second version.) We do +// this because of how C++ picks what function overload to use. If we +// implemented this the naive way: +// bool read_data(istream* is, const void* data, size_t length); +// template read_data(T* fp, const void* data, size_t length); +// C++ would prefer the second version for every stream type except +// istream. However, we want C++ to prefer the first version for +// streams that are *subclasses* of istream, such as istringstream. +// This is not possible given the way template types are resolved. So +// we split the stream argument in two, one of which is templated and +// one of which is not. The specialized functions (like the istream +// version above) ignore the template arg and use the second, 'type' +// arg, getting subclass matching as normal. The 'catch-all' +// functions (the second version above) use the template arg to deduce +// the type, and use a second, void* arg to achieve the desired +// 'catch-all' semantics. + +// ----- low-level I/O for FILE* ---- + +template +inline bool read_data_internal(Ignored*, FILE* fp, + void* data, size_t length) { + return fread(data, length, 1, fp) == 1; +} + +template +inline bool write_data_internal(Ignored*, FILE* fp, + const void* data, size_t length) { + return fwrite(data, length, 1, fp) == 1; +} + +// ----- low-level I/O for iostream ---- + +// We want the caller to be responsible for #including , not +// us, because iostream is a big header! According to the standard, +// it's only legal to delay the instantiation the way we want to if +// the istream/ostream is a template type. So we jump through hoops. +template +inline bool read_data_internal_for_istream(ISTREAM* fp, + void* data, size_t length) { + return fp->read(reinterpret_cast(data), length).good(); +} +template +inline bool read_data_internal(Ignored*, std::istream* fp, + void* data, size_t length) { + return read_data_internal_for_istream(fp, data, length); +} + +template +inline bool write_data_internal_for_ostream(OSTREAM* fp, + const void* data, size_t length) { + return fp->write(reinterpret_cast(data), length).good(); +} +template +inline bool write_data_internal(Ignored*, std::ostream* fp, + const void* data, size_t length) { + return write_data_internal_for_ostream(fp, data, length); +} + +// ----- low-level I/O for custom streams ---- + +// The INPUT type needs to support a Read() method that takes a +// buffer and a length and returns the number of bytes read. +template +inline bool read_data_internal(INPUT* fp, void*, + void* data, size_t length) { + return static_cast(fp->Read(data, length)) == length; +} + +// The OUTPUT type needs to support a Write() operation that takes +// a buffer and a length and returns the number of bytes written. +template +inline bool write_data_internal(OUTPUT* fp, void*, + const void* data, size_t length) { + return static_cast(fp->Write(data, length)) == length; +} + +// ----- low-level I/O: the public API ---- + +template +inline bool read_data(INPUT* fp, void* data, size_t length) { + return read_data_internal(fp, fp, data, length); +} + +template +inline bool write_data(OUTPUT* fp, const void* data, size_t length) { + return write_data_internal(fp, fp, data, length); +} + +// Uses read_data() and write_data() to read/write an integer. +// length is the number of bytes to read/write (which may differ +// from sizeof(IntType), allowing us to save on a 32-bit system +// and load on a 64-bit system). Excess bytes are taken to be 0. +// INPUT and OUTPUT must match legal inputs to read/write_data (above). +template +bool read_bigendian_number(INPUT* fp, IntType* value, size_t length) { + *value = 0; + unsigned char byte; + // We require IntType to be unsigned or else the shifting gets all screwy. + SPARSEHASH_COMPILE_ASSERT(static_cast(-1) > static_cast(0), + serializing_int_requires_an_unsigned_type); + for (size_t i = 0; i < length; ++i) { + if (!read_data(fp, &byte, sizeof(byte))) return false; + *value |= static_cast(byte) << ((length - 1 - i) * 8); + } + return true; +} + +template +bool write_bigendian_number(OUTPUT* fp, IntType value, size_t length) { + unsigned char byte; + // We require IntType to be unsigned or else the shifting gets all screwy. + SPARSEHASH_COMPILE_ASSERT(static_cast(-1) > static_cast(0), + serializing_int_requires_an_unsigned_type); + for (size_t i = 0; i < length; ++i) { + byte = (sizeof(value) <= length-1 - i) + ? 0 : static_cast((value >> ((length-1 - i) * 8)) & 255); + if (!write_data(fp, &byte, sizeof(byte))) return false; + } + return true; +} + +// If your keys and values are simple enough, you can pass this +// serializer to serialize()/unserialize(). "Simple enough" means +// value_type is a POD type that contains no pointers. Note, +// however, we don't try to normalize endianness. +// This is the type used for NopointerSerializer. +template struct pod_serializer { + template + bool operator()(INPUT* fp, value_type* value) const { + return read_data(fp, value, sizeof(*value)); + } + + template + bool operator()(OUTPUT* fp, const value_type& value) const { + return write_data(fp, &value, sizeof(value)); + } +}; + + +// Settings contains parameters for growing and shrinking the table. +// It also packages zero-size functor (ie. hasher). +// +// It does some munging of the hash value in cases where we think +// (fear) the original hash function might not be very good. In +// particular, the default hash of pointers is the identity hash, +// so probably all the low bits are 0. We identify when we think +// we're hashing a pointer, and chop off the low bits. Note this +// isn't perfect: even when the key is a pointer, we can't tell +// for sure that the hash is the identity hash. If it's not, this +// is needless work (and possibly, though not likely, harmful). + +template +class sh_hashtable_settings : public HashFunc { + public: + typedef Key key_type; + typedef HashFunc hasher; + typedef SizeType size_type; + + public: + sh_hashtable_settings(const hasher& hf, + const float ht_occupancy_flt, + const float ht_empty_flt) + : hasher(hf), + enlarge_threshold_(0), + shrink_threshold_(0), + consider_shrink_(false), + use_empty_(false), + use_deleted_(false), + num_ht_copies_(0) { + set_enlarge_factor(ht_occupancy_flt); + set_shrink_factor(ht_empty_flt); + } + + size_type hash(const key_type& v) const { + // We munge the hash value when we don't trust hasher::operator(). + return hash_munger::MungedHash(hasher::operator()(v)); + } + + float enlarge_factor() const { + return enlarge_factor_; + } + void set_enlarge_factor(float f) { + enlarge_factor_ = f; + } + float shrink_factor() const { + return shrink_factor_; + } + void set_shrink_factor(float f) { + shrink_factor_ = f; + } + + size_type enlarge_threshold() const { + return enlarge_threshold_; + } + void set_enlarge_threshold(size_type t) { + enlarge_threshold_ = t; + } + size_type shrink_threshold() const { + return shrink_threshold_; + } + void set_shrink_threshold(size_type t) { + shrink_threshold_ = t; + } + + size_type enlarge_size(size_type x) const { + return static_cast(x * enlarge_factor_); + } + size_type shrink_size(size_type x) const { + return static_cast(x * shrink_factor_); + } + + bool consider_shrink() const { + return consider_shrink_; + } + void set_consider_shrink(bool t) { + consider_shrink_ = t; + } + + bool use_empty() const { + return use_empty_; + } + void set_use_empty(bool t) { + use_empty_ = t; + } + + bool use_deleted() const { + return use_deleted_; + } + void set_use_deleted(bool t) { + use_deleted_ = t; + } + + size_type num_ht_copies() const { + return static_cast(num_ht_copies_); + } + void inc_num_ht_copies() { + ++num_ht_copies_; + } + + // Reset the enlarge and shrink thresholds + void reset_thresholds(size_type num_buckets) { + set_enlarge_threshold(enlarge_size(num_buckets)); + set_shrink_threshold(shrink_size(num_buckets)); + // whatever caused us to reset already considered + set_consider_shrink(false); + } + + // Caller is resposible for calling reset_threshold right after + // set_resizing_parameters. + 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 + set_shrink_factor(shrink); + set_enlarge_factor(grow); + } + + // 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_buckets(size_type num_elts, size_type min_buckets_wanted) { + float enlarge = enlarge_factor(); + size_type sz = HT_MIN_BUCKETS; // min buckets allowed + while ( sz < min_buckets_wanted || + num_elts >= static_cast(sz * enlarge) ) { + // This just prevents overflowing size_type, since sz can exceed + // max_size() here. + if (static_cast(sz * 2) < sz) { + throw std::length_error("resize overflow"); // protect against overflow + } + sz *= 2; + } + return sz; + } + + private: + template class hash_munger { + public: + static size_t MungedHash(size_t hash) { + return hash; + } + }; + // This matches when the hashtable key is a pointer. + template class hash_munger { + public: + static size_t MungedHash(size_t hash) { + // TODO(csilvers): consider rotating instead: + // static const int shift = (sizeof(void *) == 4) ? 2 : 3; + // return (hash << (sizeof(hash) * 8) - shift)) | (hash >> shift); + // This matters if we ever change sparse/dense_hash_* to compare + // hashes before comparing actual values. It's speedy on x86. + return hash / sizeof(void*); // get rid of known-0 bits + } + }; + + size_type enlarge_threshold_; // table.size() * enlarge_factor + size_type shrink_threshold_; // table.size() * shrink_factor + float enlarge_factor_; // how full before resize + float shrink_factor_; // how empty before resize + // consider_shrink=true if we should try to shrink before next insert + bool consider_shrink_; + bool use_empty_; // used only by densehashtable, not sparsehashtable + bool use_deleted_; // false until delkey has been set + // num_ht_copies is a counter incremented every Copy/Move + unsigned int num_ht_copies_; +}; + +} // namespace sparsehash_internal + +#undef SPARSEHASH_COMPILE_ASSERT +_END_GOOGLE_NAMESPACE_ + +#endif // UTIL_GTL_HASHTABLE_COMMON_H_ diff --git a/deps/sparsehash/internal/libc_allocator_with_realloc.h b/deps/sparsehash/internal/libc_allocator_with_realloc.h new file mode 100644 index 000000000..400790444 --- /dev/null +++ b/deps/sparsehash/internal/libc_allocator_with_realloc.h @@ -0,0 +1,119 @@ +// Copyright (c) 2010, 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. + +// --- + +#ifndef UTIL_GTL_LIBC_ALLOCATOR_WITH_REALLOC_H_ +#define UTIL_GTL_LIBC_ALLOCATOR_WITH_REALLOC_H_ + +#include +#include // for malloc/realloc/free +#include // for ptrdiff_t +#include // for placement new + +_START_GOOGLE_NAMESPACE_ + +template +class libc_allocator_with_realloc { + public: + typedef T value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + + typedef T* pointer; + typedef const T* const_pointer; + typedef T& reference; + typedef const T& const_reference; + + libc_allocator_with_realloc() {} + libc_allocator_with_realloc(const libc_allocator_with_realloc&) {} + ~libc_allocator_with_realloc() {} + + pointer address(reference r) const { return &r; } + const_pointer address(const_reference r) const { return &r; } + + pointer allocate(size_type n, const_pointer = 0) { + return static_cast(malloc(n * sizeof(value_type))); + } + void deallocate(pointer p, size_type) { + free(p); + } + pointer reallocate(pointer p, size_type n) { + return static_cast(realloc(p, n * sizeof(value_type))); + } + + size_type max_size() const { + return static_cast(-1) / sizeof(value_type); + } + + void construct(pointer p, const value_type& val) { + new(p) value_type(val); + } + void destroy(pointer p) { p->~value_type(); } + + template + libc_allocator_with_realloc(const libc_allocator_with_realloc&) {} + + template + struct rebind { + typedef libc_allocator_with_realloc other; + }; +}; + +// libc_allocator_with_realloc specialization. +template<> +class libc_allocator_with_realloc { + public: + typedef void value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef void* pointer; + typedef const void* const_pointer; + + template + struct rebind { + typedef libc_allocator_with_realloc other; + }; +}; + +template +inline bool operator==(const libc_allocator_with_realloc&, + const libc_allocator_with_realloc&) { + return true; +} + +template +inline bool operator!=(const libc_allocator_with_realloc&, + const libc_allocator_with_realloc&) { + return false; +} + +_END_GOOGLE_NAMESPACE_ + +#endif // UTIL_GTL_LIBC_ALLOCATOR_WITH_REALLOC_H_ diff --git a/deps/sparsehash/internal/sparseconfig.h b/deps/sparsehash/internal/sparseconfig.h new file mode 100644 index 000000000..4bea9ac11 --- /dev/null +++ b/deps/sparsehash/internal/sparseconfig.h @@ -0,0 +1,46 @@ +/* + * 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 + +/* 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/deps/sparsehash/template_util.h b/deps/sparsehash/template_util.h new file mode 100644 index 000000000..c4d11c23c --- /dev/null +++ b/deps/sparsehash/template_util.h @@ -0,0 +1,134 @@ +// Copyright 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. + +// ---- +// +// Template metaprogramming utility functions. +// +// This code is compiled directly on many platforms, including client +// platforms like Windows, Mac, and embedded systems. Before making +// any changes here, make sure that you're not breaking any platforms. +// +// +// The names choosen here reflect those used in tr1 and the boost::mpl +// library, there are similar operations used in the Loki library as +// well. I prefer the boost names for 2 reasons: +// 1. I think that portions of the Boost libraries are more likely to +// be included in the c++ standard. +// 2. It is not impossible that some of the boost libraries will be +// included in our own build in the future. +// Both of these outcomes means that we may be able to directly replace +// some of these with boost equivalents. +// +#ifndef BASE_TEMPLATE_UTIL_H_ +#define BASE_TEMPLATE_UTIL_H_ + +#include +_START_GOOGLE_NAMESPACE_ + +// Types small_ and big_ are guaranteed such that sizeof(small_) < +// sizeof(big_) +typedef char small_; + +struct big_ { + char dummy[2]; +}; + +// Identity metafunction. +template +struct identity_ { + typedef T type; +}; + +// 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. Also define the boost::mpl versions of those names, +// true_ and false_. +typedef integral_constant true_type; +typedef integral_constant false_type; +typedef true_type true_; +typedef false_type false_; + +// if_ is a templatized conditional statement. +// if_ is a compile time evaluation of cond. +// if_<>::type contains A if cond is true, B otherwise. +template +struct if_{ + typedef A type; +}; + +template +struct if_ { + typedef B type; +}; + + +// type_equals_ is a template type comparator, similar to Loki IsSameType. +// type_equals_::value is true iff "A" is the same type as "B". +// +// New code should prefer base::is_same, defined in base/type_traits.h. +// It is functionally identical, but is_same is the standard spelling. +template +struct type_equals_ : public false_ { +}; + +template +struct type_equals_ : public true_ { +}; + +// and_ is a template && operator. +// and_::value evaluates "A::value && B::value". +template +struct and_ : public integral_constant { +}; + +// or_ is a template || operator. +// or_::value evaluates "A::value || B::value". +template +struct or_ : public integral_constant { +}; + + +_END_GOOGLE_NAMESPACE_ + +#endif // BASE_TEMPLATE_UTIL_H_ diff --git a/deps/sparsehash/type_traits.h b/deps/sparsehash/type_traits.h new file mode 100644 index 000000000..39655a84c --- /dev/null +++ b/deps/sparsehash/type_traits.h @@ -0,0 +1,342 @@ +// 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. + +// ---- +// +// This code is compiled directly on many platforms, including client +// platforms like Windows, Mac, and embedded systems. Before making +// any changes here, make sure that you're not breaking any platforms. +// +// Define a small subset of tr1 type traits. The traits we define are: +// is_integral +// is_floating_point +// is_pointer +// is_enum +// is_reference +// is_pod +// has_trivial_constructor +// has_trivial_copy +// has_trivial_assign +// has_trivial_destructor +// remove_const +// remove_volatile +// remove_cv +// remove_reference +// add_reference +// remove_pointer +// is_same +// is_convertible +// We can add more type traits as required. + +#ifndef BASE_TYPE_TRAITS_H_ +#define BASE_TYPE_TRAITS_H_ + +#include +#include // For pair + +#include // For true_type and false_type + +_START_GOOGLE_NAMESPACE_ + +template struct is_integral; +template struct is_floating_point; +template struct is_pointer; +// MSVC can't compile this correctly, and neither can gcc 3.3.5 (at least) +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +// is_enum uses is_convertible, which is not available on MSVC. +template struct is_enum; +#endif +template struct is_reference; +template struct is_pod; +template struct has_trivial_constructor; +template struct has_trivial_copy; +template struct has_trivial_assign; +template struct has_trivial_destructor; +template struct remove_const; +template struct remove_volatile; +template struct remove_cv; +template struct remove_reference; +template struct add_reference; +template struct remove_pointer; +template struct is_same; +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +template struct is_convertible; +#endif + +// is_integral is false except for the built-in integer types. A +// cv-qualified type is integral if and only if the underlying type is. +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 +template struct is_integral : is_integral { }; +template struct is_integral : is_integral { }; +template struct is_integral : is_integral { }; + +// is_floating_point is false except for the built-in floating-point types. +// A cv-qualified type is integral if and only if the underlying type is. +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 { }; +template struct is_floating_point + : is_floating_point { }; +template struct is_floating_point + : is_floating_point { }; +template struct is_floating_point + : is_floating_point { }; + +// is_pointer is false except for pointer types. A cv-qualified type (e.g. +// "int* const", as opposed to "int const*") is cv-qualified if and only if +// the underlying type is. +template struct is_pointer : false_type { }; +template struct is_pointer : true_type { }; +template struct is_pointer : is_pointer { }; +template struct is_pointer : is_pointer { }; +template struct is_pointer : is_pointer { }; + +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + +namespace internal { + +template struct is_class_or_union { + template static small_ tester(void (U::*)()); + template static big_ tester(...); + static const bool value = sizeof(tester(0)) == sizeof(small_); +}; + +// is_convertible chokes if the first argument is an array. That's why +// we use add_reference here. +template struct is_enum_impl + : is_convertible::type, int> { }; + +template struct is_enum_impl : false_type { }; + +} // namespace internal + +// Specified by TR1 [4.5.1] primary type categories. + +// Implementation note: +// +// Each type is either void, integral, floating point, array, pointer, +// reference, member object pointer, member function pointer, enum, +// union or class. Out of these, only integral, floating point, reference, +// class and enum types are potentially convertible to int. Therefore, +// if a type is not a reference, integral, floating point or class and +// is convertible to int, it's a enum. Adding cv-qualification to a type +// does not change whether it's an enum. +// +// Is-convertible-to-int check is done only if all other checks pass, +// because it can't be used with some types (e.g. void or classes with +// inaccessible conversion operators). +template struct is_enum + : internal::is_enum_impl< + is_same::value || + is_integral::value || + is_floating_point::value || + is_reference::value || + internal::is_class_or_union::value, + T> { }; + +template struct is_enum : is_enum { }; +template struct is_enum : is_enum { }; +template struct is_enum : is_enum { }; + +#endif + +// 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, enumerations, +// pointers and cv-qualified versions thereof. Note that std::pair +// is not a POD even if T and U are PODs. +template struct is_pod + : integral_constant::value || + is_floating_point::value || +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + // is_enum is not available on MSVC. + is_enum::value || +#endif + is_pointer::value)> { }; +template struct is_pod : is_pod { }; +template struct is_pod : is_pod { }; +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] Reference modifications. +template struct remove_reference { typedef T type; }; +template struct remove_reference { typedef T type; }; + +template struct add_reference { typedef T& type; }; +template struct add_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 +template struct is_same : public false_type { }; +template struct is_same : public true_type { }; + +// Specified by TR1 [4.6] Relationships between types +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +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_ + +// Right now these macros are no-ops, and mostly just document the fact +// these types are PODs, for human use. They may be made more contentful +// later. The typedef is just to make it legal to put a semicolon after +// these macros. +#define DECLARE_POD(TypeName) typedef int Dummy_Type_For_DECLARE_POD +#define DECLARE_NESTED_POD(TypeName) DECLARE_POD(TypeName) +#define PROPAGATE_POD_FROM_TEMPLATE_ARGUMENT(TemplateName) \ + typedef int Dummy_Type_For_PROPAGATE_POD_FROM_TEMPLATE_ARGUMENT +#define ENFORCE_POD(TypeName) typedef int Dummy_Type_For_ENFORCE_POD + +#endif // BASE_TYPE_TRAITS_H_ diff --git a/include/mapnik/hextree.hpp b/include/mapnik/hextree.hpp index 20aa7e689..b64aef1fa 100644 --- a/include/mapnik/hextree.hpp +++ b/include/mapnik/hextree.hpp @@ -30,7 +30,6 @@ // boost #include -#include #if BOOST_VERSION >= 104600 #include #endif @@ -131,7 +130,6 @@ class hextree : private mapnik::noncopyable // index remaping of sorted_pal_ indexes to indexes of returned image palette std::vector pal_remap_; // rgba hashtable for quantization - typedef boost::unordered_map rgba_hash_table; mutable rgba_hash_table color_hashmap_; // gamma correction to prioritize dark colors (>1.0) double gamma_; @@ -152,9 +150,16 @@ public: colors_(0), has_holes_(false), root_(new node()), +#ifdef USE_DENSE_HASH_MAP + // TODO - test for any benefit to initializing at a larger size + color_hashmap_(), +#endif trans_mode_(FULL_TRANSPARENCY) { setGamma(g); +#ifdef USE_DENSE_HASH_MAP + color_hashmap_.set_empty_key(0); +#endif } ~hextree() @@ -237,9 +242,9 @@ public: } // return color index in returned earlier palette - int quantize(rgba const& c) const + int quantize(unsigned val) const { - byte a = preprocessAlpha(c.a); + byte a = preprocessAlpha(U2ALPHA(val)); unsigned ind=0; if (a < InsertPolicy::MIN_ALPHA || colors_ == 0) { @@ -250,9 +255,10 @@ public: return pal_remap_[has_holes_?1:0]; } - rgba_hash_table::iterator it = color_hashmap_.find(c); + rgba_hash_table::iterator it = color_hashmap_.find(val); if (it == color_hashmap_.end()) { + rgba c(val); int dr, dg, db, da; int dist, newdist; @@ -312,7 +318,7 @@ public: } } //put found index in hash map - color_hashmap_[c] = ind; + color_hashmap_[val] = ind; } else { diff --git a/include/mapnik/octree.hpp b/include/mapnik/octree.hpp index c2ec49f2c..be09d98dd 100644 --- a/include/mapnik/octree.hpp +++ b/include/mapnik/octree.hpp @@ -174,9 +174,10 @@ public: } } - int quantize(rgb const& c) const + int quantize(unsigned val) const { unsigned level = 0; + rgb c(val); node * cur_node = root_; while (cur_node) { diff --git a/include/mapnik/palette.hpp b/include/mapnik/palette.hpp index 340bcac62..998fd2bc8 100644 --- a/include/mapnik/palette.hpp +++ b/include/mapnik/palette.hpp @@ -28,16 +28,19 @@ #include #include -// boost -#include +#define USE_DENSE_HASH_MAP + +#ifdef USE_DENSE_HASH_MAP + #include "deps/sparsehash/dense_hash_map" + typedef google::dense_hash_map rgba_hash_table; +#else + #warning compiling without dense_hash_map + #include + typedef boost::unordered_map rgba_hash_table; +#endif // stl #include -#include -#include -#include -#include - #ifdef MAPNIK_BIG_ENDIAN #define U2RED(x) (((x)>>24)&0xff) @@ -101,31 +104,15 @@ struct rgba return r == y.r && g == y.g && b == y.b && a == y.a; } - inline operator unsigned() const - { -#ifdef MAPNIK_BIG_ENDIAN - return (r << 24) | (g << 16) | (b << 8) | a; -#else - return r | (g << 8) | (b << 16) | (a << 24); -#endif - } - // ordering by mean(a,r,g,b), a, r, g, b struct mean_sort_cmp { bool operator() (const rgba& x, const rgba& y) const; }; - struct hash_func : public std::unary_function - { - std::size_t operator()(rgba const& p) const; - }; }; -typedef boost::unordered_map rgba_hash_table; - - class MAPNIK_DECL rgba_palette : private mapnik::noncopyable { public: enum palette_type { PALETTE_RGBA = 0, PALETTE_RGB = 1, PALETTE_ACT = 2 }; @@ -136,18 +123,7 @@ public: const std::vector& palette() const; const std::vector& alphaTable() const; - unsigned char quantize(rgba const& c) const; - inline unsigned char quantize(unsigned const& c) const - { - rgba_hash_table::const_iterator it = color_hashmap_.find(c); - if (it != color_hashmap_.end()) - { - return it->second; - } - else { - return quantize(rgba(U2RED(c), U2GREEN(c), U2BLUE(c), U2ALPHA(c))); - } - } + unsigned char quantize(unsigned c) const; bool valid() const; std::string to_string() const; diff --git a/include/mapnik/png_io.hpp b/include/mapnik/png_io.hpp index 25bd8d97b..d23ed715d 100644 --- a/include/mapnik/png_io.hpp +++ b/include/mapnik/png_io.hpp @@ -156,14 +156,13 @@ void reduce_8(T const& in, for (unsigned x = 0; x < width; ++x) { unsigned val = row[x]; - mapnik::rgb c(U2RED(val), U2GREEN(val), U2BLUE(val)); byte index = 0; int idx = -1; for(int j=levels-1; j>0; j--) { if (U2ALPHA(val)>=limits[j] && trees[j].colors()>0) { - index = idx = trees[j].quantize(c); + index = idx = trees[j].quantize(val); break; } } @@ -208,14 +207,13 @@ void reduce_4(T const& in, for (unsigned x = 0; x < width; ++x) { unsigned val = row[x]; - mapnik::rgb c(U2RED(val), U2GREEN(val), U2BLUE(val)); byte index = 0; int idx=-1; for(int j=levels-1; j>0; j--) { if (U2ALPHA(val)>=limits[j] && trees[j].colors()>0) { - index = idx = trees[j].quantize(c); + index = idx = trees[j].quantize(val); break; } } diff --git a/src/palette.cpp b/src/palette.cpp index 1829015a3..f85725962 100644 --- a/src/palette.cpp +++ b/src/palette.cpp @@ -47,21 +47,22 @@ bool rgba::mean_sort_cmp::operator() (const rgba& x, const rgba& y) const return x.b < y.b; } -std::size_t rgba::hash_func::operator()(rgba const& p) const -{ - return ((std::size_t)p.r * 33023 + (std::size_t)p.g * 30013 + - (std::size_t)p.b * 27011 + (std::size_t)p.a * 24007) % 21001; -} - - rgba_palette::rgba_palette(std::string const& pal, palette_type type) : colors_(0) { +#ifdef USE_DENSE_HASH_MAP + color_hashmap_.set_empty_key(0); +#endif parse(pal, type); } rgba_palette::rgba_palette() - : colors_(0) {} + : colors_(0) +{ +#ifdef USE_DENSE_HASH_MAP + color_hashmap_.set_empty_key(0); +#endif +} const std::vector& rgba_palette::palette() const { @@ -105,18 +106,19 @@ std::string rgba_palette::to_string() const } // return color index in returned earlier palette -unsigned char rgba_palette::quantize(rgba const& c) const +unsigned char rgba_palette::quantize(unsigned val) const { unsigned char index = 0; - if (colors_ == 1) return index; + if (colors_ == 1 || val == 0) return index; - rgba_hash_table::iterator it = color_hashmap_.find(c); + rgba_hash_table::iterator it = color_hashmap_.find(val); if (it != color_hashmap_.end()) { index = it->second; } else { + rgba c(val); int dr, dg, db, da; int dist, newdist; @@ -173,7 +175,7 @@ unsigned char rgba_palette::quantize(rgba const& c) const } // Cache found index for the color c into the hashmap. - color_hashmap_[c] = index; + color_hashmap_[val] = index; } return index; @@ -196,7 +198,6 @@ void rgba_palette::parse(std::string const& pal, palette_type type) } sorted_pal_.clear(); - color_hashmap_.clear(); rgb_pal_.clear(); alpha_pal_.clear(); @@ -223,6 +224,11 @@ void rgba_palette::parse(std::string const& pal, palette_type type) colors_ = sorted_pal_.size(); +#ifdef USE_DENSE_HASH_MAP + color_hashmap_.resize((colors_*2)); +#endif + color_hashmap_.clear(); + // Sort palette for binary searching in quantization std::sort(sorted_pal_.begin(), sorted_pal_.end(), rgba::mean_sort_cmp()); @@ -230,7 +236,11 @@ void rgba_palette::parse(std::string const& pal, palette_type type) for (unsigned i = 0; i < colors_; i++) { rgba c = sorted_pal_[i]; - color_hashmap_[c] = i; + unsigned val = c.r | (c.g << 8) | (c.b << 16) | (c.a << 24); + if (val != 0) + { + color_hashmap_[val] = i; + } rgb_pal_.push_back(rgb(c)); if (c.a < 0xFF) {