| DBM-Deep documentation | Contained in the DBM-Deep distribution. |
DBM::Deep::Iterator::Index
This is an internal-use-only object for DBM::Deep. It acts as the mediator between the DBM::Deep::Iterator object and a DBM::Deep::Engine::Sector::Index sector.
This object, despite the implied class hiearchy, does NOT inherit from DBM::Deep::Iterator. Instead, it delegates to it, essentially acting as a facade over it. get_next_key in DBM::Deep::Iterator will instantiate one of these objects as needed to handle an Index sector.
The constructor takes a hashref of params and blesses it into the invoking class. The hashref is assumed to have the following elements:
This takes no arguments.
This returns true/false indicating whether this sector has any more elements that can be iterated over.
This takes no arguments.
This returns an iterator (built by get_sector_iterator in DBM::Deep::Iterator) based on the sector pointed to by the next occupied location in this index.
If the sector is exhausted, it returns nothing.
| DBM-Deep documentation | Contained in the DBM-Deep distribution. |
package DBM::Deep::Iterator::File::Index; use 5.008_004; use strict; use warnings FATAL => 'all';
sub new { my $self = bless $_[1] => $_[0]; $self->{curr_index} = 0; return $self; }
sub at_end { my $self = shift; return $self->{curr_index} >= $self->{iterator}{engine}->hash_chars; }
sub get_next_iterator { my $self = shift; my $loc; while ( !$loc ) { return if $self->at_end; $loc = $self->{sector}->get_entry( $self->{curr_index}++ ); } return $self->{iterator}->get_sector_iterator( $loc ); } 1; __END__