Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / lib / perl5 / 5.8.8 / ExtUtils / typemap
CommitLineData
920dae64
AT
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
17# bool_t is defined in <rpc/rpc.h>
18bool_t T_IV
19size_t T_UV
20ssize_t T_IV
21time_t T_NV
22unsigned long * T_OPAQUEPTR
23char ** T_PACKEDARRAY
24void * T_PTR
25Time_t * T_PV
26SV * T_SV
27SVREF T_SVREF
28AV * T_AVREF
29HV * T_HVREF
30CV * T_CVREF
31
32IV T_IV
33UV T_UV
34NV T_NV
35I32 T_IV
36I16 T_IV
37I8 T_IV
38STRLEN T_UV
39U32 T_U_LONG
40U16 T_U_SHORT
41U8 T_UV
42Result T_U_CHAR
43Boolean T_BOOL
44float T_FLOAT
45double T_DOUBLE
46SysRet T_SYSRET
47SysRetLong T_SYSRET
48FILE * T_STDIO
49PerlIO * T_INOUT
50FileHandle T_PTROBJ
51InputStream T_IN
52InOutStream T_INOUT
53OutputStream T_OUT
54bool T_BOOL
55
56#############################################################################
57INPUT
58T_SV
59 $var = $arg
60T_SVREF
61 if (SvROK($arg))
62 $var = (SV*)SvRV($arg);
63 else
64 Perl_croak(aTHX_ \"$var is not a reference\")
65T_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\")
70T_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\")
75T_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\")
80T_SYSRET
81 $var NOT IMPLEMENTED
82T_UV
83 $var = ($type)SvUV($arg)
84T_IV
85 $var = ($type)SvIV($arg)
86T_INT
87 $var = (int)SvIV($arg)
88T_ENUM
89 $var = ($type)SvIV($arg)
90T_BOOL
91 $var = (bool)SvTRUE($arg)
92T_U_INT
93 $var = (unsigned int)SvUV($arg)
94T_SHORT
95 $var = (short)SvIV($arg)
96T_U_SHORT
97 $var = (unsigned short)SvUV($arg)
98T_LONG
99 $var = (long)SvIV($arg)
100T_U_LONG
101 $var = (unsigned long)SvUV($arg)
102T_CHAR
103 $var = (char)*SvPV_nolen($arg)
104T_U_CHAR
105 $var = (unsigned char)SvUV($arg)
106T_FLOAT
107 $var = (float)SvNV($arg)
108T_NV
109 $var = ($type)SvNV($arg)
110T_DOUBLE
111 $var = (double)SvNV($arg)
112T_PV
113 $var = ($type)SvPV_nolen($arg)
114T_PTR
115 $var = INT2PTR($type,SvIV($arg))
116T_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\")
123T_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}\")
130T_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}\")
137T_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}\")
144T_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}\")
152T_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\")
159T_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}\")
166T_OPAQUE
167 $var = *($type *)SvPV_nolen($arg)
168T_OPAQUEPTR
169 $var = ($type)SvPV_nolen($arg)
170T_PACKED
171 $var = XS_unpack_$ntype($arg)
172T_PACKEDARRAY
173 $var = XS_unpack_$ntype($arg)
174T_CALLBACK
175 $var = make_perl_cb_$type($arg)
176T_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
185T_STDIO
186 $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
187T_IN
188 $var = IoIFP(sv_2io($arg))
189T_INOUT
190 $var = IoIFP(sv_2io($arg))
191T_OUT
192 $var = IoOFP(sv_2io($arg))
193#############################################################################
194OUTPUT
195T_SV
196 $arg = $var;
197T_SVREF
198 $arg = newRV((SV*)$var);
199T_AVREF
200 $arg = newRV((SV*)$var);
201T_HVREF
202 $arg = newRV((SV*)$var);
203T_CVREF
204 $arg = newRV((SV*)$var);
205T_IV
206 sv_setiv($arg, (IV)$var);
207T_UV
208 sv_setuv($arg, (UV)$var);
209T_INT
210 sv_setiv($arg, (IV)$var);
211T_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 }
218T_ENUM
219 sv_setiv($arg, (IV)$var);
220T_BOOL
221 $arg = boolSV($var);
222T_U_INT
223 sv_setuv($arg, (UV)$var);
224T_SHORT
225 sv_setiv($arg, (IV)$var);
226T_U_SHORT
227 sv_setuv($arg, (UV)$var);
228T_LONG
229 sv_setiv($arg, (IV)$var);
230T_U_LONG
231 sv_setuv($arg, (UV)$var);
232T_CHAR
233 sv_setpvn($arg, (char *)&$var, 1);
234T_U_CHAR
235 sv_setuv($arg, (UV)$var);
236T_FLOAT
237 sv_setnv($arg, (double)$var);
238T_NV
239 sv_setnv($arg, (NV)$var);
240T_DOUBLE
241 sv_setnv($arg, (double)$var);
242T_PV
243 sv_setpv((SV*)$arg, $var);
244T_PTR
245 sv_setiv($arg, PTR2IV($var));
246T_PTRREF
247 sv_setref_pv($arg, Nullch, (void*)$var);
248T_REF_IV_REF
249 sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
250T_REF_IV_PTR
251 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
252T_PTROBJ
253 sv_setref_pv($arg, \"${ntype}\", (void*)$var);
254T_PTRDESC
255 sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
256T_REFREF
257 NOT_IMPLEMENTED
258T_REFOBJ
259 NOT IMPLEMENTED
260T_OPAQUE
261 sv_setpvn($arg, (char *)&$var, sizeof($var));
262T_OPAQUEPTR
263 sv_setpvn($arg, (char *)$var, sizeof(*$var));
264T_PACKED
265 XS_pack_$ntype($arg, $var);
266T_PACKEDARRAY
267 XS_pack_$ntype($arg, $var, count_$ntype);
268T_DATAUNIT
269 sv_setpvn($arg, $var.chp(), $var.size());
270T_CALLBACK
271 sv_setpvn($arg, $var.context.value().chp(),
272 $var.context.value().size());
273T_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 }
282T_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 }
291T_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 }
299T_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 }
307T_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 }