File Coverage

blib/lib/Class/Accessor/Chained/Fast.pm
Criterion Covered Total %
statement 13 22 59.1
branch 3 8 37.5
condition n/a
subroutine 4 6 66.7
pod n/a
total 20 36 55.6


line stmt bran cond sub pod time code
1 2     2   33 use strict;
  2         27  
  2         89  
2             package Class::Accessor::Chained::Fast;
3 2     2   31 use base 'Class::Accessor::Fast';
  2         18  
  2         72  
4              
5             sub make_accessor {
6 3     3   339     my($class, $field) = @_;
7              
8                 return sub {
9 5     5   68         my $self = shift;
10 5 100       49         if(@_) {
11 4 50       53             $self->{$field} = (@_ == 1 ? $_[0] : [@_]);
12 4         50             return $self;
13                     }
14 1         14         return $self->{$field};
15 3         56     };
16             }
17              
18             sub make_wo_accessor {
19 0     0         my($class, $field) = @_;
20              
21                 return sub {
22 0     0             my($self) = shift;
23              
24 0 0                 unless (@_) {
25 0                       my $caller = caller;
26 0                       require Carp;
27 0                       Carp::croak("'$caller' cannot access the value of '$field' on ".
28                                     "objects of class '$class'");
29                     }
30                     else {
31 0 0                     $self->{$field} = (@_ == 1 ? $_[0] : [@_]);
32 0                       return $self;
33                     }
34 0               };
35             }
36              
37             1;
38              
39             =head1 NAME
40            
41             Class::Accessor::Chained::Fast - Faster, but less expandable, chained accessors
42            
43             =head1 SYNOPSIS
44            
45             package Foo;
46             use base qw(Class::Accessor::Chained::Fast);
47            
48             # The rest as Class::Accessor::Chained except no set() or get().
49            
50             =head1 DESCRIPTION
51            
52             By analogue to Class::Accessor and Class::Accessor::Fast this module
53             provides a faster less-flexible chained accessor maker.
54            
55             =head1 AUTHOR
56            
57             Richard Clamp <richardc@unixbeard.net>
58            
59             =head1 COPYRIGHT
60            
61             Copyright (C) 2003 Richard Clamp. All Rights Reserved.
62            
63             This module is free software; you can redistribute it and/or modify it
64             under the same terms as Perl itself.
65            
66             =head1 SEE ALSO
67            
68             L<Class::Accessor::Fast>, L<Class::Accessor::Chained>
69            
70             =cut
71