ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/staticperl/perl/lib/ExtUtils/typemap
Revision: 1.1
Committed: Thu Jun 30 14:27:11 2005 UTC (21 years, 4 months ago) by root
Branch: MAIN
CVS Tags: PERL-5-8-7, HEAD
Branch point for: PERL
Log Message:
*** empty log message ***

File Contents

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