summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteffen Mueller <smueller@cpan.org>2013-05-22 22:03:38 +0200
committerSteffen Mueller <smueller@cpan.org>2013-06-25 08:00:25 +0200
commitb28d84821eb92e2ce828f8792a5199c6163e1358 (patch)
treeeec6ecd6983f14e46ab8cdf60f7975025c654994
parentcfba0fa69b3193a387b145b99a90822200b459be (diff)
downloadperl-b28d84821eb92e2ce828f8792a5199c6163e1358.tar.gz
EU::ParseXS: Simplify output typemap code generation (targetable)
-rw-r--r--dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm36
1 files changed, 16 insertions, 20 deletions
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
index 891d18c1e0..5e2dd16065 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
@@ -709,30 +709,26 @@ EOF
my $var = 'RETVAL';
my $type = $self->{ret_type};
- if ($trgt and not $trgt->{with_size} and $trgt->{type} eq 'p') {
- # PUSHp corresponds to setpvn. Treat setpv directly
+ if ($trgt) {
my $what = $self->eval_output_typemap_code(
qq("$trgt->{what}"),
{var => $var, type => $self->{ret_type}}
);
-
- print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
- $prepush_done = 1;
- }
- elsif ($trgt) {
- my $what = $self->eval_output_typemap_code(
- qq("$trgt->{what}"),
- {var => $var, type => $self->{ret_type}}
- );
-
- my $tsize = $trgt->{what_size};
- $tsize = '' unless defined $tsize;
- $tsize = $self->eval_output_typemap_code(
- qq("$tsize"),
- {var => $var, type => $self->{ret_type}}
- );
- print "\tXSprePUSH; PUSH$trgt->{type}($what$tsize);\n";
- $prepush_done = 1;
+ if (not $trgt->{with_size} and $trgt->{type} eq 'p') { # sv_setpv
+ # PUSHp corresponds to sv_setpvn. Treat sv_setpv directly
+ print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
+ $prepush_done = 1;
+ }
+ else {
+ my $tsize = $trgt->{what_size};
+ $tsize = '' unless defined $tsize;
+ $tsize = $self->eval_output_typemap_code(
+ qq("$tsize"),
+ {var => $var, type => $self->{ret_type}}
+ );
+ print "\tXSprePUSH; PUSH$trgt->{type}($what$tsize);\n";
+ $prepush_done = 1;
+ }
}
else {
# RETVAL almost never needs SvSETMAGIC()