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\")