1 package Moose::Meta::Method::Accessor::Native::Array::splice;
6 our $AUTHORITY = 'cpan:STEVAN';
10 with 'Moose::Meta::Method::Accessor::Native::Array::Writer' => {
14 _inline_process_arguments
15 _inline_check_arguments
16 _inline_optimized_set_new_value
22 sub _minimum_arguments { 1 }
24 sub _adds_members { 1 }
26 sub _inline_process_arguments {
29 'my $len = @_ ? shift : undef;',
33 sub _inline_check_arguments {
37 $self->_inline_check_var_is_valid_index('$idx'),
38 'if (defined($len) && $len !~ /^-?\d+$/) {',
39 $self->_inline_throw_error(
40 '"The length argument passed to splice must be an integer"',
46 sub _potential_value {
48 my ($slot_access) = @_;
51 . 'my @potential = @{ (' . $slot_access . ') }; '
52 . '@return = defined $len '
53 . '? (splice @potential, $idx, $len, @_) '
54 . ': (splice @potential, $idx); '
59 sub _inline_optimized_set_new_value {
61 my ($inv, $new, $slot_access) = @_;
64 '@return = defined $len',
65 '? (splice @{ (' . $slot_access . ') }, $idx, $len, @_)',
66 ': (splice @{ (' . $slot_access . ') }, $idx);',
72 my ($slot_access) = @_;
74 return 'wantarray ? @return : $return[-1]';