8f24ccb0177359d75f06ffe43425c70cfaa62d03
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor / Native / Array / pop.pm
1 package Moose::Meta::Method::Accessor::Native::Array::pop;
2
3 use strict;
4 use warnings;
5
6 our $VERSION = '1.14';
7 $VERSION = eval $VERSION;
8 our $AUTHORITY = 'cpan:STEVAN';
9
10 use base 'Moose::Meta::Method::Accessor::Native::Array::Writer';
11
12 sub _maximum_arguments { 0 }
13
14 sub _adds_members { 0 }
15
16 sub _potential_value {
17     my ( $self, $slot_access ) = @_;
18
19     return "[ \@{ $slot_access } > 1 ? \@{ $slot_access }[ 0 .. \$#{ $slot_access } - 1 ] : () ]";
20 }
21
22 sub _inline_capture_return_value {
23     my ( $self, $slot_access ) = @_;
24
25     return "my \$old = ${slot_access}->[-1];";
26 }
27
28 sub _inline_optimized_set_new_value {
29     my ( $self, $inv, $new, $slot_access ) = @_;
30
31     return "pop \@{ $slot_access };";
32 }
33
34 sub _return_value {
35     my ( $self, $slot_access ) = @_;
36
37     return 'return $old;';
38 }
39
40 1;