Commit | Line | Data |
5df54980 |
1 | package Moose::Meta::Method::Accessor::Native::Reader; |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
efa728b4 |
6 | our $VERSION = '1.15'; |
5df54980 |
7 | $VERSION = eval $VERSION; |
8 | our $AUTHORITY = 'cpan:STEVAN'; |
9 | |
8b9641b8 |
10 | use Moose::Role; |
11 | |
12 | with 'Moose::Meta::Method::Accessor::Native'; |
13 | |
14 | requires '_return_value'; |
5df54980 |
15 | |
16 | sub _generate_method { |
17 | my $self = shift; |
18 | |
19 | my $inv = '$self'; |
20 | |
21 | my $code = 'sub {'; |
22 | $code .= "\n" . $self->_inline_pre_body(@_); |
23 | |
24 | $code .= "\n" . 'my $self = shift;'; |
e7724627 |
25 | |
5df54980 |
26 | $code .= "\n" . $self->_inline_curried_arguments; |
e7724627 |
27 | |
28 | my $slot_access = $self->_inline_get($inv); |
29 | |
30 | $code .= "\n" . $self->_reader_core( $inv, $slot_access, @_ ); |
31 | |
32 | $code .= "\n}"; |
33 | |
34 | return $code; |
35 | } |
36 | |
37 | sub _reader_core { |
38 | my ( $self, $inv, $slot_access, @extra ) = @_; |
39 | |
40 | my $code = q{}; |
41 | |
5df54980 |
42 | $code .= "\n" . $self->_inline_check_argument_count; |
e7724627 |
43 | $code .= "\n" . $self->_inline_process_arguments( $inv, $slot_access ); |
5df54980 |
44 | $code .= "\n" . $self->_inline_check_arguments; |
45 | |
46 | $code .= "\n" . $self->_inline_check_lazy($inv); |
e7724627 |
47 | $code .= "\n" . $self->_inline_post_body(@extra); |
5df54980 |
48 | $code .= "\n" . $self->_inline_return_value($slot_access); |
5df54980 |
49 | |
50 | return $code; |
51 | } |
52 | |
e7724627 |
53 | sub _inline_process_arguments {q{}} |
54 | |
8b9641b8 |
55 | sub _inline_check_arguments {q{}} |
56 | |
5df54980 |
57 | sub _inline_return_value { |
58 | my ( $self, $slot_access ) = @_; |
59 | |
60 | 'return ' . $self->_return_value($slot_access) . ';'; |
61 | } |
62 | |
8b9641b8 |
63 | no Moose::Role; |
64 | |
5df54980 |
65 | 1; |