blob: f9a981831652fd9ea351fd28eac45ba2bf62bf71 [file] [log] [blame]
TYPEMAP
void * T_VPTR
char_len * T_CHAR_LEN
const char_len * T_CONST_CHAR_LEN
######################################################################
OUTPUT
T_POOLOBJ
sv_setref_pv($arg, \"${ntype}\", (void*)$var);
T_APACHEOBJ
sv_setref_pv($arg, \"${ntype}\", (void*)$var);
T_HASHOBJ
$arg = modperl_hash_tie(aTHX_ \"${ntype}\", $arg, $var);
T_VPTR
sv_setiv($arg, PTR2IV($var));
T_UVPTR
sv_setuv($arg, PTR2UV($var));
T_APR_TIME
sv_setnv($arg, (NV)(apr_time_sec($var)));
T_UVOBJ
modperl_perl_sv_setref_uv(aTHX_ $arg, \"${ntype}\", (UV)$var);
######################################################################
INPUT
T_PTROBJ
if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
$var = INT2PTR($type, tmp);
}
else {
Perl_croak(aTHX_ SvROK($arg) ?
\"$var is not of type ${ntype}\" :
\"$var is not a blessed reference\");
}
T_POOLOBJ
if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
if (tmp == 0) {
Perl_croak(aTHX_ \"invalid pool object (already destroyed?)\");
}
$var = INT2PTR($type, tmp);
}
else {
Perl_croak(aTHX_ SvROK($arg) ?
\"$var is not of type ${ntype}\" :
\"$var is not a blessed reference\");
}
T_UVOBJ
if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
UV tmp = SvUV((SV*)SvRV($arg));
$var = INT2PTR($type, tmp);
}
else {
Perl_croak(aTHX_ SvROK($arg) ?
\"$var is not of type ${ntype}\" :
\"$var is not a blessed reference\");
}
T_APACHEOBJ
$var = modperl_xs_sv2request_rec(aTHX_ $arg, \"$ntype\", cv)
T_HASHOBJ
$var = modperl_hash_tied_object(aTHX_ \"${ntype}\", $arg)
T_APACHEREF
$var = modperl_xs_sv2request_rec(aTHX_ $arg, \"$ntype\", cv)
T_VPTR
$var = INT2PTR($type, SvIV(SvROK($arg) ? SvRV($arg) : $arg))
T_UVPTR
$var = INT2PTR($type, SvUV(SvROK($arg) ? SvRV($arg) : $arg))
T_APR_TIME
$var = (apr_time_t)(apr_time_from_sec(SvNV($arg)))
T_CHAR_LEN
$var = (char *)SvPV($arg, ${var}_len)
T_CONST_CHAR_LEN
$var = (const char *)SvPV($arg, ${var}_len)