summaryrefslogtreecommitdiff
path: root/lib/Data/MultiValued/AttributeAccessors.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Data/MultiValued/AttributeAccessors.pm')
-rw-r--r--lib/Data/MultiValued/AttributeAccessors.pm47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/Data/MultiValued/AttributeAccessors.pm b/lib/Data/MultiValued/AttributeAccessors.pm
index cac3538..64063da 100644
--- a/lib/Data/MultiValued/AttributeAccessors.pm
+++ b/lib/Data/MultiValued/AttributeAccessors.pm
@@ -4,8 +4,39 @@ use warnings;
use base 'Moose::Meta::Method::Accessor';
use Carp 'confess';
+# ABSTRACT: method meta-class for multi-valued attribute accessors
+
+=head1 DESCRIPTION
+
+Subclass of L<Moose::Meta::Method::Accessor>, generates non-inlined
+(patches welcome) accessors for multi-valued attributes.
+
+=head1 METHDOS
+
+=head2 C<_instance_is_inlinable>
+
+Returns C<0> to prevent attempts to inline the accessor methods.
+
+=cut
+
sub _instance_is_inlinable { 0 }
+=head2 C<_generate_accessor_method>
+
+=head2 C<_generate_reader_method>
+
+=head2 C<_generate_writer_method>
+
+=head2 C<_generate_predicate_method>
+
+=head2 C<_generate_clearer_method>
+
+Delegate to C<set_multi_value>, C<get_multi_value>,
+C<has_multi_value>, C<clear_multi_value>, passing empty options
+(i.e. no tags, no ranges).
+
+=cut
+
sub _generate_accessor_method {
my $self = shift;
my $attr = $self->associated_attribute;
@@ -56,6 +87,22 @@ sub _generate_clearer_method {
};
}
+=head2 C<_generate_multi_accessor_method>
+
+=head2 C<_generate_multi_reader_method>
+
+=head2 C<_generate_multi_writer_method>
+
+=head2 C<_generate_multi_predicate_method>
+
+=head2 C<_generate_multi_clearer_method>
+
+Delegate to C<set_multi_value>, C<get_multi_value>,
+C<has_multi_value>, C<clear_multi_value>, passing C<$_[1]> as options
+and C<$_[2]> as values.
+
+=cut
+
sub _generate_multi_accessor_method {
my $self = shift;
my $attr = $self->associated_attribute;