Algorithm-BitVector
view release on metacpan or search on metacpan
lib/Algorithm/BitVector.pm view on Meta::CPAN
if _check_for_illegal_params(@params) == 0;
my $self = {
filename => $args{filename},
size => $args{size},
intVal => $args{intVal},
bitlist => $args{bitlist},
bitstring => $args{bitstring},
hexstring => $args{hexstring},
textstring => $args{textstring},
};
bless $self, $class;
if ( $self->{filename} ) {
die "When using the `filename' option in the constructor call, you cannot use any " .
"other option at the same time: $!"
if $self->{intVal} or $self->{size} or $self->{bitlist}
or $self->{bitstring} or $self->{hexstring} or $self->{textstring};
open $self->{FILEIN}, "< $self->{filename}"
or die "unable to open file $self->{filename}: $!";
$self->{more_to_read} = 1;
return $self;
} elsif ( defined $self->{intVal} ) {
lib/Algorithm/BitVector.pm view on Meta::CPAN
my $pos = 0;
$self->{_iterator} = BitVecIterator->new($self, $pos) unless $self->{_iter_called};
&{$self->{_iterator}->next()};
}
{
# This inner class needed for implementing iterator overloading:
package BitVecIterator;
sub new {
my $self = [ $_[1], $_[2] ];
bless $self, $_[0];
$_[1]->{_iter_called} = 1;
return $self;
}
sub next {
my $self = shift;
my $bitvec = $self->[0];
# The anonymous subroutine that follows is a closure over the variables
# incorporated in it:
return sub {
if ($self->[1] >= $bitvec->{size}) {
( run in 1.179 second using v1.01-cache-2.11-cpan-de7293f3b23 )