TYPEMAP
POSIX::RT::Timer T_INTOBJ
POSIX::RT::Clock T_INTOBJ
clockid_t T_PACKED
timer_init T_SLURP_VAR
sigset_t* T_SIGSET
signo_t T_SIGNO
struct timespec T_TIMESPEC
INPUT
T_SIGSET
if (SvROK($arg)) {
if (!sv_derived_from($arg, \"POSIX::SigSet\")) {
Perl_croak(aTHX_ \"$var is not of type POSIX::SigSet\");
} else {
\x{23}if PERL_VERSION > 15 || PERL_VERSION == 15 && PERL_SUBVERSION > 2
$var = (sigset_t *) SvPV_nolen(SvRV($arg));
\x{23}else
IV tmp = SvIV((SV*)SvRV($arg));
$var = INT2PTR(sigset_t*, tmp);
\x{23}endif
}
} else if (SvOK($arg)) {
int signo = (SvIOK($arg) || looks_like_number($arg)) && SvIV($arg) ? SvIV($arg) : whichsig(SvPV_nolen($arg));
SV* buffer = sv_2mortal(newSVpvn(\"\", 0));
sv_grow(buffer, sizeof(sigset_t));
$var = (sigset_t*)SvPV_nolen(buffer);
sigemptyset($var);
sigaddset($var, signo);
} else {
$var = NULL;
}
T_SIGNO
$var = (SvIOK($arg) || looks_like_number($arg)) && SvIV($arg) ? SvIV($arg) : whichsig(SvPV_nolen($arg));
T_TIMESPEC
if (SvROK($arg) && sv_derived_from($arg, \"Time::Spec\")) {
$var = *(struct timespec*)SvPV_nolen(SvRV($arg));
} else {
NV input = SvNV($arg);
$var.tv_sec = (time_t) floor(input);
$var.tv_nsec = (long) ((input - $var.tv_sec) * 1000000000);
}
T_INTOBJ
{
SV * sv = $arg;
if (SvROK(sv) && sv_derived_from(sv, \"$ntype\"))
$var = ($type)SvUV(SvRV(sv));
else
croak(\"%s: %s is not of type %s\", ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]}, \"$var\", \"$ntype\");
}
T_INTREF
{
SV * sv = $arg;
if (SvROK(sv) && SvIOK(SvRV(sv)))
$var = ($type)SvUV(SvRV(sv));
else
croak(\"%s: %s is not a reference\", ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]}, \"$var\");
}
T_SLURP_VAL
$var = ${ntype}_gather(&ST($argoff), items - $argoff)
T_SLURP_VAR
${ntype}_gather(&$var, &ST($argoff), items - $argoff)
T_SLURP_AV
$var = av_make(items - $argoff, &ST($argoff))
OUTPUT
T_TIMESPEC
sv_setnv($arg, $var.tv_sec + $var.tv_nsec / 1000000000.0);
T_INTOBJ
{
sv_setref_uv($arg, \"$ntype\", (UV)$var);
SvREADONLY_on(SvRV($arg));
}
T_INTREF
{
sv_setref_uv($arg, NULL, (UV)$var);
SvREADONLY_on(SvRV($arg));
}