Add the original source packages to maemo, source lenny
[dh-make-perl] / dev / i386 / libclass-accessor-chained-perl / libclass-accessor-chained-perl-0.01.1~debian / lib / Class / Accessor / Chained / Fast.pm
1 use strict;
2 package Class::Accessor::Chained::Fast;
3 use base 'Class::Accessor::Fast';
4
5 sub make_accessor {
6     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;
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