1 package DBM::Deep::Iterator::Index;
6 use warnings FATAL => 'all';
10 DBM::Deep::Iterator::Index
14 This is an internal-use-only object for L<DBM::Deep/>. It acts as the mediator
15 between the L<DBM::Deep::Iterator/> object and a L<DBM::Deep::Engine::Sector::Index/>
20 This object, despite the implied class hiearchy, does B<NOT> inherit from
21 L<DBM::Deep::Iterator/>. Instead, it delegates to it, essentially acting as a
22 facade over it. L<DBM::Deep::Iterator/get_next_key> will instantiate one of
23 these objects as needed to handle an Index sector.
29 The constructor takes a hashref of params and blesses it into the invoking class. The
30 hashref is assumed to have the following elements:
34 =item * iterator (of type L<DBM::Deep::Iterator/>
36 =item * sector (of type L<DBM::Deep::Engine::Sector::Index/>
43 my $self = bless $_[1] => $_[0];
44 $self->{curr_index} = 0;
50 This takes no arguments.
52 This returns true/false indicating whether this sector has any more elements that can be
59 return $self->{curr_index} >= $self->{iterator}{engine}->hash_chars;
62 =head2 get_next_iterator()
64 This takes no arguments.
66 This returns an iterator (built by L<DBM::Deep::Iterator/get_sector_iterator>) based
67 on the sector pointed to by the next occupied location in this index.
69 If the sector is exhausted, it returns nothing.
73 sub get_next_iterator {
78 return if $self->at_end;
79 $loc = $self->{sector}->get_entry( $self->{curr_index}++ );
82 return $self->{iterator}->get_sector_iterator( $loc );