| Class-Accessor-Chained documentation | Contained in the Class-Accessor-Chained distribution. |
Class::Accessor::Chained::Fast - Faster, but less expandable, chained accessors
package Foo; use base qw(Class::Accessor::Chained::Fast); # The rest as Class::Accessor::Chained except no set() or get().
By analogue to Class::Accessor and Class::Accessor::Fast this module provides a faster less-flexible chained accessor maker.
Richard Clamp <richardc@unixbeard.net>
Copyright (C) 2003 Richard Clamp. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Class-Accessor-Chained documentation | Contained in the Class-Accessor-Chained distribution. |
use strict; package Class::Accessor::Chained::Fast; use base 'Class::Accessor::Fast'; sub make_accessor { my($class, $field) = @_; return sub { my $self = shift; if(@_) { $self->{$field} = (@_ == 1 ? $_[0] : [@_]); return $self; } return $self->{$field}; }; } sub make_wo_accessor { my($class, $field) = @_; return sub { my($self) = shift; unless (@_) { my $caller = caller; require Carp; Carp::croak("'$caller' cannot access the value of '$field' on ". "objects of class '$class'"); } else { $self->{$field} = (@_ == 1 ? $_[0] : [@_]); return $self; } }; } 1;