9 unsigned short T_U_SHORT
12 unsigned char * T_STRING
14 unsigned long * T_OPAQUEPTR
32 #############################################################################
37 if (sv_isa($arg, \"${ntype}\"))
38 $var = (AV*)SvRV($arg);
40 croak(\"$var is not of type ${ntype}\")
42 if (sv_isa($arg, \"${ntype}\"))
43 $var = (AV*)SvRV($arg);
45 croak(\"$var is not of type ${ntype}\")
47 if (sv_isa($arg, \"${ntype}\"))
48 $var = (HV*)SvRV($arg);
50 croak(\"$var is not of type ${ntype}\")
52 if (sv_isa($arg, \"${ntype}\"))
53 $var = (CV*)SvRV($arg);
55 croak(\"$var is not of type ${ntype}\")
59 $var = (int)SvIV($arg)
61 $var = ($type)SvIV($arg)
63 $var = (unsigned int)SvIV($arg)
65 $var = (short)SvIV($arg)
67 $var = (unsigned short)SvIV($arg)
69 $var = (long)SvIV($arg)
71 $var = (unsigned long)SvIV($arg)
73 $var = (char)*SvPV($arg,na)
75 $var = (unsigned char)SvIV($arg)
77 $var = (float)SvNV($arg)
83 $var = ($type)(unsigned long)SvNV($arg)
86 $var = ($type)(unsigned long)SvNV((SV*)SvRV($arg));
88 croak(\"$var is not a reference\")
90 if (sv_isa($arg, \"${ntype}\"))
91 $var = ($type)(unsigned long)SvNV((SV*)SvRV($arg));
93 croak(\"$var is not of type ${ntype}\")
95 if (sv_isa($arg, \"${ntype}\")) {
96 ${type}_desc = (\U${type}_DESC\E*)(unsigned long)SvNV((SV*)SvRV($arg));
97 $var = ${type}_desc->ptr;
100 croak(\"$var is not of type ${ntype}\")
103 $var = *($type)(unsigned long)SvNV((SV*)SvRV($arg));
105 croak(\"$var is not a reference\")
107 if (sv_isa($arg, \"${ntype}\"))
108 $var = *($type)(unsigned long)SvNV((SV*)SvRV($arg));
110 croak(\"$var is not of type ${ntype}\")
114 $var = ($type)SvPV($arg,na)
116 $var = XS_unpack_$ntype($arg)
118 $var = XS_unpack_$ntype($arg)
120 $var = make_perl_cb_$type($arg)
122 $var = $ntype(items -= $argoff);
123 U32 ix_$var = $argoff;
127 #############################################################################
132 $arg = newRV((SV*)$var);
134 $arg = newRV((SV*)$var);
136 $arg = newRV((SV*)$var);
138 $arg = newRV((SV*)$var);
140 sv_setiv($arg, (I32)$var);
144 sv_setpvn($arg, "0 but true", 10);
146 sv_setiv($arg, (I32)$var);
149 sv_setiv($arg, (I32)$var);
151 sv_setiv($arg, (I32)$var);
153 sv_setiv($arg, (I32)$var);
155 sv_setiv($arg, (I32)$var);
157 sv_setiv($arg, (I32)$var);
159 sv_setiv($arg, (I32)$var);
161 sv_setpvn($arg, (char *)&$var, 1);
163 sv_setiv($arg, (I32)$var);
165 sv_setnv($arg, (double)$var);
167 sv_setnv($arg, $var);
169 sv_setpv($arg, $var);
171 sv_setnv($arg, (double)(unsigned long)$var);
173 sv_setptrref($arg, $var);
175 sv_setptrobj($arg, $var, \"${ntype}\");
177 sv_setptrobj($arg, (void*)new\U${type}_DESC\E($var), \"${ntype}\");
179 sv_setrefref($arg, \"${ntype}\", XS_service_$ntype,
180 ($var ? (void*)new $ntype($var) : 0));
184 sv_setpvn($arg, (char *)&$var, sizeof($var));
186 sv_setpvn($arg, (char *)$var, sizeof(*$var)), XFree((char *)$var);
188 XS_pack_$ntype($arg, $var);
190 XS_pack_$ntype($arg, $var, count_$ntype);
192 sv_setpvn($arg, $var.chp(), $var.size());
194 sv_setpvn($arg, $var.context.value().chp(),
195 $var.context.value().size());
197 ST_EXTEND($var.size);
198 for (U32 ix_$var = 0; ix_$var < $var.size; ix_$var++) {
199 ST(ix_$var) = sv_newmortal();