Commit | Line | Data |
f0276afb |
1 | package DBM::Deep::Iterator; |
2 | |
3 | use 5.006_000; |
4 | |
5 | use strict; |
6 | use warnings FATAL => 'all'; |
7 | |
19b913ce |
8 | use DBM::Deep::Iterator::DBI (); |
9 | use DBM::Deep::Iterator::File (); |
5ae752e2 |
10 | |
f0276afb |
11 | =head1 NAME |
12 | |
13 | DBM::Deep::Iterator |
14 | |
15 | =head1 PURPOSE |
16 | |
17 | This is an internal-use-only object for L<DBM::Deep/>. It is the iterator |
18 | for FIRSTKEY() and NEXTKEY(). |
19 | |
20 | =head1 OVERVIEW |
21 | |
22 | This object |
23 | |
24 | =head1 METHODS |
25 | |
26 | =head2 new(\%params) |
27 | |
28 | The constructor takes a hashref of params. The hashref is assumed to have the |
29 | following elements: |
30 | |
31 | =over 4 |
32 | |
33 | =item * engine (of type L<DBM::Deep::Engine/> |
34 | |
35 | =item * base_offset (the base_offset of the invoking DBM::Deep object) |
36 | |
37 | =back |
38 | |
39 | =cut |
40 | |
41 | sub new { |
42 | my $class = shift; |
43 | my ($args) = @_; |
44 | |
45 | my $self = bless { |
f0276afb |
46 | engine => $args->{engine}, |
47 | base_offset => $args->{base_offset}, |
48 | }, $class; |
49 | |
50 | Scalar::Util::weaken( $self->{engine} ); |
51 | |
350896ee |
52 | $self->reset; |
53 | |
f0276afb |
54 | return $self; |
55 | } |
56 | |
57 | =head2 reset() |
58 | |
59 | This method takes no arguments. |
60 | |
61 | It will reset the iterator so that it will start from the beginning again. |
62 | |
63 | This method returns nothing. |
64 | |
65 | =cut |
66 | |
350896ee |
67 | sub reset { die "reset must be implemented in a child class" } |
f0276afb |
68 | |
69 | =head2 get_next_key( $obj ) |
70 | |
71 | =cut |
72 | |
19b913ce |
73 | sub get_next_key { die "get_next_key must be implemented in a child class" } |
f0276afb |
74 | |
75 | 1; |
76 | __END__ |