File Coverage

blib/lib/Parse/Win32Registry/File.pm
Criterion Covered Total %
statement 32 32 100.0
branch 8 8 100.0
condition n/a
subroutine 9 9 100.0
pod 0 6 0.0
total 49 55 89.0


line stmt bran cond sub pod time code
1             package Parse::Win32Registry::File;
2              
3 13     13   107 use strict;
  13         27  
  13         369  
4 13     13   66 use warnings;
  13         27  
  13         4049  
5              
6             sub get_filehandle {
7 10838     10838 0 17995 my $self = shift;
8              
9 10838         21512 return $self->{_filehandle};
10             }
11              
12             sub get_filename {
13 2     2 0 6 my $self = shift;
14              
15 2         12 return $self->{_filename};
16             }
17              
18             sub get_length {
19 3055     3055 0 4978 my $self = shift;
20              
21 3055         7356 return $self->{_length};
22             }
23              
24             sub get_entry_iterator {
25 4     4 0 11 my $self = shift;
26              
27 4         8 my $entry_iter;
28 4         20 my $block_iter = $self->get_block_iterator;
29              
30             return Parse::Win32Registry::Iterator->new(sub {
31 92     92   139 while (1) {
32 98 100       226 if (defined $entry_iter) {
33 94         251 my $entry = $entry_iter->();
34 94 100       216 if (defined $entry) {
35 88         249 return $entry;
36             }
37             }
38             # entry iterator is undefined or finished
39 10         27 my $block = $block_iter->();
40 10 100       27 if (!defined $block) {
41 4         13 return; # block iterator finished
42             }
43 6         29 $entry_iter = $block->get_entry_iterator;
44             }
45 4         25 });
46             }
47              
48             # method provided for backwards compatibility
49             sub move_to_first_entry {
50 2     2 0 588 my $self = shift;
51              
52 2         41 $self->{_entry_iter} = undef;
53             }
54              
55             # method provided for backwards compatibility
56             sub get_next_entry {
57 92     92 0 49374 my $self = shift;
58              
59 92         211 my $entry_iter = $self->{_entry_iter};
60 92 100       250 if (!defined $entry_iter) {
61 4         37 $self->{_entry_iter} = $entry_iter = $self->get_entry_iterator;
62             }
63 92         217 return $entry_iter->();
64             }
65              
66             1;