-template<class Data>
-GenericBitBuffer<Data>::GenericBitBuffer(usint words) :
- size(words),
- pos(0),
- bits(DATA_BITS),
- item_bits(1),
- items(0),
- current(0),
- free_buffer(true)
-{
- this->data = new Data[words];
- memset(this->data, 0, words * sizeof(Data));
-}
-
-template<class Data>
-GenericBitBuffer<Data>::GenericBitBuffer(usint _items, usint item_size) :
- pos(0),
- bits(DATA_BITS),
- item_bits(item_size),
- items(_items),
- current(0),
- free_buffer(true)
-{
- this->size = bitsToData(items * item_size);
- this->data = new Data[this->size];
- memset(this->data, 0, this->size * sizeof(Data));
-}
-
-template<class Data>
-GenericBitBuffer<Data>::GenericBitBuffer(std::ifstream& file, usint words) :
- size(words),
- pos(0),
- bits(DATA_BITS),
- item_bits(1),
- items(0),
- current(0),
- free_buffer(true)
-{
- this->data = new Data[words];
- memset(this->data, 0, words * sizeof(Data));
- file.read((char*)this->data, words * sizeof(Data));
-}
-
-template<class Data>
-GenericBitBuffer<Data>::GenericBitBuffer(std::ifstream& file, usint _items, usint item_size) :
- size(BITS_TO_WORDS(_items * item_size)),
- pos(0),
- bits(DATA_BITS),
- item_bits(item_size),
- items(_items),
- current(0),
- free_buffer(true)
-{
- this->data = new Data[this->size];
- memset(this->data, 0, this->size * sizeof(Data));
- file.read((char*)this->data, this->size * sizeof(Data));
-}
-
-template<class Data>
-GenericBitBuffer<Data>::GenericBitBuffer(Data* buffer, usint words) :
- size(words),
- pos(0),
- bits(DATA_BITS),
- item_bits(1),
- items(0),
- current(0),
- free_buffer(false)
-{
- this->data = buffer;
-}
-
-template<class Data>
-GenericBitBuffer<Data>::GenericBitBuffer(Data* buffer, usint _items, usint item_size) :
- size(BITS_TO_WORDS(_items * item_size)),
- pos(0),
- bits(DATA_BITS),
- item_bits(item_size),
- items(_items),
- current(0),
- free_buffer(false)
-{
- this->data = buffer;
-}
+ // This version returns false if there is no space left for the encoding.
+ inline bool writeDeltaCode(usint value)
+ {
+ usint len = length(value);
+ usint llen = length(len);