Write CounterVector implementation scaffold.

This commit is contained in:
Matthias Vallentin 2013-06-04 14:31:39 -07:00
parent d3297dd6f3
commit a5572dd66f
2 changed files with 43 additions and 3 deletions

View file

@ -10,6 +10,42 @@ T round(double x) { return (x > 0.0) ? (x + 0.5) : (x - 0.5); }
} // 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)
bool CounterVector::DoSerialize(SerialInfo* info) const

View file

@ -9,7 +9,7 @@
/**
* A vector of counters, each of which have a fixed number of bits.
*/
class CounterVector : SerialObj {
class CounterVector : public SerialObj {
public:
typedef size_t size_type;
typedef uint64 count_type;
@ -18,8 +18,12 @@ public:
* Constructs a counter vector having cells of a given width.
*
* @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.
@ -68,7 +72,7 @@ protected:
CounterVector() { }
private:
BitVector bits_;
BitVector* bits_;
unsigned width_;
};