TYPEMAP

B::SV		T_SV_OBJ
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
B::GV		T_SV_OBJ
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_UV
PADOFFSET	T_UV

B::HE		T_HE_OBJ
B::RHE		T_RHE_OBJ

INPUT
T_SV_OBJ
	if (SvROK($arg)) \{
	    IV tmp = SvIV((SV*)SvRV($arg));
	    $var = INT2PTR($type,tmp);
	\}
	else
	    croak(\"$var is not a reference\")

T_MG_OBJ
	if (SvROK($arg)) \{
	    IV tmp = SvIV((SV*)SvRV($arg));
	    $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_SV_OBJ
	make_sv_object(aTHX_ ($arg), (SV*)($var));


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));
