58template<
class DataType,
class ValueType =
long long unsigned int>
86 void dump(std::ostream& out)
const;
bool nextBit(const BitVector &bitVector) const
unsigned WidthType
The type for width of bit vector.
static bool isRootNode(const BitTrie &node)
Frequency frequency_
The frequency. The current occurrence of the bit pattern so far.
static ValueType & value(BitVector &bitVector)
static bool nodeBitValue(const BitTrie &node)
static const WidthType & width(const BitVector &bitVector)
BitTrie * parent_
Parent of the (sub)trie. If the pointer is null, the node is root of the trie.
static BitVector uniquePrefixImpl(const BitTrie &bitTrie)
bool check(const BitVector &exactbits) const
BitVector longestCompletePattern(const BitVector &bits) const
void dump(std::ostream &out) const
unsigned frequency(const BitVector &prefixBits) const
BitTrie(bool bitReadLeftToRight)
BitTrie * findNode(const BitVector &bits)
BitTrie * node_[2]
The bits are encoded as indexes where 0: zero node, 1: one node. If node at index is not nullptr,...
static bool nodeTerminatesPattern(const BitTrie &node)
static BitVector patternAtNode(const BitTrie &node)
static WidthType & width(BitVector &bitVector)
DataType & at(BitVector bits)
bool insert(BitVector bits, const DataType &data)
DataType * data_
The data at this node.
const BitTrie * findNode(const BitVector &bits) const
static const ValueType & value(const BitVector &bitVector)
static unsigned depth(const BitTrie &node)
bool bitReadLeftToRight_
The configuration how bits are read and stored into the trie. If true, the rightmost (LSB) bit is pla...
BitVector uniqueUnusedPrefix() const
bool insert(BitVector bits)
bool erase(BitVector bits)
BitVector stripBit(BitVector bitVector) const
BitTrie(bool bitReadLeftToRight, BitTrie &parent)
static BitVector uniqueUnusedPrefixImpl(const BitTrie &bitTrie)
unsigned int Frequency
The type for frequencies of the patterns.