Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / 5.8.0 / Test / Harness / Iterator.pm
CommitLineData
86530b38
AT
1package Test::Harness::Iterator;
2
3use strict;
4use vars qw($VERSION);
5$VERSION = 0.01;
6
7
8=head1 NAME
9
10Test::Harness::Iterator - Internal Test::Harness Iterator
11
12=head1 SYNOPSIS
13
14 use Test::Harness::Iterator;
15 use Test::Harness::Iterator;
16 my $it = Test::Harness::Iterator->new(\*TEST);
17 my $it = Test::Harness::Iterator->new(\@array);
18
19 my $line = $it->next;
20
21
22=head1 DESCRIPTION
23
24B<FOR INTERNAL USE ONLY!>
25
26This is a simple iterator wrapper for arrays and filehandles.
27
28=cut
29
30sub new {
31 my($proto, $thing) = @_;
32
33 my $self = {};
34 if( ref $thing eq 'GLOB' ) {
35 bless $self, 'Test::Harness::Iterator::FH';
36 $self->{fh} = $thing;
37 }
38 elsif( ref $thing eq 'ARRAY' ) {
39 bless $self, 'Test::Harness::Iterator::ARRAY';
40 $self->{idx} = 0;
41 $self->{array} = $thing;
42 }
43 else {
44 warn "Can't iterate with a ", ref $thing;
45 }
46
47 return $self;
48}
49
50package Test::Harness::Iterator::FH;
51sub next {
52 my $fh = $_[0]->{fh};
53 return scalar <$fh>;
54}
55
56
57package Test::Harness::Iterator::ARRAY;
58sub next {
59 my $self = shift;
60 return $self->{array}->[$self->{idx}++];
61}