This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Bump version of Data::Dumper
[perl5.git] / dist / Time-HiRes / typemap
CommitLineData
3f2ee006
HS
1# basic C types
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
30
2979fdf3
DIM
31clockid_t T_IV
32
3f2ee006
HS
33IV T_IV
34UV T_UV
35NV T_NV
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
45float T_FLOAT
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
56
57#############################################################################
58INPUT
59T_SV
60 $var = $arg
61T_SVREF
62 if (SvROK($arg))
63 $var = (SV*)SvRV($arg);
64 else
65 Perl_croak(aTHX_ \"$var is not a reference\")
66T_AVREF
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\")
71T_HVREF
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\")
76T_CVREF
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\")
81T_SYSRET
82 $var NOT IMPLEMENTED
83T_UV
84 $var = ($type)SvUV($arg)
85T_IV
86 $var = ($type)SvIV($arg)
87T_INT
88 $var = (int)SvIV($arg)
89T_ENUM
90 $var = ($type)SvIV($arg)
91T_BOOL
92 $var = (bool)SvTRUE($arg)
93T_U_INT
94 $var = (unsigned int)SvUV($arg)
95T_SHORT
96 $var = (short)SvIV($arg)
97T_U_SHORT
98 $var = (unsigned short)SvUV($arg)
99T_LONG
100 $var = (long)SvIV($arg)
101T_U_LONG
102 $var = (unsigned long)SvUV($arg)
103T_CHAR
104 $var = (char)*SvPV_nolen($arg)
105T_U_CHAR
106 $var = (unsigned char)SvUV($arg)
107T_FLOAT
108 $var = (float)SvNV($arg)
109T_NV
110 $var = ($type)SvNV($arg)
111T_DOUBLE
112 $var = (double)SvNV($arg)
113T_PV
114 $var = ($type)SvPV_nolen($arg)
115T_PTR
116 $var = INT2PTR($type,SvIV($arg))
117T_PTRREF
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\")
124T_REF_IV_REF
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}\")
131T_REF_IV_PTR
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}\")
138T_PTROBJ
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}\")
145T_PTRDESC
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}\")
153T_REFREF
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\")
160T_REFOBJ
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}\")
167T_OPAQUE
168 $var = *($type *)SvPV_nolen($arg)
169T_OPAQUEPTR
170 $var = ($type)SvPV_nolen($arg)
171T_PACKED
172 $var = XS_unpack_$ntype($arg)
173T_PACKEDARRAY
174 $var = XS_unpack_$ntype($arg)
175T_CALLBACK
176 $var = make_perl_cb_$type($arg)
177T_ARRAY
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
186T_STDIO
187 $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
188T_IN
189 $var = IoIFP(sv_2io($arg))
190T_INOUT
191 $var = IoIFP(sv_2io($arg))
192T_OUT
193 $var = IoOFP(sv_2io($arg))
194#############################################################################
195OUTPUT
196T_SV
197 $arg = $var;
198T_SVREF
199 $arg = newRV((SV*)$var);
200T_AVREF
201 $arg = newRV((SV*)$var);
202T_HVREF
203 $arg = newRV((SV*)$var);
204T_CVREF
205 $arg = newRV((SV*)$var);
206T_IV
207 sv_setiv($arg, (IV)$var);
208T_UV
209 sv_setuv($arg, (UV)$var);
210T_INT
211 sv_setiv($arg, (IV)$var);
212T_SYSRET
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 }
219T_ENUM
220 sv_setiv($arg, (IV)$var);
221T_BOOL
222 $arg = boolSV($var);
223T_U_INT
224 sv_setuv($arg, (UV)$var);
225T_SHORT
226 sv_setiv($arg, (IV)$var);
227T_U_SHORT
228 sv_setuv($arg, (UV)$var);
229T_LONG
230 sv_setiv($arg, (IV)$var);
231T_U_LONG
232 sv_setuv($arg, (UV)$var);
233T_CHAR
234 sv_setpvn($arg, (char *)&$var, 1);
235T_U_CHAR
236 sv_setuv($arg, (UV)$var);
237T_FLOAT
238 sv_setnv($arg, (double)$var);
239T_NV
240 sv_setnv($arg, (NV)$var);
241T_DOUBLE
242 sv_setnv($arg, (double)$var);
243T_PV
244 sv_setpv((SV*)$arg, $var);
245T_PTR
246 sv_setiv($arg, PTR2IV($var));
247T_PTRREF
248 sv_setref_pv($arg, Nullch, (void*)$var);
249T_REF_IV_REF
250 sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
251T_REF_IV_PTR
252 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
253T_PTROBJ
254 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
255T_PTRDESC
256 sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
257T_REFREF
258 NOT_IMPLEMENTED
259T_REFOBJ
260 NOT IMPLEMENTED
261T_OPAQUE
262 sv_setpvn($arg, (char *)&$var, sizeof($var));
263T_OPAQUEPTR
264 sv_setpvn($arg, (char *)$var, sizeof(*$var));
265T_PACKED
266 XS_pack_$ntype($arg, $var);
267T_PACKEDARRAY
268 XS_pack_$ntype($arg, $var, count_$ntype);
269T_DATAUNIT
270 sv_setpvn($arg, $var.chp(), $var.size());
271T_CALLBACK
272 sv_setpvn($arg, $var.context.value().chp(),
273 $var.context.value().size());
274T_ARRAY
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
281 }
282 }
283T_STDIO
284 {
732d3893 285 GV *gv = (GV *)sv_newmortal();
3f2ee006 286 PerlIO *fp = PerlIO_importFILE($var,0);
d269f586 287 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
3f2ee006
HS
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 }
293T_IN
294 {
732d3893
FC
295 GV *gv = (GV *)sv_newmortal();
296 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
3f2ee006
HS
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 }
302T_INOUT
303 {
732d3893
FC
304 GV *gv = (GV *)sv_newmortal();
305 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
3f2ee006
HS
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 }
311T_OUT
312 {
732d3893
FC
313 GV *gv = (GV *)sv_newmortal();
314 gv_init(gv, gv_stashpv("$Package",1),"__ANONIO__",10,0);
3f2ee006
HS
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 }