Beginning of dzilization
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor / Native / Array / delete.pm
CommitLineData
a7821be5 1package Moose::Meta::Method::Accessor::Native::Array::delete;
2
3use strict;
4use warnings;
5
a7821be5 6our $AUTHORITY = 'cpan:STEVAN';
7
8b9641b8 8use Moose::Role;
9
10with 'Moose::Meta::Method::Accessor::Native::Array::Writer' => {
11 -excludes => [
12 qw(
13 _minimum_arguments
14 _maximum_arguments
15 _inline_check_arguments
a486d5ad 16 _inline_optimized_set_new_value
7f5ec80d 17 _return_value
8b9641b8 18 )
19 ],
20};
a7821be5 21
22sub _minimum_arguments { 1 }
23
24sub _maximum_arguments { 1 }
25
26sub _inline_check_arguments {
27 my $self = shift;
28
29 return $self->_inline_check_var_is_valid_index('$_[0]');
30}
31
32sub _adds_members { 0 }
33
34sub _potential_value {
53a4677c 35 my $self = shift;
36 my ($slot_access) = @_;
a7821be5 37
53a4677c 38 return '(do { '
39 . 'my @potential = @{ (' . $slot_access . ') }; '
40 . '@return = splice @potential, $_[0], 1; '
41 . '\@potential; '
42 . '})';
e32b7489 43}
44
a486d5ad 45sub _inline_optimized_set_new_value {
53a4677c 46 my $self = shift;
47 my ($inv, $new, $slot_access) = @_;
e32b7489 48
a486d5ad 49 return '@return = splice @{ (' . $slot_access . ') }, $_[0], 1;';
7f5ec80d 50}
51
52sub _return_value {
53a4677c 53 my $self = shift;
54 my ($slot_access) = @_;
7f5ec80d 55
53a4677c 56 return '$return[0]';
a7821be5 57}
58
8b9641b8 59no Moose::Role;
60
a7821be5 611;