diff options
Diffstat (limited to 'ext/B/typemap')
-rw-r--r-- | ext/B/typemap | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ext/B/typemap b/ext/B/typemap index 5e342749d2..f3e253b97d 100644 --- a/ext/B/typemap +++ b/ext/B/typemap @@ -36,6 +36,8 @@ PADOFFSET T_UV B::HE T_HE_OBJ B::RHE T_RHE_OBJ +B::PADLIST T_PL_OBJ + INPUT T_OP_OBJ if (SvROK($arg)) { @@ -77,7 +79,18 @@ T_RHE_OBJ else croak(\"$var is not a reference\") +T_PL_OBJ + if (SvROK($arg)) { + IV tmp = SvIV((SV*)SvRV($arg)); + $var = INT2PTR($type,tmp); + } + else + croak(\"$var is not a reference\") + OUTPUT +T_SV_OBJ + make_sv_object(aTHX_ ($arg), (SV*)($var)); + T_MG_OBJ sv_setiv(newSVrv($arg, "B::MAGIC"), PTR2IV($var)); @@ -86,3 +99,7 @@ T_HE_OBJ T_RHE_OBJ sv_setiv(newSVrv($arg, "B::RHE"), PTR2IV($var)); + +T_PL_OBJ + sv_setiv(newSVrv($arg, $var ? "B::PADLIST" : "B::NULL"), + PTR2IV($var)); |