NAME
Lucy::Object::BitVector - An array of bits.
SYNOPSIS
my $bit_vec = Lucy::Object::BitVector->new( capacity => 8 );
my $other = Lucy::Object::BitVector->new( capacity => 8 );
$bit_vec->set($_) for ( 0, 2, 4, 6 );
$other->set($_) for ( 1, 3, 5, 7 );
$bit_vec->or($other);
print "$_\n" for @{ $bit_vec->to_array }; # prints 0 through 7.
DESCRIPTION
BitVector is a growable array of bits. All bits are initially zero.
CONSTRUCTORS
new
my $bit_vec = Lucy::Object::BitVector->new(
capacity => $doc_max + 1, # default 0,
);
Create a new BitVector.
capacity - The number of bits that the initial array should be able to hold.
METHODS
get
my $bool = $bit_vector->get($tick);
Return true if the bit at tick
has been set, false if it hasn’t (regardless of whether it lies within the bounds of the object’s capacity).
tick - The requested bit.
set
$bit_vector->set($tick);
Set the bit at tick
to 1.
tick - The bit to be set.
next_hit
my $int = $bit_vector->next_hit($tick);
Returns the next set bit equal to or greater than tick
, or -1 if no such bit exists.
clear
$bit_vector->clear($tick);
Clear the indicated bit. (i.e. set it to 0).
tick - The bit to be cleared.
clear_all
$bit_vector->clear_all();
Clear all bits.
grow
$bit_vector->grow($capacity);
If the BitVector does not already have enough room to hold the indicated number of bits, allocate more memory so that it can.
capacity - Least number of bits the BitVector should accomodate.
and
$bit_vector->and($other);
Modify the BitVector so that only bits which remain set are those which 1) were already set in this BitVector, and 2) were also set in the other BitVector.
other - Another BitVector.
or
$bit_vector->or($other);
Modify the BitVector, setting all bits which are set in the other BitVector if they were not already set.
other - Another BitVector.
xor
$bit_vector->xor($other);
Modify the BitVector, performing an XOR operation against the other.
other - Another BitVector.
and_not
$bit_vector->and_not($other);
Modify the BitVector, clearing all bits which are set in the other.
other - Another BitVector.
flip
$bit_vector->flip($tick);
Invert the value of a bit.
tick - The bit to invert.
flip_block
$bit_vector->flip_block(
offset => $offset, # required
length => $length, # required
);
Invert each bit within a contiguous block.
offset - Lower bound.
length - The number of bits to flip.
count
my $int = $bit_vector->count();
Return a count of the number of set bits.
to_array
my $i32_array = $bit_vector->to_array();
Return an array where each element represents a set bit.
clone
my $result = $bit_vector->clone();
Return a clone of the object.
INHERITANCE
Lucy::Object::BitVector isa Clownfish::Obj.