File Coverage

blib/lib/Class/Accessor/Lvalue/Fast.pm
Criterion Covered Total %
statement 28 29 96.5
branch 3 4 75.0
condition n/a
subroutine 9 9 100.0
pod 3 3 100.0
total 43 45 95.5


line stmt bran cond sub pod time code
1 1     1   55009 use strict;
  1         4  
  1         55  
2             package Class::Accessor::Lvalue::Fast;
3 1     1   51 use base qw(Class::Accessor::Fast);
  1         2  
  1         1792  
4 1     1   6288 use Want;
  1         12390  
  1         424  
5              
6             sub make_accessor {
7 2     2 1 1926 my ($class, $field) = @_;
8              
9             return sub :lvalue {
10 12     12   1453 my $self = shift;
11 12         64 $self->{$field};
12 2         13 };
13             }
14              
15             sub make_ro_accessor {
16 1     1 1 59 my($class, $field) = @_;
17              
18             return sub :lvalue {
19 1     1   2 my $self = shift;
20 1 50       6 if (want 'LVALUE') {
21 1         82 my $caller = caller;
22 1         9 require Carp;
23 1         213 Carp::croak("'$caller' cannot alter the value of '$field' on ".
24             "objects of class '$class'");
25             }
26 0         0 return $self->{$field};
27 1         7 };
28             }
29              
30             sub make_wo_accessor {
31 1     1 1 62 my($class, $field) = @_;
32              
33             return sub :lvalue {
34 2     2   1100 my $self = shift;
35 2 100       7 unless (want 'LVALUE') {
36 1         50 my $caller = caller;
37 1         7 require Carp;
38 1         152 Carp::croak("'$caller' cannot access the value of '$field' on ".
39             "objects of class '$class'");
40             }
41 1         42 $self->{$field};
42 1         21 };
43             }
44              
45             1;
46             __END__