1 package MooseX::ClassAttribute::Meta::Method::Accessor;
8 extends 'Moose::Meta::Method::Accessor';
11 sub _generate_predicate_method_inline
13 my $attr = (shift)->associated_attribute;
17 . $attr->associated_class()->inline_is_class_slot_initialized( $attr->name() )
20 confess "Could not generate inline predicate because : $@" if $@;
25 sub _generate_clearer_method_inline
27 my $attr = (shift)->associated_attribute;
28 my $meta_instance = $attr->associated_class->instance_metaclass;
32 . $attr->associated_class()->inline_deinitialize_class_slot( $attr->name() )
35 confess "Could not generate inline clearer because : $@" if $@;
46 my $attr = $self->associated_attribute();
48 my $meta = $attr->associated_class();
50 my $code = $meta->inline_set_class_slot_value( $attr->slots(), $value ) . ";";
51 $code .= $meta->inline_weaken_class_slot_value( $attr->slots(), $value ) . ";"
52 if $attr->is_weak_ref();
61 my $attr = $self->associated_attribute;
62 my $meta = $attr->associated_class();
64 return $meta->inline_get_class_slot_value( $attr->slots() );
71 my $attr = $self->associated_attribute;
72 my $meta = $attr->associated_class();
74 return $meta->inline_class_slot_access( $attr->slots() );
81 my $attr = $self->associated_attribute;
82 my $meta = $attr->associated_class();
84 return $meta->inline_is_class_slot_initialized( $attr->slots() );
91 return $self->_inline_store( undef, $_[-1] );
94 sub _inline_check_lazy
99 $self->SUPER::_inline_check_lazy
100 ( q{'} . $self->associated_attribute()->associated_class()->name() . q{'} );
103 sub _inline_get_old_value_for_trigger
107 my $attr = $self->associated_attribute();
108 return '' unless $attr->has_trigger();
111 $attr->associated_class()->inline_is_class_slot_initialized( $attr->name() );
116 . $self->_inline_get() . q{ : ()} . ";\n";
128 MooseX::ClassAttribute::Meta::Method::Accessor - Accessor method generation for class attributes
132 This class overrides L<Moose::Meta::Method::Accessor> to do code
133 generation properly for class attributes.
137 Dave Rolsky, C<< <autarch@urth.org> >>
141 See L<MooseX::ClassAttribute> for details.
143 =head1 COPYRIGHT & LICENSE
145 Copyright 2007-2008 Dave Rolsky, All Rights Reserved.
147 This program is free software; you can redistribute it and/or modify
148 it under the same terms as Perl itself.