Add ARM files
[dh-make-perl] / dev / arm / libclass-accessor-chained-perl / libclass-accessor-chained-perl-0.01.1~debian / lib / Class / Accessor / Chained / Fast.pm
diff --git a/dev/arm/libclass-accessor-chained-perl/libclass-accessor-chained-perl-0.01.1~debian/lib/Class/Accessor/Chained/Fast.pm b/dev/arm/libclass-accessor-chained-perl/libclass-accessor-chained-perl-0.01.1~debian/lib/Class/Accessor/Chained/Fast.pm
new file mode 100644 (file)
index 0000000..d52f89f
--- /dev/null
@@ -0,0 +1,70 @@
+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;
+
+=head1 NAME
+
+Class::Accessor::Chained::Fast - Faster, but less expandable, chained accessors
+
+=head1 SYNOPSIS
+
+ package Foo;
+ use base qw(Class::Accessor::Chained::Fast);
+
+  # The rest as Class::Accessor::Chained except no set() or get().
+
+=head1 DESCRIPTION
+
+By analogue to Class::Accessor and Class::Accessor::Fast this module
+provides a faster less-flexible chained accessor maker.
+
+=head1 AUTHOR
+
+Richard Clamp <richardc@unixbeard.net>
+
+=head1 COPYRIGHT
+
+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.
+
+=head1 SEE ALSO
+
+L<Class::Accessor::Fast>, L<Class::Accessor::Chained>
+
+=cut