From: Dave Rolsky Date: Sun, 26 Sep 2010 15:08:12 +0000 (-0500) Subject: Remove Accessor method metaclass X-Git-Tag: v0.18~8 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-ClassAttribute.git;a=commitdiff_plain;h=1b60368236308098fc9d9e445fed9eb3f86dadc2 Remove Accessor method metaclass --- diff --git a/lib/MooseX/ClassAttribute/Meta/Method/Accessor.pm b/lib/MooseX/ClassAttribute/Meta/Method/Accessor.pm deleted file mode 100644 index bd7874f..0000000 --- a/lib/MooseX/ClassAttribute/Meta/Method/Accessor.pm +++ /dev/null @@ -1,132 +0,0 @@ -package MooseX::ClassAttribute::Meta::Method::Accessor; - -use strict; -use warnings; - -use namespace::autoclean; -use Moose; - -extends 'Moose::Meta::Method::Accessor'; - -sub _generate_predicate_method_inline { - my $attr = (shift)->associated_attribute; - - my $code - = eval 'sub {' - . $attr->associated_class() - ->inline_is_class_slot_initialized( $attr->name() ) . '}'; - - confess "Could not generate inline predicate because : $@" if $@; - - return $code; -} - -sub _generate_clearer_method_inline { - my $attr = (shift)->associated_attribute; - my $meta_instance = $attr->associated_class->instance_metaclass; - - my $code - = eval 'sub {' - . $attr->associated_class() - ->inline_deinitialize_class_slot( $attr->name() ) . '}'; - - confess "Could not generate inline clearer because : $@" if $@; - - return $code; -} - -sub _inline_store { - my $self = shift; - shift; - my $value = shift; - - my $attr = $self->associated_attribute(); - - my $meta = $attr->associated_class(); - - my $code - = $meta->inline_set_class_slot_value( $attr->slots(), $value ) . ";"; - $code - .= $meta->inline_weaken_class_slot_value( $attr->slots(), $value ) - . ";" - if $attr->is_weak_ref(); - - return $code; -} - -sub _inline_get { - my $self = shift; - - my $attr = $self->associated_attribute; - my $meta = $attr->associated_class(); - - return $meta->inline_get_class_slot_value( $attr->slots() ); -} - -sub _inline_access { - my $self = shift; - - my $attr = $self->associated_attribute; - my $meta = $attr->associated_class(); - - return $meta->inline_class_slot_access( $attr->slots() ); -} - -sub _inline_has { - my $self = shift; - - my $attr = $self->associated_attribute; - my $meta = $attr->associated_class(); - - return $meta->inline_is_class_slot_initialized( $attr->slots() ); -} - -sub _inline_init_slot { - my $self = shift; - - return $self->_inline_store( undef, $_[-1] ); -} - -sub _inline_check_lazy { - my $self = shift; - - return $self->SUPER::_inline_check_lazy( q{'} - . $self->associated_attribute()->associated_class()->name() - . q{'} ); -} - -sub _inline_get_old_value_for_trigger { - my $self = shift; - - my $attr = $self->associated_attribute(); - return '' unless $attr->has_trigger(); - - my $pred = $attr->associated_class() - ->inline_is_class_slot_initialized( $attr->name() ); - - return - 'my @old = ' - . $pred . q{ ? } - . $self->_inline_get() - . q{ : ()} . ";\n"; - -} - -1; - -# ABSTRACT: Accessor method generation for class attributes - -__END__ - -=pod - -=head1 DESCRIPTION - -This class overrides L to do code -generation properly for class attributes. - -=head1 BUGS - -See L for details. - -=cut