From 774dadfe9aedc9fed98df69abcc83a3068bdf06b Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Fri, 16 Aug 2013 12:39:21 -0500 Subject: [PATCH] Change bloom filter's dependence on size_t. That type can vary across platforms, but factored in to a bloom filter's internal state, e.g. size of the seed. --- src/probabilistic/BitVector.cc | 6 ++---- src/probabilistic/BitVector.h | 4 ++-- src/probabilistic/BloomFilter.cc | 4 ++-- src/probabilistic/CounterVector.cc | 2 +- src/probabilistic/CounterVector.h | 2 +- src/probabilistic/Hasher.cc | 4 ++-- src/probabilistic/Hasher.h | 2 +- 7 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/probabilistic/BitVector.cc b/src/probabilistic/BitVector.cc index e8c2b2f80e..78c0407727 100644 --- a/src/probabilistic/BitVector.cc +++ b/src/probabilistic/BitVector.cc @@ -492,10 +492,8 @@ BitVector::size_type BitVector::FindNext(size_type i) const return block ? bi * bits_per_block + lowest_bit(block) : find_from(bi + 1); } -size_t BitVector::Hash() const +uint64_t BitVector::Hash() const { - size_t hash = 0; - u_char buf[SHA256_DIGEST_LENGTH]; SHA256_CTX ctx; sha256_init(&ctx); @@ -504,7 +502,7 @@ size_t BitVector::Hash() const sha256_update(&ctx, &bits[i], sizeof(bits[i])); sha256_final(&ctx, buf); - return *reinterpret_cast(buf); // Use the first bytes as seed. + return *reinterpret_cast(buf); // Use the first bytes as seed. } BitVector::size_type BitVector::lowest_bit(block_type block) diff --git a/src/probabilistic/BitVector.h b/src/probabilistic/BitVector.h index 8e24336345..6ca0cd506a 100644 --- a/src/probabilistic/BitVector.h +++ b/src/probabilistic/BitVector.h @@ -15,7 +15,7 @@ namespace probabilistic { */ class BitVector : public SerialObj { public: - typedef size_t block_type; + typedef uint64_t block_type; typedef size_t size_type; typedef bool const_reference; @@ -281,7 +281,7 @@ public: * * @return The hash. */ - size_t Hash() const; + uint64_t Hash() const; /** * Serializes the bit vector. diff --git a/src/probabilistic/BloomFilter.cc b/src/probabilistic/BloomFilter.cc index bcab6c9b54..4d5c5171ec 100644 --- a/src/probabilistic/BloomFilter.cc +++ b/src/probabilistic/BloomFilter.cc @@ -111,7 +111,7 @@ BasicBloomFilter* BasicBloomFilter::Clone() const std::string BasicBloomFilter::InternalState() const { - return fmt("%" PRIu64, (uint64_t)bits->Hash()); + return fmt("%" PRIu64, bits->Hash()); } BasicBloomFilter::BasicBloomFilter() @@ -219,7 +219,7 @@ CountingBloomFilter* CountingBloomFilter::Clone() const string CountingBloomFilter::InternalState() const { - return fmt("%" PRIu64, (uint64_t)cells->Hash()); + return fmt("%" PRIu64, cells->Hash()); } IMPLEMENT_SERIAL(CountingBloomFilter, SER_COUNTINGBLOOMFILTER) diff --git a/src/probabilistic/CounterVector.cc b/src/probabilistic/CounterVector.cc index 8a6feae5fd..c1eea18d96 100644 --- a/src/probabilistic/CounterVector.cc +++ b/src/probabilistic/CounterVector.cc @@ -153,7 +153,7 @@ CounterVector operator|(const CounterVector& x, const CounterVector& y) } -size_t CounterVector::Hash() const +uint64_t CounterVector::Hash() const { return bits->Hash(); } diff --git a/src/probabilistic/CounterVector.h b/src/probabilistic/CounterVector.h index 9ce522d61c..1748feb17b 100644 --- a/src/probabilistic/CounterVector.h +++ b/src/probabilistic/CounterVector.h @@ -131,7 +131,7 @@ public: * * @return The hash. */ - size_t Hash() const; + uint64_t Hash() const; /** * Serializes the bit vector. diff --git a/src/probabilistic/Hasher.cc b/src/probabilistic/Hasher.cc index f5b1f4f5f7..3e42ef95ce 100644 --- a/src/probabilistic/Hasher.cc +++ b/src/probabilistic/Hasher.cc @@ -10,7 +10,7 @@ using namespace probabilistic; -size_t Hasher::MakeSeed(const void* data, size_t size) +uint64_t Hasher::MakeSeed(const void* data, size_t size) { u_char buf[SHA256_DIGEST_LENGTH]; SHA256_CTX ctx; @@ -29,7 +29,7 @@ size_t Hasher::MakeSeed(const void* data, size_t size) } sha256_final(&ctx, buf); - return *reinterpret_cast(buf); // Use the first bytes as seed. + return *reinterpret_cast(buf); // Use the first bytes as seed. } Hasher::digest_vector Hasher::Hash(const HashKey* key) const diff --git a/src/probabilistic/Hasher.h b/src/probabilistic/Hasher.h index a3322f5e37..c82858ded1 100644 --- a/src/probabilistic/Hasher.h +++ b/src/probabilistic/Hasher.h @@ -30,7 +30,7 @@ public: * * @return A seed suitable for hashers. */ - static size_t MakeSeed(const void* data, size_t size); + static uint64_t MakeSeed(const void* data, size_t size); /** * Destructor.