X-Git-Url: http://git.imager.perl.org/imager.git/blobdiff_plain/dc953ddaf99d7fe20b8d5dbbfcbce0110e0cabe1..e1c0692925:/typemap?ds=sidebyside diff --git a/typemap b/typemap index 83f7152f..d7d57a1f 100644 --- a/typemap +++ b/typemap @@ -6,13 +6,15 @@ Imager::Font::TT T_PTROBJ Imager::IO T_PTROBJ Imager::FillHandle T_PTROBJ const char * T_PV -float T_FLOAT +im_float T_FLOAT float* T_ARRAY undef_int T_IV_U undef_neg_int T_IV_NEGU HASH T_HVREF utf8_str T_UTF8_STR -i_img_dim T_IV +i_img_dim T_IV_checked +im_double T_NV_checked + # these types are for use by Inline, which can't handle types containing :: Imager__Color T_PTROBJ_INV @@ -76,6 +78,27 @@ T_PTROBJ_INV else croak(\"$var is not of type ${(my $ntt=$ntype)=~s/__/::/g;\$ntt}\"); +T_NV_checked + { + SvGETMAGIC($arg); + if (SvROK($arg) && !SvAMAGIC($arg)) { + croak(\"Numeric argument '$var' shouldn't be a reference\"); + } + else { + $var = ($type)SvNV($arg); + } + } + +T_IV_checked + { + SvGETMAGIC($arg); + if (SvROK($arg) && !SvAMAGIC($arg)) { + croak(\"Numeric argument '$var' shouldn't be a reference\"); + } + else { + $var = ($type)SvIV($arg); + } + } ############################################################################# OUTPUT @@ -108,3 +131,9 @@ T_IMAGER_FULL_IMAGE else { $arg = &PL_sv_undef; } + +T_IV_checked + sv_setiv($arg, (IV)$var); + +T_NV_checked + sv_setnv($arg, (NV)$var);