10 unsigned char T_U_CHAR
17 # bool_t is defined in <rpc/rpc.h>
22 unsigned long * T_OPAQUEPTR
28 # These are the backwards-compatibility AV*/HV* typemaps that
29 # do not decrement refcounts. Locally override with
30 # "AV* T_AVREF_REFCOUNT_FIXED", "HV* T_HVREF_REFCOUNT_FIXED",
31 # "CV* T_CVREF_REFCOUNT_FIXED", "SVREF T_SVREF_REFCOUNT_FIXED",
32 # to get the fixed versions.
62 #############################################################################
68 SV* const xsub_tmp_sv = $arg;
69 SvGETMAGIC(xsub_tmp_sv);
70 if (SvROK(xsub_tmp_sv)){
71 $var = SvRV(xsub_tmp_sv);
74 Perl_croak_nocontext(\"%s: %s is not a reference\",
75 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
79 T_SVREF_REFCOUNT_FIXED
81 SV* const xsub_tmp_sv = $arg;
82 SvGETMAGIC(xsub_tmp_sv);
83 if (SvROK(xsub_tmp_sv)){
84 $var = SvRV(xsub_tmp_sv);
87 Perl_croak_nocontext(\"%s: %s is not a reference\",
88 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
94 SV* const xsub_tmp_sv = $arg;
95 SvGETMAGIC(xsub_tmp_sv);
96 if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVAV){
97 $var = (AV*)SvRV(xsub_tmp_sv);
100 Perl_croak_nocontext(\"%s: %s is not an ARRAY reference\",
101 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
105 T_AVREF_REFCOUNT_FIXED
107 SV* const xsub_tmp_sv = $arg;
108 SvGETMAGIC(xsub_tmp_sv);
109 if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVAV){
110 $var = (AV*)SvRV(xsub_tmp_sv);
113 Perl_croak_nocontext(\"%s: %s is not an ARRAY reference\",
114 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
120 SV* const xsub_tmp_sv = $arg;
121 SvGETMAGIC(xsub_tmp_sv);
122 if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVHV){
123 $var = (HV*)SvRV(xsub_tmp_sv);
126 Perl_croak_nocontext(\"%s: %s is not a HASH reference\",
127 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
131 T_HVREF_REFCOUNT_FIXED
133 SV* const xsub_tmp_sv = $arg;
134 SvGETMAGIC(xsub_tmp_sv);
135 if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVHV){
136 $var = (HV*)SvRV(xsub_tmp_sv);
139 Perl_croak_nocontext(\"%s: %s is not a HASH reference\",
140 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
148 SV * const xsub_tmp_sv = $arg;
149 SvGETMAGIC(xsub_tmp_sv);
150 $var = sv_2cv(xsub_tmp_sv, &st, &gvp, 0);
152 Perl_croak_nocontext(\"%s: %s is not a CODE reference\",
153 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
157 T_CVREF_REFCOUNT_FIXED
161 SV * const xsub_tmp_sv = $arg;
162 SvGETMAGIC(xsub_tmp_sv);
163 $var = sv_2cv(xsub_tmp_sv, &st, &gvp, 0);
165 Perl_croak_nocontext(\"%s: %s is not a CODE reference\",
166 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
173 $var = ($type)SvUV($arg)
175 $var = ($type)SvIV($arg)
177 $var = (int)SvIV($arg)
179 $var = ($type)SvIV($arg)
181 $var = (bool)SvTRUE($arg)
183 $var = (unsigned int)SvUV($arg)
185 $var = (short)SvIV($arg)
187 $var = (unsigned short)SvUV($arg)
189 $var = (long)SvIV($arg)
191 $var = (unsigned long)SvUV($arg)
193 $var = (char)*SvPV_nolen($arg)
195 $var = (unsigned char)SvUV($arg)
197 $var = (float)SvNV($arg)
199 $var = ($type)SvNV($arg)
201 $var = (double)SvNV($arg)
203 $var = ($type)SvPV_nolen($arg)
205 $var = INT2PTR($type,SvIV($arg))
208 IV tmp = SvIV((SV*)SvRV($arg));
209 $var = INT2PTR($type,tmp);
212 Perl_croak_nocontext(\"%s: %s is not a reference\",
213 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
216 if (sv_isa($arg, \"${ntype}\")) {
217 IV tmp = SvIV((SV*)SvRV($arg));
218 $var = *INT2PTR($type *, tmp);
221 Perl_croak_nocontext(\"%s: %s is not of type %s\",
222 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
223 \"$var\", \"$ntype\")
225 if (sv_isa($arg, \"${ntype}\")) {
226 IV tmp = SvIV((SV*)SvRV($arg));
227 $var = INT2PTR($type, tmp);
230 Perl_croak_nocontext(\"%s: %s is not of type %s\",
231 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
232 \"$var\", \"$ntype\")
234 if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
235 IV tmp = SvIV((SV*)SvRV($arg));
236 $var = INT2PTR($type,tmp);
239 Perl_croak_nocontext(\"%s: %s is not of type %s\",
240 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
241 \"$var\", \"$ntype\")
243 if (sv_isa($arg, \"${ntype}\")) {
244 IV tmp = SvIV((SV*)SvRV($arg));
245 ${type}_desc = (\U${type}_DESC\E*) tmp;
246 $var = ${type}_desc->ptr;
249 Perl_croak_nocontext(\"%s: %s is not of type %s\",
250 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
251 \"$var\", \"$ntype\")
254 IV tmp = SvIV((SV*)SvRV($arg));
255 $var = *INT2PTR($type,tmp);
258 Perl_croak_nocontext(\"%s: %s is not a reference\",
259 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
262 if (sv_isa($arg, \"${ntype}\")) {
263 IV tmp = SvIV((SV*)SvRV($arg));
264 $var = *INT2PTR($type,tmp);
267 Perl_croak_nocontext(\"%s: %s is not of type %s\",
268 ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
269 \"$var\", \"$ntype\")
271 $var = *($type *)SvPV_nolen($arg)
273 $var = ($type)SvPV_nolen($arg)
275 $var = XS_unpack_$ntype($arg)
277 $var = XS_unpack_$ntype($arg)
279 U32 ix_$var = $argoff;
280 $var = $ntype(items -= $argoff);
285 /* this is the number of elements in the array */
288 $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
290 $var = IoIFP(sv_2io($arg))
292 $var = IoIFP(sv_2io($arg))
294 $var = IoOFP(sv_2io($arg))
295 #############################################################################
300 $arg = newRV((SV*)$var);
301 T_SVREF_REFCOUNT_FIXED
302 $arg = newRV_noinc((SV*)$var);
304 $arg = newRV((SV*)$var);
305 T_AVREF_REFCOUNT_FIXED
306 $arg = newRV_noinc((SV*)$var);
308 $arg = newRV((SV*)$var);
309 T_HVREF_REFCOUNT_FIXED
310 $arg = newRV_noinc((SV*)$var);
312 $arg = newRV((SV*)$var);
313 T_CVREF_REFCOUNT_FIXED
314 $arg = newRV_noinc((SV*)$var);
316 sv_setiv($arg, (IV)$var);
318 sv_setuv($arg, (UV)$var);
320 sv_setiv($arg, (IV)$var);
324 sv_setpvn($arg, "0 but true", 10);
326 sv_setiv($arg, (IV)$var);
329 sv_setiv($arg, (IV)$var);
331 ${"$var" eq "RETVAL" ? \"$arg = boolSV($var);" : \"sv_setsv($arg, boolSV($var));"}
333 sv_setuv($arg, (UV)$var);
335 sv_setiv($arg, (IV)$var);
337 sv_setuv($arg, (UV)$var);
339 sv_setiv($arg, (IV)$var);
341 sv_setuv($arg, (UV)$var);
343 sv_setpvn($arg, (char *)&$var, 1);
345 sv_setuv($arg, (UV)$var);
347 sv_setnv($arg, (double)$var);
349 sv_setnv($arg, (NV)$var);
351 sv_setnv($arg, (double)$var);
353 sv_setpv((SV*)$arg, $var);
355 sv_setiv($arg, PTR2IV($var));
357 sv_setref_pv($arg, Nullch, (void*)$var);
359 sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
361 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
363 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
365 sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
371 sv_setpvn($arg, (char *)&$var, sizeof($var));
373 sv_setpvn($arg, (char *)$var, sizeof(*$var));
375 XS_pack_$ntype($arg, $var);
377 XS_pack_$ntype($arg, $var, count_$ntype);
381 SSize_t extend_size =
382 /* The weird way this is written is because g++ is dumb
383 * enough to warn "comparison is always false" on something
386 * sizeof(a) > sizeof(b) && a > B_t_MAX
388 * (where the LH condition is false)
390 (size_$var > (sizeof(size_$var) > sizeof(SSize_t)
391 ? SSize_t_MAX : size_$var))
392 ? -1 : (SSize_t)size_$var;
393 EXTEND(SP, extend_size);
394 for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
395 ST(ix_$var) = sv_newmortal();
401 GV *gv = (GV *)sv_newmortal();
402 PerlIO *fp = PerlIO_importFILE($var,0);
403 gv_init_pvn(gv, gv_stashpvs("$Package",1),"__ANONIO__",10,0);
404 if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) ) {
405 SV *rv = newRV_inc((SV*)gv);
406 rv = sv_bless(rv, GvSTASH(gv));
407 ${"$var" eq "RETVAL" ? \"$arg = sv_2mortal(rv);"
408 : \"sv_setsv($arg, rv);\n\t\tSvREFCNT_dec_NN(rv);"}
409 }${"$var" ne "RETVAL" ? \"
411 sv_setsv($arg, &PL_sv_undef);\n" : \""}
415 GV *gv = (GV *)sv_newmortal();
416 gv_init_pvn(gv, gv_stashpvs("$Package",1),"__ANONIO__",10,0);
417 if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) ) {
418 SV *rv = newRV_inc((SV*)gv);
419 rv = sv_bless(rv, GvSTASH(gv));
420 ${"$var" eq "RETVAL" ? \"$arg = sv_2mortal(rv);"
421 : \"sv_setsv($arg, rv);\n\t\tSvREFCNT_dec_NN(rv);"}
422 }${"$var" ne "RETVAL" ? \"
424 sv_setsv($arg, &PL_sv_undef);\n" : \""}
428 GV *gv = (GV *)sv_newmortal();
429 gv_init_pvn(gv, gv_stashpvs("$Package",1),"__ANONIO__",10,0);
430 if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) ) {
431 SV *rv = newRV_inc((SV*)gv);
432 rv = sv_bless(rv, GvSTASH(gv));
433 ${"$var" eq "RETVAL" ? \"$arg = sv_2mortal(rv);"
434 : \"sv_setsv($arg, rv);\n\t\tSvREFCNT_dec_NN(rv);"}
435 }${"$var" ne "RETVAL" ? \"
437 sv_setsv($arg, &PL_sv_undef);\n" : \""}
441 GV *gv = (GV *)sv_newmortal();
442 gv_init_pvn(gv, gv_stashpvs("$Package",1),"__ANONIO__",10,0);
443 if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) ) {
444 SV *rv = newRV_inc((SV*)gv);
445 rv = sv_bless(rv, GvSTASH(gv));
446 ${"$var" eq "RETVAL" ? \"$arg = sv_2mortal(rv);"
447 : \"sv_setsv($arg, rv);\n\t\tSvREFCNT_dec_NN(rv);"}
448 }${"$var" ne "RETVAL" ? \"
450 sv_setsv($arg, &PL_sv_undef);\n" : \""}