Merge remote-tracking branch 'origin/master' into topic/bernhard/hyperloglog

Conflicts:
	src/Func.cc
	src/probabilistic/CMakeLists.txt
This commit is contained in:
Bernhard Amann 2013-07-25 14:46:38 -07:00
commit 32c2885742
29 changed files with 10374 additions and 107 deletions

View file

@ -141,6 +141,8 @@ public:
void Add(const Val* val);
size_t Count(const Val* val) const;
void Clear();
bool Empty() const;
static BloomFilterVal* Merge(const BloomFilterVal* x,
const BloomFilterVal* y);
@ -157,28 +159,6 @@ private:
BloomFilterVal(const BloomFilterVal&);
BloomFilterVal& operator=(const BloomFilterVal&);
template <typename T>
static BloomFilterVal* DoMerge(const BloomFilterVal* x,
const BloomFilterVal* y)
{
if ( typeid(*x->bloom_filter) != typeid(*y->bloom_filter) )
reporter->InternalError("cannot merge different Bloom filter types");
if ( typeid(T) != typeid(*x->bloom_filter) )
return 0;
const T* a = static_cast<const T*>(x->bloom_filter);
const T* b = static_cast<const T*>(y->bloom_filter);
BloomFilterVal* merged = new BloomFilterVal(T::Merge(a, b));
assert(merged);
if ( ! merged->Typify(x->Type()) )
reporter->InternalError("failed to set type on merged Bloom filter");
return merged;
}
BroType* type;
CompositeHash* hash;
probabilistic::BloomFilter* bloom_filter;