| File | /project/perl/lib/Class/Accessor/Chained/Fast.pm | 
| Statements Executed | 25 | 
| Statement Execution Time | 896µs | 
| Calls | P | F | Exclusive Time | Inclusive Time | Subroutine | 
|---|---|---|---|---|---|
| 9 | 1 | 1 | 202µs | 202µs | Class::Accessor::Chained::Fast::make_accessor | 
| 0 | 0 | 0 | 0s | 0s | Class::Accessor::Chained::Fast::BEGIN | 
| 0 | 0 | 0 | 0s | 0s | Class::Accessor::Chained::Fast::__ANON__[:15] | 
| 0 | 0 | 0 | 0s | 0s | Class::Accessor::Chained::Fast::__ANON__[:34] | 
| 0 | 0 | 0 | 0s | 0s | Class::Accessor::Chained::Fast::make_wo_accessor | 
| 0 | 0 | 0 | 0s | 0s | base::BEGIN | 
| Line | State ments | Time on line | Calls | Time in subs | Code | 
|---|---|---|---|---|---|
| 1 | 3 | 121µs | 1 | 26µs | use strict; # spent    26µs making 1 call to strict::import | 
| 2 | package Class::Accessor::Chained::Fast; | ||||
| 3 | 3 | 529µs | 1 | 0s | use base 'Class::Accessor::Fast'; # spent   262µs making 1 call to base::import, recursion: max depth 3, time 262µs | 
| 4 | |||||
| 5 | # spent 202µs within Class::Accessor::Chained::Fast::make_accessor which was called 9 times, avg 22µs/call:
# 9 times (202µs+0s) by Class::Accessor::_mk_accessors at line 166 of Class/Accessor.pm, avg 22µs/call | ||||
| 6 | 18 | 234µs | my($class, $field) = @_; | ||
| 7 | |||||
| 8 | return sub { | ||||
| 9 | my $self = shift; | ||||
| 10 | if(@_) { | ||||
| 11 | $self->{$field} = (@_ == 1 ? $_[0] : [@_]); | ||||
| 12 | return $self; | ||||
| 13 | } | ||||
| 14 | return $self->{$field}; | ||||
| 15 | }; | ||||
| 16 | } | ||||
| 17 | |||||
| 18 | sub make_wo_accessor { | ||||
| 19 | my($class, $field) = @_; | ||||
| 20 | |||||
| 21 | return sub { | ||||
| 22 | my($self) = shift; | ||||
| 23 | |||||
| 24 | unless (@_) { | ||||
| 25 | my $caller = caller; | ||||
| 26 | require Carp; | ||||
| 27 | Carp::croak("'$caller' cannot access the value of '$field' on ". | ||||
| 28 | "objects of class '$class'"); | ||||
| 29 | } | ||||
| 30 | else { | ||||
| 31 | $self->{$field} = (@_ == 1 ? $_[0] : [@_]); | ||||
| 32 | return $self; | ||||
| 33 | } | ||||
| 34 | }; | ||||
| 35 | } | ||||
| 36 | |||||
| 37 | 1 | 12µs | 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 |