X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FB%2Ftypemap;h=7d14ba6d1206ed91caf22f0588eea51e183fec90;hb=3826db83dfffbbaee62e51e9a0f052b407c24562;hp=99aec73a3dade037978e54c95f31cdfe78b19732;hpb=1df3498620ecc1df99a2455e631a135f1710416f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/B/typemap b/ext/B/typemap index 99aec73..7d14ba6 100644 --- a/ext/B/typemap +++ b/ext/B/typemap @@ -17,6 +17,7 @@ B::PV T_SV_OBJ B::IV T_SV_OBJ B::NV T_SV_OBJ B::PVMG T_SV_OBJ +B::REGEXP T_SV_OBJ B::PVLV T_SV_OBJ B::BM T_SV_OBJ B::RV T_SV_OBJ @@ -32,6 +33,9 @@ SSize_t T_IV STRLEN T_UV PADOFFSET T_UV +B::HE T_HE_OBJ +B::RHE T_RHE_OBJ + INPUT T_OP_OBJ if (SvROK($arg)) { @@ -57,6 +61,22 @@ T_MG_OBJ else croak(\"$var is not a reference\") +T_HE_OBJ + if (SvROK($arg)) { + IV tmp = SvIV((SV*)SvRV($arg)); + $var = INT2PTR($type,tmp); + } + else + croak(\"$var is not a reference\") + +T_RHE_OBJ + if (SvROK($arg)) { + IV tmp = SvIV((SV*)SvRV($arg)); + $var = INT2PTR($type,tmp); + } + else + croak(\"$var is not a reference\") + OUTPUT T_OP_OBJ sv_setiv(newSVrv($arg, cc_opclassname(aTHX_ (OP*)$var)), PTR2IV($var)); @@ -67,3 +87,9 @@ T_SV_OBJ T_MG_OBJ sv_setiv(newSVrv($arg, "B::MAGIC"), PTR2IV($var)); + +T_HE_OBJ + sv_setiv(newSVrv($arg, "B::HE"), PTR2IV($var)); + +T_RHE_OBJ + sv_setiv(newSVrv($arg, "B::RHE"), PTR2IV($var));