X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FB%2Ftypemap;h=7d14ba6d1206ed91caf22f0588eea51e183fec90;hb=3826db83dfffbbaee62e51e9a0f052b407c24562;hp=5f6af0f2dc44b66e34344b05d1396b48dfc87b23;hpb=427181846486e3aa5034a647dc1922377185f4c0;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/B/typemap b/ext/B/typemap index 5f6af0f..7d14ba6 100644 --- a/ext/B/typemap +++ b/ext/B/typemap @@ -7,9 +7,8 @@ B::LOGOP T_OP_OBJ B::LISTOP T_OP_OBJ B::PMOP T_OP_OBJ B::SVOP T_OP_OBJ -B::GVOP T_OP_OBJ +B::PADOP T_OP_OBJ B::PVOP T_OP_OBJ -B::CVOP T_OP_OBJ B::LOOP T_OP_OBJ B::COP T_OP_OBJ @@ -18,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 @@ -26,16 +26,21 @@ B::CV T_SV_OBJ B::HV T_SV_OBJ B::AV T_SV_OBJ B::IO T_SV_OBJ +B::FM T_SV_OBJ B::MAGIC T_MG_OBJ SSize_t T_IV -STRLEN 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)) { IV tmp = SvIV((SV*)SvRV($arg)); - $var = ($type)PTR_CAST tmp; + $var = INT2PTR($type,tmp); } else croak(\"$var is not a reference\") @@ -43,7 +48,7 @@ T_OP_OBJ T_SV_OBJ if (SvROK($arg)) { IV tmp = SvIV((SV*)SvRV($arg)); - $var = ($type)PTR_CAST tmp; + $var = INT2PTR($type,tmp); } else croak(\"$var is not a reference\") @@ -51,18 +56,40 @@ T_SV_OBJ T_MG_OBJ if (SvROK($arg)) { IV tmp = SvIV((SV*)SvRV($arg)); - $var = ($type)PTR_CAST tmp; + $var = INT2PTR($type,tmp); + } + 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)), (IV)PTR_CAST $var); + sv_setiv(newSVrv($arg, cc_opclassname(aTHX_ (OP*)$var)), PTR2IV($var)); T_SV_OBJ make_sv_object(aTHX_ ($arg), (SV*)($var)); T_MG_OBJ - sv_setiv(newSVrv($arg, "B::MAGIC"), (IV)PTR_CAST $var); + 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));