Thread T_XSCPTR
INPUT
T_XSCPTR
STMT_START {
MAGIC *mg;
SV *sv = ($arg);
if (!sv_isobject(sv))
croak(\"$var is not an object\");
sv = (SV*)SvRV(sv);
if (!SvRMAGICAL(sv) || !(mg = mg_find(sv, '~'))
|| mg->mg_private != ${ntype}_MAGIC_SIGNATURE)
croak(\"XSUB ${func_name}: $var is a forged ${ntype} object\");
$var = ($type) SvPVX(mg->mg_obj);
DEBUG_S(PerlIO_printf(Perl_debug_log,
\"XSUB ${func_name}: %p\\n\", $var));
} STMT_END
T_IVREF
if (SvROK($arg))
$var = ($type) SvIV((SV*)SvRV($arg));
else
croak(\"$var is not a reference\")