App-PerlXLock
view release on metacpan or search on metacpan
inc/Inline/C.pm view on Meta::CPAN
$listargs = pop @arg_names
if (@arg_names and $arg_names[-1] eq '...');
my $arg_name_list = join(', ', @arg_names);
if ($return_type eq 'void') {
if ($o->{CONFIG}{_TESTING}) {
$XS .= <<END;
PREINIT:
PerlIO* stream;
I32* temp;
PPCODE:
temp = PL_markstack_ptr++;
$function($arg_name_list);
stream = PerlIO_open(\"$dir/void_test\", \"a\");
if (stream == NULL) warn(\"%s\\n\", \"Unable to open $dir/void_test for appending\");
if (PL_markstack_ptr != temp) {
PerlIO_printf(stream, \"%s\\n\", \"TRULY_VOID\");
PerlIO_close(stream);
PL_markstack_ptr = temp;
XSRETURN_EMPTY; /* return empty stack */
}
PerlIO_printf(stream, \"%s\\n\", \"LIST_CONTEXT\");
PerlIO_close(stream);
return; /* assume stack size is correct */
END
}
else {
$XS .= <<END;
PREINIT:
I32* temp;
PPCODE:
temp = PL_markstack_ptr++;
$function($arg_name_list);
if (PL_markstack_ptr != temp) {
/* truly void, because dXSARGS not invoked */
PL_markstack_ptr = temp;
XSRETURN_EMPTY; /* return empty stack */
}
/* must have used dXSARGS; list context implied */
return; /* assume stack size is correct */
END
( run in 0.503 second using v1.01-cache-2.11-cpan-71847e10f99 )