OpenGL-Modern
view release on metacpan or search on metacpan
utils/common.pl view on Meta::CPAN
$this{xs_rettype} = $name2parsed{$retval}[0];
$this{aftercall} = "\n RETVAL = $retval\[0];";
} else {
$this{xs_rettype} = delete $dynlang{RETTYPE} // $name2data{$retval}[1];
$this{aftercall} = "\n RETVAL = $retval;";
}
$this{retout} = "\nOUTPUT:\n RETVAL";
$this{retnames} = ["\$$retval"];
} elsif (my $output = delete $dynlang{OUTPUT}) {
$this{aftercall} = "\n $output";
$this{xs_code} = "PPCODE:\n";
} elsif (grep $indynlang{$_} =~ /\bOUT(?:ARRAY|SCALAR)\b/, keys %indynlang) {
my @retnames = map $indynlang{$_} =~ /\bOUTSCALAR\b/ ? ['$',$_] :
$indynlang{$_} =~ /\bOUTARRAY\b/ ? ['\\@',$_] :
(), grep $indynlang{$_}, map $_->[0], @argdata;
$this{retnames} = [ $isvoid ? () : '$retval', map join('', @$_), @retnames ];
$this{xs_code} = "PPCODE:\n";
my $aftercall = "EXTEND(sp, ".(@{ $this{retnames} }).");";
if (!$isvoid) {
my $newval = $s->{restype} =~ /^\s*void\s*\*\s*$/ ? "newSViv(PTR2IV(RETVAL))" : "newSV".lc(substr typefunc($s->{restype}), 0, 2)."(RETVAL)";
$aftercall .= "\n mPUSHs($newval);";
}
for (@retnames) {
my ($sigil, $arg) = @$_;
delete $is_inarg{$arg};
if ($sigil eq '\\@') {
die "$name: no OUTARRAY len" unless my ($len) = $indynlang{$arg} =~ /\bOUTARRAY:([^\s,]+)/;
( run in 1.939 second using v1.01-cache-2.11-cpan-5511b514fd6 )