make github the primary repository
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor.pm
CommitLineData
8ee73eeb 1
2package Moose::Meta::Method::Accessor;
3
4use strict;
5use warnings;
6
55c361dc 7use Try::Tiny;
8
39b3bc94 9use base 'Moose::Meta::Method',
d617b644 10 'Class::MOP::Method::Accessor';
11
aa5bb362 12# multiple inheritance is terrible
13sub new {
14 goto &Class::MOP::Method::Accessor::new;
15}
16
17sub _new {
18 goto &Class::MOP::Method::Accessor::_new;
19}
20
18748ad6 21sub _error_thrower {
22 my $self = shift;
cc743de9 23 return $self->associated_attribute
24 if ref($self) && defined($self->associated_attribute);
25 return $self->SUPER::_error_thrower;
18748ad6 26}
d617b644 27
55c361dc 28sub _compile_code {
29 my $self = shift;
30 my @args = @_;
31 try {
32 $self->SUPER::_compile_code(@args);
33 }
34 catch {
35 $self->throw_error(
36 'Could not create writer for '
37 . "'" . $self->associated_attribute->name . "' "
38 . 'because ' . $_,
39 error => $_,
40 );
41 };
c9183ffc 42}
43
f5f08b5f 44sub _eval_environment {
45 my $self = shift;
f7db8e35 46 return $self->associated_attribute->_eval_environment;
f5f08b5f 47}
48
f001c60f 49sub _instance_is_inlinable {
50 my $self = shift;
51 return $self->associated_attribute->associated_class->instance_metaclass->is_inlinable;
52}
53
54sub _generate_reader_method {
55 my $self = shift;
56 $self->_instance_is_inlinable ? $self->_generate_reader_method_inline(@_)
57 : $self->SUPER::_generate_reader_method(@_);
58}
59
60sub _generate_writer_method {
61 my $self = shift;
62 $self->_instance_is_inlinable ? $self->_generate_writer_method_inline(@_)
63 : $self->SUPER::_generate_writer_method(@_);
64}
65
66sub _generate_accessor_method {
67 my $self = shift;
68 $self->_instance_is_inlinable ? $self->_generate_accessor_method_inline(@_)
69 : $self->SUPER::_generate_accessor_method(@_);
70}
71
72sub _generate_predicate_method {
73 my $self = shift;
74 $self->_instance_is_inlinable ? $self->_generate_predicate_method_inline(@_)
75 : $self->SUPER::_generate_predicate_method(@_);
76}
77
78sub _generate_clearer_method {
79 my $self = shift;
80 $self->_instance_is_inlinable ? $self->_generate_clearer_method_inline(@_)
81 : $self->SUPER::_generate_clearer_method(@_);
82}
8ecb1fa0 83
6e50f7e9 84sub _writer_value_needs_copy {
85 shift->associated_attribute->_writer_value_needs_copy(@_);
86}
c350159f 87
1e2c801e 88sub _inline_tc_code {
6e50f7e9 89 shift->associated_attribute->_inline_tc_code(@_);
1e2c801e 90}
91
0f4afc62 92sub _inline_check_coercion {
93 shift->associated_attribute->_inline_check_coercion(@_);
94}
95
d617b644 96sub _inline_check_constraint {
6e50f7e9 97 shift->associated_attribute->_inline_check_constraint(@_);
d617b644 98}
99
100sub _inline_check_lazy {
6e50f7e9 101 shift->associated_attribute->_inline_check_lazy(@_);
9df136d0 102}
d617b644 103
1e2c801e 104sub _inline_store_value {
6e50f7e9 105 shift->associated_attribute->_inline_instance_set(@_) . ';';
d617b644 106}
107
3dda07f5 108sub _inline_get_old_value_for_trigger {
6e50f7e9 109 shift->associated_attribute->_inline_get_old_value_for_trigger(@_);
3dda07f5 110}
111
d617b644 112sub _inline_trigger {
6e50f7e9 113 shift->associated_attribute->_inline_trigger(@_);
d617b644 114}
115
1e2c801e 116sub _get_value {
6e50f7e9 117 shift->associated_attribute->_inline_instance_get(@_);
d617b644 118}
119
1e2c801e 120sub _has_value {
6e50f7e9 121 shift->associated_attribute->_inline_instance_has(@_);
d617b644 122}
8ee73eeb 123
1241;
125
ad46f524 126# ABSTRACT: A Moose Method metaclass for accessors
127
8ee73eeb 128__END__
129
130=pod
131
39b3bc94 132=head1 DESCRIPTION
133
ba4dfb8e 134This class is a subclass of L<Class::MOP::Method::Accessor> that
73f769fc 135provides additional Moose-specific functionality, all of which is
136private.
ecb59493 137
73f769fc 138To understand this class, you should read the the
ba4dfb8e 139L<Class::MOP::Method::Accessor> documentation.
39b3bc94 140
141=head1 BUGS
142
d4048ef3 143See L<Moose/BUGS> for details on reporting bugs.
39b3bc94 144
51308c23 145=cut