Add ARM files
[dh-make-perl] / dev / arm / libclass-accessor-chained-perl / libclass-accessor-chained-perl-0.01.1~debian / lib / Class / Accessor / Chained.pm
diff --git a/dev/arm/libclass-accessor-chained-perl/libclass-accessor-chained-perl-0.01.1~debian/lib/Class/Accessor/Chained.pm b/dev/arm/libclass-accessor-chained-perl/libclass-accessor-chained-perl-0.01.1~debian/lib/Class/Accessor/Chained.pm
new file mode 100644 (file)
index 0000000..2c99070
--- /dev/null
@@ -0,0 +1,82 @@
+use strict;
+package Class::Accessor::Chained;
+use base 'Class::Accessor';
+our $VERSION = '0.01';
+
+sub make_accessor {
+    my($class, $field) = @_;
+
+    # Build a closure around $field.
+    return sub {
+        my($self) = shift;
+
+        if (@_) {
+            $self->set($field, @_);
+            return $self;
+        }
+        else {
+            return $self->get($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->set($field, @_);
+            return $self;
+        }
+    };
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Class::Accessor::Chained - make chained accessors
+
+=head1 SYNOPSIS
+
+ package Foo;
+ use base qw( Class::Accessor::Chained );
+ __PACKAGE__->mk_accessors(qw( foo bar baz ));
+
+ my $foo = Foo->new->foo(1)->bar(2)->baz(4);
+ print $foo->bar; # prints 2
+
+=head1 DESCRIPTION
+
+A chained accessor is one that always returns the object when called
+with parameters (to set), and the value of the field when called with
+no arguments.
+
+This module subclasses Class::Accessor in order to provide the same
+mk_accessors interface.
+
+=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>, L<Class::Accessor::Chained::Fast>
+
+=cut