summaryrefslogtreecommitdiff
path: root/typemap
diff options
context:
space:
mode:
Diffstat (limited to 'typemap')
-rw-r--r--typemap21
1 files changed, 21 insertions, 0 deletions
diff --git a/typemap b/typemap
new file mode 100644
index 0000000..337bc2f
--- /dev/null
+++ b/typemap
@@ -0,0 +1,21 @@
+HV * T_HVREF_REFCOUNT_FIXED
+
+INPUT
+T_HVREF_REFCOUNT_FIXED
+ STMT_START {
+ SV* const xsub_tmp_sv = $arg;
+ SvGETMAGIC(xsub_tmp_sv);
+ if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVHV){
+ $var = (HV*)SvRV(xsub_tmp_sv);
+ }
+ else{
+ Perl_croak(aTHX_ \"%s: %s is not a HASH reference\",
+ ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+ \"$var\");
+ }
+ } STMT_END
+
+OUTPUT
+T_HVREF_REFCOUNT_FIXED
+ $arg = newRV_noinc((SV*)$var);
+