This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Export Winsock error constants from POSIX.pm
[perl5.git] / ext / Amiga-Exec / typemap
CommitLineData
4ceeac64
AB
1APTR T_PTR
2intArray * T_ARRAY
3UWORD T_UV
4ULONG T_UV
5WORD T_IV
6LONG T_IV
7BOOL T_IV
8TagList * T_TAGLIST
9TAGRET T_TAGRET
10STRPTR T_PV
11int32 T_IV
12uint32 T_UV
13
14#############################################################################
15INPUT
16T_TAGLIST
17 U32 ix_$var = $argoff;
18 U32 _tag_type;
19 /* allocate taglist struct, +2 as tags lists end in a TAG_DONE by tradition */
20 /* if by some chance someone adds something after the TAG_DONE it will just*/
21 /* result in harmless empty space */
22 $var = $ntype((items -= $argoff) +2);
23 while(items > 0)
24 {
25 int __index = (ix_$var - $argoff)/3;
26 $var\[__index\].ti_Tag = (ULONG)SvUV(ST(ix_$var));
27 ix_$var++;
28 items--;
29 /* the last is a tag_done and usualy has no followers so check for > 1 */
30 if(items > 1 && ($var\[__index\].ti_Tag != TAG_DONE))
31 {
32 _tag_type = (ULONG)SvUV(ST(ix_$var));
33 ix_$var++;
34 switch(_tag_type)
35 {
36 case TT_APTR:
37 $var\[__index\].ti_Data = (ULONG)INT2PTR(APTR,SvIV(ST(ix_$var)));
38 break;
39 case TT_WORD:
40 $var\[__index\].ti_Data = (WORD)SvIV(ST(ix_$var));
41 break;
42 case TT_LONG:
43 $var\[__index\].ti_Data = (LONG)SvIV(ST(ix_$var));
44 break;
45 case TT_UWORD:
46 $var\[__index\].ti_Data = (UWORD)SvUV(ST(ix_$var));
47 break;
48 case TT_ULONG:
49 $var\[__index\].ti_Data = (ULONG)SvUV(ST(ix_$var));
50 break;
51 case TT_STRPTR:
52 case TT_UBYTE:
53 $var\[__index\].ti_Data = (ULONG)(STRPTR)SvPV_nolen(ST(ix_$var));
54 break;
55 default:
56 Perl_croak(aTHX_ \"Unknown TAGTYPE \%d\",_tag_type);
57 }
58 ix_$var++;
59 items -=2;
60 }
61 }
62
63T_TAGRET
64 /* Allocate variable type according to preceding var tagtype */
65 switch(tagtype)
66 {
67 case TT_APTR:
68 $var.tr_aptr = INT2PTR(APTR,SvIV($arg));
69 break;
70 case TT_WORD:
71 $var.tr_word = (WORD)SvIV($arg);
72 break;
73 case TT_LONG:
74 $var.tr_long = (LONG)SvIV($arg);
75 case TT_UWORD:
76 $var.tr_uword = (UWORD)SvUV($arg);
77 break;
78 case TT_ULONG:
79 $var.tr_ulong = (ULONG)SvUV($arg);
80 break;
81 case TT_STRPTR:
82 case TT_UBYTE:
83 $var.tr_strptr = (STRPTR)SvPV_nolen($arg);
84 break;
85 default:
86 Perl_croak(aTHX_ \"Unknown TAGTYPE \%d\",tagtype);
87 }
88
89####################################################################################
90OUTPUT
91T_TAGRET
92 /* Allocate variable type according to preceding var tagtype */
93 switch(tagtype)
94 {
95 case TT_APTR:
96 sv_setiv($arg, PTR2IV($var.tr_aptr));
97 break;
98 case TT_WORD:
99 sv_setiv($arg, (IV)$var.tr_word);
100 break;
101 case TT_LONG:
102 sv_setiv($arg, (IV)$var.tr_long);
103 break;
104 case TT_UWORD:
105 sv_setuv($arg, (UV)$var.tr_uword);
106 break;
107 case TT_ULONG:
108 sv_setuv($arg, (UV)$var.tr_ulong);
109 break;
110 case TT_STRPTR:
111 case TT_UBYTE:
112 sv_setpv((SV*)$arg, $var.tr_strptr);
113 break;
114 default:
115 Perl_croak(aTHX_ \"Unknown TAGTYPE \%d\",tagtype);
116 }
117
118