stop using excludes within moose, since it's no longer necessary
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor / Native / Hash / accessor.pm
1 package Moose::Meta::Method::Accessor::Native::Hash::accessor;
2
3 use strict;
4 use warnings;
5
6 use Moose::Role;
7
8 with 'Moose::Meta::Method::Accessor::Native::Hash::set',
9      'Moose::Meta::Method::Accessor::Native::Hash::get';
10
11 sub _inline_process_arguments {
12     my $self = shift;
13     $self->Moose::Meta::Method::Accessor::Native::Hash::set::_inline_process_arguments(@_);
14 }
15
16 sub _inline_check_argument_count {
17     my $self = shift;
18     $self->Moose::Meta::Method::Accessor::Native::Hash::set::_inline_check_argument_count(@_);
19 }
20
21 sub _inline_check_arguments {
22     my $self = shift;
23     $self->Moose::Meta::Method::Accessor::Native::Hash::set::_inline_check_arguments(@_);
24 }
25
26 sub _return_value {
27     my $self = shift;
28     $self->Moose::Meta::Method::Accessor::Native::Hash::set::_return_value(@_);
29 }
30
31 sub _generate_method {
32     my $self = shift;
33
34     my $inv         = '$self';
35     my $slot_access = $self->_get_value($inv);
36
37     return (
38         'sub {',
39             'my ' . $inv . ' = shift;',
40             $self->_inline_curried_arguments,
41             $self->_inline_check_lazy($inv, '$type_constraint', '$type_coercion', '$type_message'),
42             # get
43             'if (@_ == 1) {',
44                 $self->_inline_check_var_is_valid_key('$_[0]'),
45                 $slot_access . '->{$_[0]}',
46             '}',
47             # set
48             'else {',
49                 $self->_inline_writer_core($inv, $slot_access),
50             '}',
51         '}',
52     );
53 }
54
55 sub _minimum_arguments { 1 }
56 sub _maximum_arguments { 2 }
57
58 no Moose::Role;
59
60 1;