Move probabilistic code into zeek namespaces

This commit is contained in:
Tim Wojtulewicz 2020-08-01 10:48:36 -07:00
parent be92bd536f
commit f310795d79
17 changed files with 162 additions and 118 deletions

View file

@ -706,7 +706,7 @@ BloomFilterVal::BloomFilterVal()
bloom_filter = nullptr;
}
BloomFilterVal::BloomFilterVal(probabilistic::BloomFilter* bf)
BloomFilterVal::BloomFilterVal(zeek::probabilistic::BloomFilter* bf)
: OpaqueVal(bloomfilter_type)
{
hash = nullptr;
@ -784,7 +784,7 @@ BloomFilterValPtr BloomFilterVal::Merge(const BloomFilterVal* x,
return nullptr;
}
probabilistic::BloomFilter* copy = x->bloom_filter->Clone();
zeek::probabilistic::BloomFilter* copy = x->bloom_filter->Clone();
if ( ! copy->Merge(y->bloom_filter) )
{
@ -851,7 +851,7 @@ bool BloomFilterVal::DoUnserialize(const broker::data& data)
return false;
}
auto bf = probabilistic::BloomFilter::Unserialize((*v)[1]);
auto bf = zeek::probabilistic::BloomFilter::Unserialize((*v)[1]);
if ( ! bf )
return false;
@ -865,7 +865,7 @@ CardinalityVal::CardinalityVal() : OpaqueVal(cardinality_type)
hash = nullptr;
}
CardinalityVal::CardinalityVal(probabilistic::CardinalityCounter* arg_c)
CardinalityVal::CardinalityVal(zeek::probabilistic::detail::CardinalityCounter* arg_c)
: OpaqueVal(cardinality_type)
{
c = arg_c;
@ -881,7 +881,7 @@ CardinalityVal::~CardinalityVal()
ValPtr CardinalityVal::DoClone(CloneState* state)
{
return state->NewClone(this,
zeek::make_intrusive<CardinalityVal>(new probabilistic::CardinalityCounter(*c)));
zeek::make_intrusive<CardinalityVal>(new zeek::probabilistic::detail::CardinalityCounter(*c)));
}
bool CardinalityVal::Typify(zeek::TypePtr arg_type)
@ -945,7 +945,7 @@ bool CardinalityVal::DoUnserialize(const broker::data& data)
return false;
}
auto cu = probabilistic::CardinalityCounter::Unserialize((*v)[1]);
auto cu = zeek::probabilistic::detail::CardinalityCounter::Unserialize((*v)[1]);
if ( ! cu )
return false;

View file

@ -14,10 +14,8 @@
namespace broker { class data; }
namespace probabilistic {
class BloomFilter;
class CardinalityCounter;
}
ZEEK_FORWARD_DECLARE_NAMESPACED(BloomFilter, zeek, probabilistic);
ZEEK_FORWARD_DECLARE_NAMESPACED(CardinalityCounter, zeek, probabilistic, detail);
namespace zeek {
@ -306,7 +304,7 @@ private:
class BloomFilterVal : public OpaqueVal {
public:
explicit BloomFilterVal(probabilistic::BloomFilter* bf);
explicit BloomFilterVal(zeek::probabilistic::BloomFilter* bf);
~BloomFilterVal() override;
ValPtr DoClone(CloneState* state) override;
@ -337,13 +335,13 @@ private:
zeek::TypePtr type;
zeek::detail::CompositeHash* hash;
probabilistic::BloomFilter* bloom_filter;
zeek::probabilistic::BloomFilter* bloom_filter;
};
class CardinalityVal : public OpaqueVal {
public:
explicit CardinalityVal(probabilistic::CardinalityCounter*);
explicit CardinalityVal(zeek::probabilistic::detail::CardinalityCounter*);
~CardinalityVal() override;
ValPtr DoClone(CloneState* state) override;
@ -355,7 +353,7 @@ public:
bool Typify(zeek::TypePtr type);
probabilistic::CardinalityCounter* Get() { return c; };
zeek::probabilistic::detail::CardinalityCounter* Get() { return c; };
protected:
CardinalityVal();
@ -364,7 +362,7 @@ protected:
private:
zeek::TypePtr type;
zeek::detail::CompositeHash* hash;
probabilistic::CardinalityCounter* c;
zeek::probabilistic::detail::CardinalityCounter* c;
};
class ParaglobVal : public OpaqueVal {

View file

@ -10,7 +10,7 @@
#include "digest.h"
using namespace probabilistic;
namespace zeek::probabilistic::detail {
BitVector::size_type BitVector::npos = static_cast<BitVector::size_type>(-1);
BitVector::block_type BitVector::bits_per_block =
@ -263,8 +263,6 @@ BitVector& BitVector::operator-=(BitVector const& other)
return *this;
}
namespace probabilistic {
BitVector operator&(BitVector const& x, BitVector const& y)
{
BitVector b(x);
@ -318,8 +316,6 @@ bool operator<(BitVector const& x, BitVector const& y)
return false;
}
}
void BitVector::Resize(size_type n, bool value)
{
size_type old = Blocks();
@ -581,3 +577,5 @@ BitVector::size_type BitVector::find_from(size_type i) const
return i * bits_per_block + lowest_bit(bits[i]);
}
} // namespace zeek::probabilistic::detail

View file

@ -10,7 +10,7 @@
namespace broker { class data; }
namespace probabilistic {
namespace zeek::probabilistic::detail {
/**
* A vector of bits.
@ -356,4 +356,8 @@ private:
size_type num_bits;
};
} // namespace zeek::probabilistic::detail
namespace probabilistic {
using BitVector [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::BitVector.")]] = zeek::probabilistic::detail::BitVector;
}

View file

@ -13,14 +13,14 @@
#include "../util.h"
#include "../Reporter.h"
using namespace probabilistic;
namespace zeek::probabilistic {
BloomFilter::BloomFilter()
{
hasher = nullptr;
}
BloomFilter::BloomFilter(const Hasher* arg_hasher)
BloomFilter::BloomFilter(const detail::Hasher* arg_hasher)
{
hasher = arg_hasher;
}
@ -56,7 +56,7 @@ std::unique_ptr<BloomFilter> BloomFilter::Unserialize(const broker::data& data)
if ( ! type )
return nullptr;
auto hasher_ = Hasher::Unserialize((*v)[1]);
auto hasher_ = detail::Hasher::Unserialize((*v)[1]);
if ( ! hasher_ )
return nullptr;
@ -130,7 +130,7 @@ BasicBloomFilter* BasicBloomFilter::Clone() const
BasicBloomFilter* copy = new BasicBloomFilter();
copy->hasher = hasher->Clone();
copy->bits = new BitVector(*bits);
copy->bits = new detail::BitVector(*bits);
return copy;
}
@ -145,10 +145,10 @@ BasicBloomFilter::BasicBloomFilter()
bits = nullptr;
}
BasicBloomFilter::BasicBloomFilter(const Hasher* hasher, size_t cells)
BasicBloomFilter::BasicBloomFilter(const detail::Hasher* hasher, size_t cells)
: BloomFilter(hasher)
{
bits = new BitVector(cells);
bits = new detail::BitVector(cells);
}
BasicBloomFilter::~BasicBloomFilter()
@ -158,7 +158,7 @@ BasicBloomFilter::~BasicBloomFilter()
void BasicBloomFilter::Add(const zeek::detail::HashKey* key)
{
Hasher::digest_vector h = hasher->Hash(key);
detail::Hasher::digest_vector h = hasher->Hash(key);
for ( size_t i = 0; i < h.size(); ++i )
bits->Set(h[i] % bits->Size());
@ -166,7 +166,7 @@ void BasicBloomFilter::Add(const zeek::detail::HashKey* key)
size_t BasicBloomFilter::Count(const zeek::detail::HashKey* key) const
{
Hasher::digest_vector h = hasher->Hash(key);
detail::Hasher::digest_vector h = hasher->Hash(key);
for ( size_t i = 0; i < h.size(); ++i )
{
@ -185,7 +185,7 @@ broker::expected<broker::data> BasicBloomFilter::DoSerialize() const
bool BasicBloomFilter::DoUnserialize(const broker::data& data)
{
auto b = BitVector::Unserialize(data);
auto b = detail::BitVector::Unserialize(data);
if ( ! b )
return false;
@ -198,11 +198,11 @@ CountingBloomFilter::CountingBloomFilter()
cells = nullptr;
}
CountingBloomFilter::CountingBloomFilter(const Hasher* hasher,
size_t arg_cells, size_t width)
CountingBloomFilter::CountingBloomFilter(const detail::Hasher* hasher,
size_t arg_cells, size_t width)
: BloomFilter(hasher)
{
cells = new CounterVector(width, arg_cells);
cells = new detail::CounterVector(width, arg_cells);
}
CountingBloomFilter::~CountingBloomFilter()
@ -249,7 +249,7 @@ CountingBloomFilter* CountingBloomFilter::Clone() const
CountingBloomFilter* copy = new CountingBloomFilter();
copy->hasher = hasher->Clone();
copy->cells = new CounterVector(*cells);
copy->cells = new detail::CounterVector(*cells);
return copy;
}
@ -262,7 +262,7 @@ std::string CountingBloomFilter::InternalState() const
// TODO: Use partitioning in add/count to allow for reusing CMS bounds.
void CountingBloomFilter::Add(const zeek::detail::HashKey* key)
{
Hasher::digest_vector h = hasher->Hash(key);
detail::Hasher::digest_vector h = hasher->Hash(key);
for ( size_t i = 0; i < h.size(); ++i )
cells->Increment(h[i] % cells->Size());
@ -270,14 +270,14 @@ void CountingBloomFilter::Add(const zeek::detail::HashKey* key)
size_t CountingBloomFilter::Count(const zeek::detail::HashKey* key) const
{
Hasher::digest_vector h = hasher->Hash(key);
detail::Hasher::digest_vector h = hasher->Hash(key);
CounterVector::size_type min =
std::numeric_limits<CounterVector::size_type>::max();
detail::CounterVector::size_type min =
std::numeric_limits<detail::CounterVector::size_type>::max();
for ( size_t i = 0; i < h.size(); ++i )
{
CounterVector::size_type cnt = cells->Count(h[i] % cells->Size());
detail::CounterVector::size_type cnt = cells->Count(h[i] % cells->Size());
if ( cnt < min )
min = cnt;
}
@ -293,10 +293,12 @@ broker::expected<broker::data> CountingBloomFilter::DoSerialize() const
bool CountingBloomFilter::DoUnserialize(const broker::data& data)
{
auto c = CounterVector::Unserialize(data);
auto c = detail::CounterVector::Unserialize(data);
if ( ! c )
return false;
cells = c.release();
return true;
}
} // namespace zeek::probabilistic

View file

@ -2,6 +2,8 @@
#pragma once
#include "zeek-config.h"
#include <memory>
#include <vector>
#include <string>
@ -13,9 +15,9 @@
namespace broker { class data; }
namespace probabilistic {
ZEEK_FORWARD_DECLARE_NAMESPACED(CounterVector, zeek, probabilistic, detail);
class CounterVector;
namespace zeek::probabilistic {
/** Types of derived BloomFilter classes. */
enum BloomFilterType { Basic, Counting };
@ -94,13 +96,13 @@ protected:
*
* @param hasher The hasher to use for this Bloom filter.
*/
explicit BloomFilter(const Hasher* hasher);
explicit BloomFilter(const detail::Hasher* hasher);
virtual broker::expected<broker::data> DoSerialize() const = 0;
virtual bool DoUnserialize(const broker::data& data) = 0;
virtual BloomFilterType Type() const = 0;
const Hasher* hasher;
const detail::Hasher* hasher;
};
/**
@ -117,7 +119,7 @@ public:
*
* @param cells The number of cells.
*/
BasicBloomFilter(const Hasher* hasher, size_t cells);
BasicBloomFilter(const detail::Hasher* hasher, size_t cells);
/**
* Destructor.
@ -176,7 +178,7 @@ protected:
{ return BloomFilterType::Basic; }
private:
BitVector* bits;
detail::BitVector* bits;
};
/**
@ -194,7 +196,7 @@ public:
*
* @param width The maximal bit-width of counter values.
*/
CountingBloomFilter(const Hasher* hasher, size_t cells, size_t width);
CountingBloomFilter(const detail::Hasher* hasher, size_t cells, size_t width);
/**
* Destructor.
@ -225,7 +227,19 @@ protected:
{ return BloomFilterType::Counting; }
private:
CounterVector* cells;
detail::CounterVector* cells;
};
}
} // namespace zeek::probabilistic
namespace probabilistic {
using BloomFilterType [[deprecated("Remove in v4.1. Use zeek::probabilistic::BloomFilterType.")]] = zeek::probabilistic::BloomFilterType;
constexpr auto Basic [[deprecated("Remove in v4.1. Use zeek::probabilistic::Basic.")]] = zeek::probabilistic::Basic;
constexpr auto Counting [[deprecated("Remove in v4.1. Use zeek::probabilistic::Counting.")]] = zeek::probabilistic::Counting;
using BloomFilter [[deprecated("Remove in v4.1. Use zeek::probabilistic::BloomFilter.")]] = zeek::probabilistic::BloomFilter;
using BasicBloomFilter [[deprecated("Remove in v4.1. Use zeek::probabilistic::BasicBloomFilter.")]] = zeek::probabilistic::BasicBloomFilter;
using CountingBloomFilter [[deprecated("Remove in v4.1. Use zeek::probabilistic::CountingBloomFilter.")]] = zeek::probabilistic::CountingBloomFilter;
} // namespace probabilistic

View file

@ -10,7 +10,7 @@
#include "Reporter.h"
using namespace probabilistic;
namespace zeek::probabilistic::detail {
int CardinalityCounter::OptimalB(double error, double confidence) const
{
@ -279,14 +279,15 @@ std::unique_ptr<CardinalityCounter> CardinalityCounter::Unserialize(const broker
/*
* Find Last Set bit
*/
int
CardinalityCounter::flsll(uint64_t mask)
{
int bit;
int CardinalityCounter::flsll(uint64_t mask)
{
int bit;
if (mask == 0)
return (0);
for (bit = 1; mask != 1; bit++)
mask = (uint64_t)mask >> 1;
return (bit);
}
if (mask == 0)
return (0);
for (bit = 1; mask != 1; bit++)
mask = (uint64_t)mask >> 1;
return (bit);
}
} // namespace zeek::probabilistic::detail

View file

@ -11,7 +11,7 @@
namespace broker { class data; }
namespace probabilistic {
namespace zeek::probabilistic::detail {
/**
* A probabilistic cardinality counter using the HyperLogLog algorithm.
@ -186,4 +186,8 @@ private:
int p; // the log2 of m
};
} // namespace zeek::probabilistic::detail
namespace probabilistic {
using CardinalityCounter [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::CardinalityCounter.")]] = zeek::probabilistic::detail::CardinalityCounter;
}

View file

@ -11,7 +11,7 @@
#include "BitVector.h"
#include "util.h"
using namespace probabilistic;
namespace zeek::probabilistic::detail {
CounterVector::CounterVector(size_t arg_width, size_t cells)
{
@ -143,8 +143,6 @@ CounterVector& CounterVector::Merge(const CounterVector& other)
return *this;
}
namespace probabilistic {
CounterVector& CounterVector::operator|=(const CounterVector& other)
{
return Merge(other);
@ -156,8 +154,6 @@ CounterVector operator|(const CounterVector& x, const CounterVector& y)
return cv |= y;
}
}
uint64_t CounterVector::Hash() const
{
return bits->Hash();
@ -190,5 +186,4 @@ std::unique_ptr<CounterVector> CounterVector::Unserialize(const broker::data& da
return cv;
}
} // namespace zeek::probabilistic::detail

View file

@ -2,6 +2,8 @@
#pragma once
#include "zeek-config.h"
#include <cstddef>
#include <cstdint>
#include <memory>
@ -10,9 +12,9 @@
namespace broker { class data; }
namespace probabilistic {
ZEEK_FORWARD_DECLARE_NAMESPACED(BitVector, zeek, probabilistic, detail);
class BitVector;
namespace zeek::probabilistic::detail {
/**
* A vector of counters, each of which has a fixed number of bits.
@ -154,4 +156,8 @@ private:
size_t width;
};
} // namespace zeek::probabilistic::detail
namespace probabilistic {
using CounterVector [[deprecated("Remove in v4.1. Use zeek::probabilisitc::detail::CounterVector.")]] = zeek::probabilistic::detail::CounterVector;
}

View file

@ -13,7 +13,7 @@
#include <broker/data.hh>
using namespace probabilistic;
namespace zeek::probabilistic::detail {
Hasher::seed_t Hasher::MakeSeed(const void* data, size_t size)
{
@ -178,3 +178,5 @@ bool DoubleHasher::Equals(const Hasher* other) const
const DoubleHasher* o = static_cast<const DoubleHasher*>(other);
return h1 == o->h1 && h2 == o->h2;
}
} // namespace zeek::probabilistic::detail

View file

@ -10,7 +10,7 @@
namespace broker { class data; }
namespace probabilistic {
namespace zeek::probabilistic::detail {
/** Types of derived Hasher classes. */
enum HasherType { Default, Double };
@ -257,4 +257,17 @@ private:
UHF h2;
};
} // namespace zeek::probabilistic::detail
namespace probabilistic {
using HasherType [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::HasherType.")]] = zeek::probabilistic::detail::HasherType;
constexpr auto Default [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Default.")]] = zeek::probabilistic::detail::Default;
constexpr auto Double [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Double.")]] = zeek::probabilistic::detail::Double;
using Hasher [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Hasher.")]] = zeek::probabilistic::detail::Hasher;
using UHF [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::UHF.")]] = zeek::probabilistic::detail::UHF;
using DefaultHasher [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::DefaultHasher.")]] = zeek::probabilistic::detail::DefaultHasher;
using DoubleHasher [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::DoubleHasher.")]] = zeek::probabilistic::detail::DoubleHasher;
}

View file

@ -9,7 +9,7 @@
#include "Reporter.h"
#include "Dict.h"
namespace probabilistic {
namespace zeek::probabilistic::detail {
static void topk_element_hash_delete_func(void* val)
{
@ -519,4 +519,5 @@ bool TopkVal::DoUnserialize(const broker::data& data)
assert(i == numElements);
return true;
}
}
} // namespace zeek::probabilistic::detail

View file

@ -11,7 +11,7 @@
ZEEK_FORWARD_DECLARE_NAMESPACED(CompositeHash, zeek::detail);
namespace probabilistic {
namespace zeek::probabilistic::detail {
struct Element;
@ -172,4 +172,10 @@ private:
bool pruned; // was this data structure pruned?
};
};
} // namespace zeek::probabilistic::detail
namespace probabilistic {
using Element [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Element.")]] = zeek::probabilistic::detail::Element;
using Bucket [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Bucket.")]] = zeek::probabilistic::detail::Bucket;
using TopkVal [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::TopkVal.")]] = zeek::probabilistic::detail::TopkVal;
}

View file

@ -40,13 +40,13 @@ function bloomfilter_basic_init%(fp: double, capacity: count,
return nullptr;
}
size_t cells = BasicBloomFilter::M(fp, capacity);
size_t optimal_k = BasicBloomFilter::K(cells, capacity);
Hasher::seed_t seed = Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0,
name->Len());
const Hasher* h = new DoubleHasher(optimal_k, seed);
size_t cells = zeek::probabilistic::BasicBloomFilter::M(fp, capacity);
size_t optimal_k = zeek::probabilistic::BasicBloomFilter::K(cells, capacity);
zeek::probabilistic::detail::Hasher::seed_t seed =
zeek::probabilistic::detail::Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0, name->Len());
const zeek::probabilistic::detail::Hasher* h = new zeek::probabilistic::detail::DoubleHasher(optimal_k, seed);
return zeek::make_intrusive<zeek::BloomFilterVal>(new BasicBloomFilter(h, cells));
return zeek::make_intrusive<zeek::BloomFilterVal>(new zeek::probabilistic::BasicBloomFilter(h, cells));
%}
## Creates a basic Bloom filter. This function serves as a low-level
@ -82,11 +82,11 @@ function bloomfilter_basic_init2%(k: count, cells: count,
return nullptr;
}
Hasher::seed_t seed = Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0,
name->Len());
const Hasher* h = new DoubleHasher(k, seed);
zeek::probabilistic::detail::Hasher::seed_t seed =
zeek::probabilistic::detail::Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0, name->Len());
const zeek::probabilistic::detail::Hasher* h = new zeek::probabilistic::detail::DoubleHasher(k, seed);
return zeek::make_intrusive<zeek::BloomFilterVal>(new BasicBloomFilter(h, cells));
return zeek::make_intrusive<zeek::BloomFilterVal>(new zeek::probabilistic::BasicBloomFilter(h, cells));
%}
## Creates a counting Bloom filter.
@ -121,16 +121,16 @@ function bloomfilter_counting_init%(k: count, cells: count, max: count,
return nullptr;
}
Hasher::seed_t seed = Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0,
name->Len());
zeek::probabilistic::detail::Hasher::seed_t seed =
zeek::probabilistic::detail::Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0, name->Len());
const Hasher* h = new DefaultHasher(k, seed);
const zeek::probabilistic::detail::Hasher* h = new zeek::probabilistic::detail::DefaultHasher(k, seed);
uint16_t width = 1;
while ( max >>= 1 )
++width;
return zeek::make_intrusive<zeek::BloomFilterVal>(new CountingBloomFilter(h, cells, width));
return zeek::make_intrusive<zeek::BloomFilterVal>(new zeek::probabilistic::CountingBloomFilter(h, cells, width));
%}
## Adds an element to a Bloom filter.
@ -144,7 +144,7 @@ function bloomfilter_counting_init%(k: count, cells: count, max: count,
## bloomfilter_merge
function bloomfilter_add%(bf: opaque of bloomfilter, x: any%): any
%{
BloomFilterVal* bfv = static_cast<BloomFilterVal*>(bf);
auto* bfv = static_cast<BloomFilterVal*>(bf);
if ( ! bfv->Type() && ! bfv->Typify(x->GetType()) )
reporter->Error("failed to set Bloom filter type");
@ -171,7 +171,7 @@ function bloomfilter_add%(bf: opaque of bloomfilter, x: any%): any
## bloomfilter_merge
function bloomfilter_lookup%(bf: opaque of bloomfilter, x: any%): count
%{
const BloomFilterVal* bfv = static_cast<const BloomFilterVal*>(bf);
const auto* bfv = static_cast<const BloomFilterVal*>(bf);
if ( ! bfv->Type() )
return zeek::val_mgr->Count(0);
@ -196,7 +196,7 @@ function bloomfilter_lookup%(bf: opaque of bloomfilter, x: any%): count
## bloomfilter_merge
function bloomfilter_clear%(bf: opaque of bloomfilter%): any
%{
BloomFilterVal* bfv = static_cast<BloomFilterVal*>(bf);
auto* bfv = static_cast<BloomFilterVal*>(bf);
if ( bfv->Type() ) // Untyped Bloom filters are already empty.
bfv->Clear();
@ -222,8 +222,8 @@ function bloomfilter_clear%(bf: opaque of bloomfilter%): any
function bloomfilter_merge%(bf1: opaque of bloomfilter,
bf2: opaque of bloomfilter%): opaque of bloomfilter
%{
const BloomFilterVal* bfv1 = static_cast<const BloomFilterVal*>(bf1);
const BloomFilterVal* bfv2 = static_cast<const BloomFilterVal*>(bf2);
const auto* bfv1 = static_cast<const BloomFilterVal*>(bf1);
const auto* bfv2 = static_cast<const BloomFilterVal*>(bf2);
if ( bfv1->Type() && // any one 0 is ok here
bfv2->Type() &&
@ -244,6 +244,6 @@ function bloomfilter_merge%(bf1: opaque of bloomfilter,
## Returns: a string with a representation of a Bloom filter's internal state.
function bloomfilter_internal_state%(bf: opaque of bloomfilter%): string
%{
BloomFilterVal* bfv = static_cast<BloomFilterVal*>(bf);
auto* bfv = static_cast<BloomFilterVal*>(bf);
return zeek::make_intrusive<zeek::StringVal>(bfv->InternalState());
%}

View file

@ -22,7 +22,7 @@ module GLOBAL;
## hll_cardinality_copy
function hll_cardinality_init%(err: double, confidence: double%): opaque of cardinality
%{
CardinalityCounter* c = new CardinalityCounter(err, confidence);
auto* c = new zeek::probabilistic::detail::CardinalityCounter(err, confidence);
auto cv = zeek::make_intrusive<zeek::CardinalityVal>(c);
return cv;
@ -40,7 +40,7 @@ function hll_cardinality_init%(err: double, confidence: double%): opaque of card
## hll_cardinality_init hll_cardinality_copy
function hll_cardinality_add%(handle: opaque of cardinality, elem: any%): bool
%{
CardinalityVal* cv = static_cast<CardinalityVal*>(handle);
auto* cv = static_cast<CardinalityVal*>(handle);
if ( ! cv->Type() && ! cv->Typify(elem->GetType()) )
{
@ -73,8 +73,8 @@ function hll_cardinality_add%(handle: opaque of cardinality, elem: any%): bool
## hll_cardinality_init hll_cardinality_copy
function hll_cardinality_merge_into%(handle1: opaque of cardinality, handle2: opaque of cardinality%): bool
%{
CardinalityVal* v1 = static_cast<CardinalityVal*>(handle1);
CardinalityVal* v2 = static_cast<CardinalityVal*>(handle2);
auto* v1 = static_cast<CardinalityVal*>(handle1);
auto* v2 = static_cast<CardinalityVal*>(handle2);
if ( (v1->Type() != v2->Type()) && // both 0 is ok
(v1->Type() != nullptr) && // any one 0 also is ok
@ -85,8 +85,8 @@ function hll_cardinality_merge_into%(handle1: opaque of cardinality, handle2: op
return zeek::val_mgr->False();
}
CardinalityCounter* h1 = v1->Get();
CardinalityCounter* h2 = v2->Get();
zeek::probabilistic::detail::CardinalityCounter* h1 = v1->Get();
zeek::probabilistic::detail::CardinalityCounter* h2 = v2->Get();
bool res = h1->Merge(h2);
if ( ! res )
@ -108,8 +108,8 @@ function hll_cardinality_merge_into%(handle1: opaque of cardinality, handle2: op
## hll_cardinality_init hll_cardinality_copy
function hll_cardinality_estimate%(handle: opaque of cardinality%): double
%{
CardinalityVal* cv = static_cast<CardinalityVal*>(handle);
CardinalityCounter* h = cv->Get();
auto* cv = static_cast<CardinalityVal*>(handle);
zeek::probabilistic::detail::CardinalityCounter* h = cv->Get();
double estimate = h->Size();
@ -126,9 +126,9 @@ function hll_cardinality_estimate%(handle: opaque of cardinality%): double
## hll_cardinality_init
function hll_cardinality_copy%(handle: opaque of cardinality%): opaque of cardinality
%{
CardinalityVal* cv = static_cast<CardinalityVal*>(handle);
CardinalityCounter* h = cv->Get();
CardinalityCounter* h2 = new CardinalityCounter(*h);
auto* cv = static_cast<CardinalityVal*>(handle);
zeek::probabilistic::detail::CardinalityCounter* h = cv->Get();
auto* h2 = new zeek::probabilistic::detail::CardinalityCounter(*h);
auto out = zeek::make_intrusive<zeek::CardinalityVal>(h2);
return out;

View file

@ -14,7 +14,7 @@
## topk_size topk_sum topk_merge topk_merge_prune
function topk_init%(size: count%): opaque of topk
%{
auto v = zeek::make_intrusive<probabilistic::TopkVal>(size);
auto v = zeek::make_intrusive<zeek::probabilistic::detail::TopkVal>(size);
return v;
%}
@ -33,7 +33,7 @@ function topk_init%(size: count%): opaque of topk
function topk_add%(handle: opaque of topk, value: any%): any
%{
assert(handle);
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
h->Encountered({zeek::NewRef{}, value});
return nullptr;
@ -52,7 +52,7 @@ function topk_add%(handle: opaque of topk, value: any%): any
function topk_get_top%(handle: opaque of topk, k: count%): any_vec
%{
assert(handle);
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
return h->GetTopK(k);
%}
@ -73,7 +73,7 @@ function topk_get_top%(handle: opaque of topk, k: count%): any_vec
function topk_count%(handle: opaque of topk, value: any%): count
%{
assert(handle);
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
return zeek::val_mgr->Count(h->GetCount(value));
%}
@ -93,7 +93,7 @@ function topk_count%(handle: opaque of topk, value: any%): count
function topk_epsilon%(handle: opaque of topk, value: any%): count
%{
assert(handle);
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
return zeek::val_mgr->Count(h->GetEpsilon(value));
%}
@ -112,7 +112,7 @@ function topk_epsilon%(handle: opaque of topk, value: any%): count
function topk_size%(handle: opaque of topk%): count
%{
assert(handle);
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
return zeek::val_mgr->Count(h->GetSize());
%}
@ -132,7 +132,7 @@ function topk_size%(handle: opaque of topk%): count
function topk_sum%(handle: opaque of topk%): count
%{
assert(handle);
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
return zeek::val_mgr->Count(h->GetSum());
%}
@ -152,8 +152,8 @@ function topk_merge%(handle1: opaque of topk, handle2: opaque of topk%): any
assert(handle1);
assert(handle2);
probabilistic::TopkVal* h1 = (probabilistic::TopkVal*) handle1;
probabilistic::TopkVal* h2 = (probabilistic::TopkVal*) handle2;
auto* h1 = (zeek::probabilistic::detail::TopkVal*) handle1;
auto* h2 = (zeek::probabilistic::detail::TopkVal*) handle2;
h1->Merge(h2);
@ -178,8 +178,8 @@ function topk_merge_prune%(handle1: opaque of topk, handle2: opaque of topk%): a
assert(handle1);
assert(handle2);
probabilistic::TopkVal* h1 = (probabilistic::TopkVal*) handle1;
probabilistic::TopkVal* h2 = (probabilistic::TopkVal*) handle2;
auto* h1 = (zeek::probabilistic::detail::TopkVal*) handle1;
auto* h2 = (zeek::probabilistic::detail::TopkVal*) handle2;
h1->Merge(h2, true);