mirror of
https://github.com/zeek/zeek.git
synced 2025-10-10 18:48:20 +00:00
Write CounterVector implementation scaffold.
This commit is contained in:
parent
d3297dd6f3
commit
a5572dd66f
2 changed files with 43 additions and 3 deletions
|
@ -10,6 +10,42 @@ T round(double x) { return (x > 0.0) ? (x + 0.5) : (x - 0.5); }
|
||||||
} // namespace <anonymous>
|
} // namespace <anonymous>
|
||||||
|
|
||||||
|
|
||||||
|
CounterVector::CounterVector(size_t width, size_t cells)
|
||||||
|
: bits_(new BitVector(width * cells)), width_(width)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CounterVector::~CounterVector()
|
||||||
|
{
|
||||||
|
delete bits_;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CounterVector::Increment(size_type cell, count_type value)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
assert(! "not yet implemented");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CounterVector::Decrement(size_type cell, count_type value)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
assert(! "not yet implemented");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
CounterVector::count_type CounterVector::Count(size_type cell) const
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
assert(! "not yet implemented");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
CounterVector::size_type CounterVector::Size() const
|
||||||
|
{
|
||||||
|
return bits_->Blocks() / width_;
|
||||||
|
}
|
||||||
|
|
||||||
IMPLEMENT_SERIAL(CounterVector, SER_COUNTERVECTOR)
|
IMPLEMENT_SERIAL(CounterVector, SER_COUNTERVECTOR)
|
||||||
|
|
||||||
bool CounterVector::DoSerialize(SerialInfo* info) const
|
bool CounterVector::DoSerialize(SerialInfo* info) const
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
/**
|
/**
|
||||||
* A vector of counters, each of which have a fixed number of bits.
|
* A vector of counters, each of which have a fixed number of bits.
|
||||||
*/
|
*/
|
||||||
class CounterVector : SerialObj {
|
class CounterVector : public SerialObj {
|
||||||
public:
|
public:
|
||||||
typedef size_t size_type;
|
typedef size_t size_type;
|
||||||
typedef uint64 count_type;
|
typedef uint64 count_type;
|
||||||
|
@ -18,8 +18,12 @@ public:
|
||||||
* Constructs a counter vector having cells of a given width.
|
* Constructs a counter vector having cells of a given width.
|
||||||
*
|
*
|
||||||
* @param width The number of bits that each cell occupies.
|
* @param width The number of bits that each cell occupies.
|
||||||
|
*
|
||||||
|
* @param cells The number of cells in the bitvector.
|
||||||
*/
|
*/
|
||||||
explicit CounterVector(unsigned width);
|
CounterVector(size_t width, size_t cells = 1024);
|
||||||
|
|
||||||
|
~CounterVector();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increments a given cell.
|
* Increments a given cell.
|
||||||
|
@ -68,7 +72,7 @@ protected:
|
||||||
CounterVector() { }
|
CounterVector() { }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BitVector bits_;
|
BitVector* bits_;
|
||||||
unsigned width_;
|
unsigned width_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue