This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Module::CoreList for 5.34.0
[perl5.git] / dist / Time-HiRes / typemap
CommitLineData
3f2ee006 1# basic C types
708180a3
TK
2int T_IV
3unsigned T_UV
4unsigned int T_UV
5long T_IV
6unsigned long T_UV
7short T_IV
8unsigned short T_UV
9char T_CHAR
10unsigned char T_U_CHAR
11char * T_PV
12unsigned char * T_PV
13const char * T_PV
14caddr_t T_PV
15wchar_t * T_PV
16wchar_t T_IV
17bool_t T_IV
18size_t T_UV
19ssize_t T_IV
20time_t T_NV
21unsigned long * T_OPAQUEPTR
22char ** T_PACKEDARRAY
23void * T_PTR
24Time_t * T_PV
25SV * T_SV
26SVREF T_SVREF
27AV * T_AVREF
28HV * T_HVREF
29CV * T_CVREF
3f2ee006 30
2979fdf3
DIM
31clockid_t T_IV
32
708180a3
TK
33IV T_IV
34UV T_UV
3f2ee006 35NV T_NV
708180a3
TK
36I32 T_IV
37I16 T_IV
38I8 T_IV
39STRLEN T_UV
40U32 T_U_LONG
41U16 T_U_SHORT
42U8 T_UV
43Result T_U_CHAR
44Boolean T_BOOL
3f2ee006 45float T_FLOAT
708180a3
TK
46double T_DOUBLE
47SysRet T_SYSRET
48SysRetLong T_SYSRET
49FILE * T_STDIO
50PerlIO * T_INOUT
51FileHandle T_PTROBJ
52InputStream T_IN
53InOutStream T_INOUT
54OutputStream T_OUT
55bool T_BOOL
3f2ee006
HS
56
57#############################################################################
58INPUT
59T_SV
708180a3 60 $var = $arg
3f2ee006 61T_SVREF
708180a3
TK
62 if (SvROK($arg))
63 $var = (SV*)SvRV($arg);
64 else
65 Perl_croak(aTHX_ \"$var is not a reference\")
3f2ee006 66T_AVREF
708180a3
TK
67 if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
68 $var = (AV*)SvRV($arg);
69 else
70 Perl_croak(aTHX_ \"$var is not an array reference\")
3f2ee006 71T_HVREF
708180a3
TK
72 if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVHV)
73 $var = (HV*)SvRV($arg);
74 else
75 Perl_croak(aTHX_ \"$var is not a hash reference\")
3f2ee006 76T_CVREF
708180a3
TK
77 if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVCV)
78 $var = (CV*)SvRV($arg);
79 else
80 Perl_croak(aTHX_ \"$var is not a code reference\")
3f2ee006 81T_SYSRET
708180a3 82 $var NOT IMPLEMENTED
3f2ee006 83T_UV
708180a3 84 $var = ($type)SvUV($arg)
3f2ee006 85T_IV
708180a3 86 $var = ($type)SvIV($arg)
3f2ee006 87T_INT
708180a3 88 $var = (int)SvIV($arg)
3f2ee006 89T_ENUM
708180a3 90 $var = ($type)SvIV($arg)
3f2ee006 91T_BOOL
708180a3 92 $var = (bool)SvTRUE($arg)
3f2ee006 93T_U_INT
708180a3 94 $var = (unsigned int)SvUV($arg)
3f2ee006 95T_SHORT
708180a3 96 $var = (short)SvIV($arg)
3f2ee006 97T_U_SHORT
708180a3 98 $var = (unsigned short)SvUV($arg)
3f2ee006 99T_LONG
708180a3 100 $var = (long)SvIV($arg)
3f2ee006 101T_U_LONG
708180a3 102 $var = (unsigned long)SvUV($arg)
3f2ee006 103T_CHAR
708180a3 104 $var = (char)*SvPV_nolen($arg)
3f2ee006 105T_U_CHAR
708180a3 106 $var = (unsigned char)SvUV($arg)
3f2ee006 107T_FLOAT
708180a3 108 $var = (float)SvNV($arg)
3f2ee006 109T_NV
708180a3 110 $var = ($type)SvNV($arg)
3f2ee006 111T_DOUBLE
708180a3 112 $var = (double)SvNV($arg)
3f2ee006 113T_PV
708180a3 114 $var = ($type)SvPV_nolen($arg)
3f2ee006 115T_PTR
708180a3 116 $var = INT2PTR($type,SvIV($arg))
3f2ee006 117T_PTRREF
708180a3
TK
118 if (SvROK($arg)) {
119 IV tmp = SvIV((SV*)SvRV($arg));
120 $var = INT2PTR($type,tmp);
121 }
122 else
123 Perl_croak(aTHX_ \"$var is not a reference\")
3f2ee006 124T_REF_IV_REF
708180a3
TK
125 if (sv_isa($arg, \"${ntype}\")) {
126 IV tmp = SvIV((SV*)SvRV($arg));
127 $var = *INT2PTR($type *, tmp);
128 }
129 else
130 Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
3f2ee006 131T_REF_IV_PTR
708180a3
TK
132 if (sv_isa($arg, \"${ntype}\")) {
133 IV tmp = SvIV((SV*)SvRV($arg));
134 $var = INT2PTR($type, tmp);
135 }
136 else
137 Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
3f2ee006 138T_PTROBJ
708180a3
TK
139 if (sv_derived_from($arg, \"${ntype}\")) {
140 IV tmp = SvIV((SV*)SvRV($arg));
141 $var = INT2PTR($type,tmp);
142 }
143 else
144 Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
3f2ee006 145T_PTRDESC
708180a3
TK
146 if (sv_isa($arg, \"${ntype}\")) {
147 IV tmp = SvIV((SV*)SvRV($arg));
148 ${type}_desc = (\U${type}_DESC\E*) tmp;
149 $var = ${type}_desc->ptr;
150 }
151 else
152 Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
3f2ee006 153T_REFREF
708180a3
TK
154 if (SvROK($arg)) {
155 IV tmp = SvIV((SV*)SvRV($arg));
156 $var = *INT2PTR($type,tmp);
157 }
158 else
159 Perl_croak(aTHX_ \"$var is not a reference\")
3f2ee006 160T_REFOBJ
708180a3
TK
161 if (sv_isa($arg, \"${ntype}\")) {
162 IV tmp = SvIV((SV*)SvRV($arg));
163 $var = *INT2PTR($type,tmp);
164 }
165 else
166 Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
3f2ee006 167T_OPAQUE
708180a3 168 $var = *($type *)SvPV_nolen($arg)
3f2ee006 169T_OPAQUEPTR
708180a3 170 $var = ($type)SvPV_nolen($arg)
3f2ee006 171T_PACKED
708180a3 172 $var = XS_unpack_$ntype($arg)
3f2ee006 173T_PACKEDARRAY
708180a3 174 $var = XS_unpack_$ntype($arg)
3f2ee006 175T_CALLBACK
708180a3 176 $var = make_perl_cb_$type($arg)
3f2ee006 177T_ARRAY
708180a3
TK
178 U32 ix_$var = $argoff;
179 $var = $ntype(items -= $argoff);
180 while (items--) {
181 DO_ARRAY_ELEM;
182 ix_$var++;
183 }
184 /* this is the number of elements in the array */
185 ix_$var -= $argoff
3f2ee006 186T_STDIO
708180a3 187 $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
3f2ee006 188T_IN
708180a3 189 $var = IoIFP(sv_2io($arg))
3f2ee006 190T_INOUT
708180a3 191 $var = IoIFP(sv_2io($arg))
3f2ee006 192T_OUT
708180a3 193 $var = IoOFP(sv_2io($arg))
3f2ee006
HS
194#############################################################################
195OUTPUT
196T_SV
708180a3 197 $arg = $var;
3f2ee006 198T_SVREF
708180a3 199 $arg = newRV((SV*)$var);
3f2ee006 200T_AVREF
708180a3 201 $arg = newRV((SV*)$var);
3f2ee006 202T_HVREF
708180a3 203 $arg = newRV((SV*)$var);
3f2ee006 204T_CVREF
708180a3 205 $arg = newRV((SV*)$var);
3f2ee006 206T_IV
708180a3 207 sv_setiv($arg, (IV)$var);
3f2ee006 208T_UV
708180a3 209 sv_setuv($arg, (UV)$var);
3f2ee006 210T_INT
708180a3 211 sv_setiv($arg, (IV)$var);
3f2ee006 212T_SYSRET
708180a3
TK
213 if ($var != -1) {
214 if ($var == 0)
215 sv_setpvn($arg, "0 but true", 10);
216 else
217 sv_setiv($arg, (IV)$var);
218 }
3f2ee006 219T_ENUM
708180a3 220 sv_setiv($arg, (IV)$var);
3f2ee006 221T_BOOL
708180a3 222 $arg = boolSV($var);
3f2ee006 223T_U_INT
708180a3 224 sv_setuv($arg, (UV)$var);
3f2ee006 225T_SHORT
708180a3 226 sv_setiv($arg, (IV)$var);
3f2ee006 227T_U_SHORT
708180a3 228 sv_setuv($arg, (UV)$var);
3f2ee006 229T_LONG
708180a3 230 sv_setiv($arg, (IV)$var);
3f2ee006 231T_U_LONG
708180a3 232 sv_setuv($arg, (UV)$var);
3f2ee006 233T_CHAR
708180a3 234 sv_setpvn($arg, (char *)&$var, 1);
3f2ee006 235T_U_CHAR
708180a3 236 sv_setuv($arg, (UV)$var);
3f2ee006 237T_FLOAT
708180a3 238 sv_setnv($arg, (double)$var);
3f2ee006 239T_NV
708180a3 240 sv_setnv($arg, (NV)$var);
3f2ee006 241T_DOUBLE
708180a3 242 sv_setnv($arg, (double)$var);
3f2ee006 243T_PV
708180a3 244 sv_setpv((SV*)$arg, $var);
3f2ee006 245T_PTR
708180a3 246 sv_setiv($arg, PTR2IV($var));
3f2ee006 247T_PTRREF
708180a3 248 sv_setref_pv($arg, Nullch, (void*)$var);
3f2ee006 249T_REF_IV_REF
708180a3 250 sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
3f2ee006 251T_REF_IV_PTR
708180a3 252 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
3f2ee006 253T_PTROBJ
708180a3 254 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
3f2ee006 255T_PTRDESC
708180a3 256 sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
3f2ee006 257T_REFREF
708180a3 258 NOT_IMPLEMENTED
3f2ee006 259T_REFOBJ
708180a3 260 NOT IMPLEMENTED
3f2ee006 261T_OPAQUE
708180a3 262 sv_setpvn($arg, (char *)&$var, sizeof($var));
3f2ee006 263T_OPAQUEPTR
708180a3 264 sv_setpvn($arg, (char *)$var, sizeof(*$var));
3f2ee006 265T_PACKED
708180a3 266 XS_pack_$ntype($arg, $var);
3f2ee006 267T_PACKEDARRAY
708180a3
TK
268 XS_pack_$ntype($arg, $var, count_$ntype);
269T_DATAUNIT
270 sv_setpvn($arg, $var.chp(), $var.size());
3f2ee006 271T_CALLBACK
708180a3
TK
272 sv_setpvn($arg, $var.context.value().chp(),
273 $var.context.value().size());
3f2ee006 274T_ARRAY
708180a3
TK
275 {
276 U32 ix_$var;
277 EXTEND(SP,size_$var);
278 for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
279 ST(ix_$var) = sv_newmortal();
280 DO_ARRAY_ELEM
3f2ee006 281 }
708180a3 282 }
3f2ee006 283T_STDIO
708180a3
TK
284 {
285 GV *gv = (GV *)sv_newmortal();
286 PerlIO *fp = PerlIO_importFILE($var,0);
287 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
288 if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
289 sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
290 else
291 $arg = &PL_sv_undef;
292 }
3f2ee006 293T_IN
708180a3
TK
294 {
295 GV *gv = (GV *)sv_newmortal();
296 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
297 if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
298 sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
299 else
300 $arg = &PL_sv_undef;
301 }
3f2ee006 302T_INOUT
708180a3
TK
303 {
304 GV *gv = (GV *)sv_newmortal();
305 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
306 if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
307 sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
308 else
309 $arg = &PL_sv_undef;
310 }
3f2ee006 311T_OUT
708180a3
TK
312 {
313 GV *gv = (GV *)sv_newmortal();
314 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
315 if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
316 sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
317 else
318 $arg = &PL_sv_undef;
319 }