11 unsigned char T_U_CHAR
21 unsigned long * T_OPAQUEPTR
50 #############################################################################
55 if (sv_isa($arg, \"${ntype}\"))
56 $var = (SV*)SvRV($arg);
58 croak(\"$var is not of type ${ntype}\")
60 if (sv_isa($arg, \"${ntype}\"))
61 $var = (AV*)SvRV($arg);
63 croak(\"$var is not of type ${ntype}\")
65 if (sv_isa($arg, \"${ntype}\"))
66 $var = (HV*)SvRV($arg);
68 croak(\"$var is not of type ${ntype}\")
70 if (sv_isa($arg, \"${ntype}\"))
71 $var = (CV*)SvRV($arg);
73 croak(\"$var is not of type ${ntype}\")
77 $var = ($type)SvIV($arg)
79 $var = (int)SvIV($arg)
81 $var = ($type)SvIV($arg)
83 $var = (int)SvIV($arg)
85 $var = (unsigned int)SvIV($arg)
87 $var = (short)SvIV($arg)
89 $var = (unsigned short)SvIV($arg)
91 $var = (long)SvIV($arg)
93 $var = (unsigned long)SvIV($arg)
95 $var = (char)*SvPV($arg,na)
97 $var = (unsigned char)SvIV($arg)
99 $var = (float)SvNV($arg)
101 $var = ($type)SvNV($arg)
103 $var = (double)SvNV($arg)
105 $var = ($type)SvPV($arg,na)
107 $var = ($type)SvIV($arg)
110 IV tmp = SvIV((SV*)SvRV($arg));
114 croak(\"$var is not a reference\")
116 if (sv_isa($arg, \"${type}\")) {
117 IV tmp = SvIV((SV*)SvRV($arg));
118 $var = *($type *) tmp;
121 croak(\"$var is not of type ${ntype}\")
123 if (sv_isa($arg, \"${type}\")) {
124 IV tmp = SvIV((SV*)SvRV($arg));
128 croak(\"$var is not of type ${ntype}\")
130 if (sv_derived_from($arg, \"${ntype}\")) {
131 IV tmp = SvIV((SV*)SvRV($arg));
135 croak(\"$var is not of type ${ntype}\")
137 if (sv_isa($arg, \"${ntype}\")) {
138 IV tmp = SvIV((SV*)SvRV($arg));
139 ${type}_desc = (\U${type}_DESC\E*) tmp;
140 $var = ${type}_desc->ptr;
143 croak(\"$var is not of type ${ntype}\")
146 IV tmp = SvIV((SV*)SvRV($arg));
150 croak(\"$var is not a reference\")
152 if (sv_isa($arg, \"${ntype}\")) {
153 IV tmp = SvIV((SV*)SvRV($arg));
157 croak(\"$var is not of type ${ntype}\")
161 $var = ($type)SvPV($arg,na)
163 $var = XS_unpack_$ntype($arg)
165 $var = XS_unpack_$ntype($arg)
167 $var = make_perl_cb_$type($arg)
169 $var = $ntype(items -= $argoff);
170 U32 ix_$var = $argoff;
175 $var = IoIFP(sv_2io($arg))
177 $var = IoIFP(sv_2io($arg))
179 $var = IoOFP(sv_2io($arg))
180 #############################################################################
185 $arg = newRV((SV*)$var);
187 $arg = newRV((SV*)$var);
189 $arg = newRV((SV*)$var);
191 $arg = newRV((SV*)$var);
193 SvSetMagicIV($arg, (IV)$var);
195 SvSetMagicIV($arg, (IV)$var);
199 SvSetMagicPVN($arg, "0 but true", 10);
201 SvSetMagicIV($arg, (IV)$var);
204 SvSetMagicIV($arg, (IV)$var);
208 SvSetMagicIV($arg, (IV)$var);
210 SvSetMagicIV($arg, (IV)$var);
212 SvSetMagicIV($arg, (IV)$var);
214 SvSetMagicIV($arg, (IV)$var);
216 SvSetMagicIV($arg, (IV)$var);
218 SvSetMagicPVN($arg, (char *)&$var, 1);
220 SvSetMagicIV($arg, (IV)$var);
222 SvSetMagicNV($arg, (double)$var);
224 SvSetMagicNV($arg, (double)$var);
226 SvSetMagicNV($arg, (double)$var);
228 SvSetMagicPV((SV*)$arg, $var);
230 SvSetMagicIV($arg, (IV)$var);
232 sv_setref_pv($arg, Nullch, (void*)$var);
234 sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
236 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
238 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
240 sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
242 sv_setrefref($arg, \"${ntype}\", XS_service_$ntype,
243 ($var ? (void*)new $ntype($var) : 0));
247 SvSetMagicPVN($arg, (char *)&$var, sizeof($var));
249 SvSetMagicPVN($arg, (char *)$var, sizeof(*$var)), XFree((char *)$var);
251 XS_pack_$ntype($arg, $var);
253 XS_pack_$ntype($arg, $var, count_$ntype);
255 SvSetMagicPVN($arg, $var.chp(), $var.size());
257 SvSetMagicPVN($arg, $var.context.value().chp(),
258 $var.context.value().size());
260 ST_EXTEND($var.size);
261 for (U32 ix_$var = 0; ix_$var < $var.size; ix_$var++) {
262 ST(ix_$var) = sv_newmortal();
268 GV *gv = newGVgen("$Package");
269 if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
270 SvSetMagicSV($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
276 GV *gv = newGVgen("$Package");
277 if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
278 SvSetMagicSV($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
284 GV *gv = newGVgen("$Package");
285 if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
286 SvSetMagicSV($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));