xref: /openbsd-src/gnu/usr.bin/perl/dist/Time-HiRes/typemap (revision 56d68f1e19ff848c889ecfa71d3a06340ff64892)
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
31clockid_t               T_IV
32
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    {
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    }
293T_IN
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    }
302T_INOUT
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    }
311T_OUT
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    }
320