This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
A typemap is a file, not a directory.
[perl5.git] / dist / ExtUtils-ParseXS / t / XSMore.xs
CommitLineData
28892255
DG
1#include "EXTERN.h"
2#include "perl.h"
3#include "XSUB.h"
4
16c87200
S
5typedef IV MyType;
6typedef IV MyType2;
7typedef IV MyType3;
8typedef IV MyType4;
9
10
28892255
DG
11=for testing
12
13This parts are ignored.
14
15=cut
16
17STATIC void
18outlist(int* a, int* b){
19 *a = 'a';
20 *b = 'b';
21}
22
23STATIC int
24len(const char* const s, int const l){
f0608b17 25 PERL_UNUSED_ARG(s);
28892255
DG
26 return l;
27}
28
29MODULE = XSMore PACKAGE = XSMore
30
31=for testing
32
33This parts are also ignored.
34
35=cut
36
37PROTOTYPES: ENABLE
38
39VERSIONCHECK: DISABLE
40
41REQUIRE: 2.20
42
43SCOPE: DISABLE
44
45FALLBACK: TRUE
46
47BOOT:
48 sv_setiv(get_sv("XSMore::boot_ok", TRUE), 100);
49
50
16c87200
S
51TYPEMAP: <<END
52MyType T_IV
53END
54
55TYPEMAP: <<" FOO BAR BAZ";
56MyType2 T_FOOOO
57
58OUTPUT
59T_FOOOO
60 sv_setiv($arg, (IV)$var);
61 FOO BAR BAZ
62
63TYPEMAP: <<'END'
64MyType3 T_BAAR
65MyType4 T_BAAR
66
67OUTPUT
68T_BAAR
69 sv_setiv($arg, (IV)$var);
70
71INPUT
72T_BAAR
73 $var = ($type)SvIV($arg)
74END
75
76
77MyType
78typemaptest1()
79 CODE:
80 RETVAL = 42;
81 OUTPUT:
82 RETVAL
83
84MyType2
85typemaptest2()
86 CODE:
87 RETVAL = 42;
88 OUTPUT:
89 RETVAL
90
91MyType3
92typemaptest3(MyType4 foo)
93 CODE:
94 RETVAL = foo;
95 OUTPUT:
96 RETVAL
97
28892255
DG
98void
99prototype_ssa()
100PROTOTYPE: $$@
101CODE:
102 NOOP;
103
104void
105attr_method(self, ...)
106ATTRS: method
107CODE:
108 NOOP;
109
110#define RET_1 1
111#define RET_2 2
112
113int
114return_1()
115CASE: ix == 1
116 ALIAS:
117 return_1 = RET_1
118 return_2 = RET_2
119 CODE:
120 RETVAL = ix;
121 OUTPUT:
122 RETVAL
123CASE: ix == 2
124 CODE:
125 RETVAL = ix;
126 OUTPUT:
127 RETVAL
128
129int
130arg_init(x)
131 int x = SvIV($arg);
132CODE:
133 RETVAL = x;
134OUTPUT:
135 RETVAL
136
137int
138myabs(...)
139OVERLOAD: abs
140CODE:
f0608b17 141 PERL_UNUSED_VAR(items);
28892255
DG
142 RETVAL = 42;
143OUTPUT:
144 RETVAL
145
146void
147hook(IN AV* av)
148INIT:
149 av_push(av, newSVpv("INIT", 0));
150CODE:
151 av_push(av, newSVpv("CODE", 0));
152POSTCALL:
153 av_push(av, newSVpv("POSTCALL", 0));
154CLEANUP:
155 av_push(av, newSVpv("CLEANUP", 0));
156
157
158void
159outlist(OUTLIST int a, OUTLIST int b)
160
161int
162len(char* s, int length(s))
163
387b6f8d
S
164INCLUDE_COMMAND: $^X -Ilib -It/lib -MIncludeTester -e IncludeTester::print_xs
165
28892255
DG
166#if 1
167
168INCLUDE: XSInclude.xsh
169
170#else
171
172# for testing #else directive
173
174#endif