Skip to content

Commit

Permalink
[rt #69243] move our special typemap entries to the private typemap
Browse files Browse the repository at this point in the history
  • Loading branch information
tonycoz committed May 24, 2013
1 parent 987245e commit dc953dd
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 28 deletions.
28 changes: 0 additions & 28 deletions typemap
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,6 @@ HASH T_HVREF
utf8_str T_UTF8_STR
i_img_dim T_IV

double * T_AVARRAY
int * T_AVARRAY
i_img_dim * T_AVARRAY
i_color * T_AVARRAY

# these types are for use by Inline, which can't handle types containing ::
Imager__Color T_PTROBJ_INV
Imager__Color__Float T_PTROBJ_INV
Expand Down Expand Up @@ -81,29 +76,6 @@ T_PTROBJ_INV
else
croak(\"$var is not of type ${(my $ntt=$ntype)=~s/__/::/g;\$ntt}\");

T_AVARRAY
STMT_START {
SV* const xsub_tmp_sv = $arg;
SvGETMAGIC(xsub_tmp_sv);
if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVAV){
AV *xsub_tmp_av = (AV*)SvRV(xsub_tmp_sv);
STRLEN xsub_index;
size_$var = av_len(xsub_tmp_av) + 1;
$var = $ntype(size_$var);
for (xsub_index = 0; xsub_index < size_$var; ++xsub_index) {
SV **sv = av_fetch(xsub_tmp_av, xsub_index, 0);
if (sv) {
${var}[xsub_index] = Sv${(my $ntt = $ntype) =~ s/Ptr$//; \(ucfirst $ntt)}(*sv, \"$pname\");
}
}
}
else{
Perl_croak(aTHX_ \"%s: %s is not an ARRAY reference\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
\"$var\");
}
} STMT_END


#############################################################################
OUTPUT
Expand Down
30 changes: 30 additions & 0 deletions typemap.local
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ Imager::Internal::Hlines T_PTROBJ

Imager::Context T_PTROBJ

i_palidx T_IV
double * T_AVARRAY
int * T_AVARRAY
i_img_dim * T_AVARRAY
i_color * T_AVARRAY


#############################################################################
INPUT

Expand Down Expand Up @@ -102,6 +109,29 @@ T_IM_FSAMPLE_LIST
croak(\"$pname: no samples provided in $var\");
}

T_AVARRAY
STMT_START {
SV* const xsub_tmp_sv = $arg;
SvGETMAGIC(xsub_tmp_sv);
if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVAV){
AV *xsub_tmp_av = (AV*)SvRV(xsub_tmp_sv);
STRLEN xsub_index;
size_$var = av_len(xsub_tmp_av) + 1;
$var = $ntype(size_$var);
for (xsub_index = 0; xsub_index < size_$var; ++xsub_index) {
SV **sv = av_fetch(xsub_tmp_av, xsub_index, 0);
if (sv) {
${var}[xsub_index] = Sv${(my $ntt = $ntype) =~ s/Ptr$//; \(ucfirst $ntt)}(*sv, \"$pname\");
}
}
}
else{
Perl_croak(aTHX_ \"%s: %s is not an ARRAY reference\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
\"$var\");
}
} STMT_END

#############################################################################
OUTPUT

Expand Down

0 comments on commit dc953dd

Please sign in to comment.