From: Aankhen Date: Sat, 28 Apr 2007 08:35:30 +0000 (+0000) Subject: Moose::Meta::Method::Accessor: X-Git-Tag: 0_21~13 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c350159ff34283e00527a23b36177482962d8d82;p=gitmo%2FMoose.git Moose::Meta::Method::Accessor: * added stub &_inline_pre_body and &_inline_post_body * pass @_ to pre and post body hooks. --- diff --git a/lib/Moose/Meta/Method/Accessor.pm b/lib/Moose/Meta/Method/Accessor.pm index 57117e1..6c99acc 100644 --- a/lib/Moose/Meta/Method/Accessor.pm +++ b/lib/Moose/Meta/Method/Accessor.pm @@ -15,7 +15,7 @@ use base 'Moose::Meta::Method', ## Inline method generators sub generate_accessor_method_inline { - my $self = shift; + my $self = $_[0]; my $attr = $self->associated_attribute; my $attr_name = $attr->name; @@ -24,7 +24,7 @@ sub generate_accessor_method_inline { my $slot_name = sprintf "'%s'", $attr->slots; my $inv = '$_[0]'; my $code = 'sub { ' - . $self->_inline_pre_body($attr) + . $self->_inline_pre_body(@_) . 'if (scalar(@_) == 2) {' . $self->_inline_check_required . $self->_inline_check_coercion @@ -33,7 +33,7 @@ sub generate_accessor_method_inline { . $self->_inline_trigger($inv, $value_name) . ' }' . $self->_inline_check_lazy - . $self->_inline_post_body($attr) + . $self->_inline_post_body(@_) . 'return ' . $self->_inline_auto_deref($self->_inline_get($inv)) . ' }'; @@ -49,19 +49,19 @@ sub generate_accessor_method_inline { } sub generate_writer_method_inline { - my $self = shift; + my $self = $_[0]; my $attr = $self->associated_attribute; my $attr_name = $attr->name; my $value_name = $attr->should_coerce ? '$val' : '$_[1]'; my $inv = '$_[0]'; my $code = 'sub { ' - . $self->_inline_pre_body($attr) + . $self->_inline_pre_body(@_) . $self->_inline_check_required . $self->_inline_check_coercion . $self->_inline_check_constraint($value_name) . $self->_inline_store($inv, $value_name) - . $self->_inline_post_body($attr) + . $self->_inline_post_body(@_) . $self->_inline_trigger($inv, $value_name) . ' }'; @@ -77,15 +77,15 @@ sub generate_writer_method_inline { } sub generate_reader_method_inline { - my $self = shift; + my $self = $_[0]; my $attr = $self->associated_attribute; my $attr_name = $attr->name; my $code = 'sub {' - . $self->_inline_pre_body($attr) + . $self->_inline_pre_body(@_) . 'confess "Cannot assign a value to a read-only accessor" if @_ > 1;' . $self->_inline_check_lazy - . $self->_inline_post_body($attr) + . $self->_inline_post_body(@_) . 'return ' . $self->_inline_auto_deref( '$_[0]->{$attr_name}' ) . ';' . '}'; @@ -104,6 +104,9 @@ sub generate_reader_method_inline { *generate_writer_method = \&generate_writer_method_inline; *generate_accessor_method = \&generate_accessor_method_inline; +sub _inline_pre_body { '' } +sub _inline_post_body { '' } + sub _inline_check_constraint { my ($self, $value) = @_;