Commit | Line | Data |
8df6cea6 |
1 | Thread T_XSCPTR |
d9bb3666 |
2 | |
3 | INPUT |
8df6cea6 |
4 | T_XSCPTR |
683929b4 |
5 | STMT_START { |
6 | MAGIC *mg; |
7 | SV *sv = ($arg); |
8 | |
9 | if (!sv_isobject(sv)) |
10 | croak(\"$var is not an object\"); |
8df6cea6 |
11 | sv = (SV*)SvRV(sv); |
7d901afa |
12 | if (!SvRMAGICAL(sv) || !(mg = mg_find(sv, '~')) |
13 | || mg->mg_private != ${ntype}_MAGIC_SIGNATURE) |
8df6cea6 |
14 | croak(\"XSUB ${func_name}: $var is a forged ${ntype} object\"); |
683929b4 |
15 | $var = ($type) SvPVX(mg->mg_obj); |
bf49b057 |
16 | DEBUG_S(PerlIO_printf(Perl_debug_log, |
a835d317 |
17 | \"XSUB ${func_name}: %p\\n\", $var)); |
683929b4 |
18 | } STMT_END |
734689b1 |
19 | T_IVREF |
20 | if (SvROK($arg)) |
21 | $var = ($type) SvIV((SV*)SvRV($arg)); |
22 | else |
23 | croak(\"$var is not a reference\") |
d9bb3666 |
24 | |