Fixed a bug with DBI iterators and made the tets self-bootstrapping and added the...
[dbsrgits/DBM-Deep.git] / lib / DBM / Deep / Iterator.pm
1 package DBM::Deep::Iterator;
2
3 use 5.006_000;
4
5 use strict;
6 use warnings FATAL => 'all';
7
8 use DBM::Deep::Iterator::DBI ();
9 use DBM::Deep::Iterator::File ();
10
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 {
46         engine      => $args->{engine},
47         base_offset => $args->{base_offset},
48     }, $class;
49
50     Scalar::Util::weaken( $self->{engine} );
51
52     $self->reset;
53
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
67 sub reset { die "reset must be implemented in a child class" }
68
69 =head2 get_next_key( $obj )
70
71 =cut
72
73 sub get_next_key { die "get_next_key must be implemented in a child class" }
74
75 1;
76 __END__