Commit | Line | Data |
0a7c7f4f |
1 | |
2 | #include "EXTERN.h" |
3 | #include "perl.h" |
4 | #include "XSUB.h" |
5 | |
6 | #define NEED_newCONSTSUB |
7 | #include "ppport.h" |
8 | |
9 | /* Global Data */ |
10 | |
dbda3434 |
11 | #define MY_CXT_KEY "Devel::PPPort::Harness::_guts" XS_VERSION |
0a7c7f4f |
12 | |
13 | typedef struct { |
14 | /* Put Global Data in here */ |
15 | int dummy; |
16 | } my_cxt_t; |
17 | |
18 | START_MY_CXT |
19 | |
20 | void test1(void) |
21 | { |
dbda3434 |
22 | newCONSTSUB(gv_stashpv("Devel::PPPort::Harness", FALSE), "test_value_1", newSViv(1)); |
0a7c7f4f |
23 | } |
24 | |
25 | extern void test2(void); |
26 | extern void test3(void); |
27 | |
dbda3434 |
28 | MODULE = Devel::PPPort::Harness PACKAGE = Devel::PPPort::Harness |
0a7c7f4f |
29 | |
30 | BOOT: |
31 | { |
32 | MY_CXT_INIT; |
33 | /* If any of the fields in the my_cxt_t struct need |
34 | to be initialised, do it here. |
35 | */ |
36 | MY_CXT.dummy = 42 ; |
37 | } |
38 | |
39 | void |
40 | test1() |
41 | |
42 | void |
43 | test2() |
44 | |
45 | void |
46 | test3() |
47 | |
48 | int |
49 | test4() |
50 | CODE: |
51 | { |
52 | SV * sv = newSViv(1); |
53 | SV * rv = newRV_inc(sv); |
54 | RETVAL = (SvREFCNT(sv) == 2); |
55 | } |
56 | OUTPUT: |
57 | RETVAL |
58 | |
59 | int |
60 | test5() |
61 | CODE: |
62 | { |
63 | SV * sv = newSViv(2); |
64 | SV * rv = newRV_noinc(sv); |
65 | RETVAL = (SvREFCNT(sv) == 1); |
66 | } |
67 | OUTPUT: |
68 | RETVAL |
69 | |
70 | SV * |
71 | test6() |
72 | CODE: |
73 | { |
74 | RETVAL = (newSVsv(&PL_sv_undef)); |
75 | } |
76 | OUTPUT: |
77 | RETVAL |
78 | |
79 | SV * |
80 | test7() |
81 | CODE: |
82 | { |
83 | RETVAL = (newSVsv(&PL_sv_yes)); |
84 | } |
85 | OUTPUT: |
86 | RETVAL |
87 | |
88 | SV * |
89 | test8() |
90 | CODE: |
91 | { |
92 | RETVAL = (newSVsv(&PL_sv_no)); |
93 | } |
94 | OUTPUT: |
95 | RETVAL |
96 | |
97 | int |
98 | test9(string) |
99 | char * string; |
100 | CODE: |
101 | { |
102 | PL_na = strlen(string); |
103 | RETVAL = PL_na; |
104 | } |
105 | OUTPUT: |
106 | RETVAL |
107 | |
108 | |
109 | SV* |
110 | test10(value) |
111 | int value |
112 | CODE: |
113 | { |
114 | RETVAL = (newSVsv(boolSV(value))); |
115 | } |
116 | OUTPUT: |
117 | RETVAL |
118 | |
119 | |
120 | SV* |
121 | test11(string, len) |
122 | char * string |
123 | int len |
124 | CODE: |
125 | { |
126 | RETVAL = newSVpvn(string, len); |
127 | } |
128 | OUTPUT: |
129 | RETVAL |
130 | |
131 | SV* |
132 | test12() |
133 | CODE: |
134 | { |
135 | RETVAL = newSVsv(DEFSV); |
136 | } |
137 | OUTPUT: |
138 | RETVAL |
139 | |
140 | int |
141 | test13() |
142 | CODE: |
143 | { |
144 | RETVAL = SvTRUE(ERRSV); |
145 | } |
146 | OUTPUT: |
147 | RETVAL |
148 | |
149 | int |
150 | test14() |
151 | CODE: |
152 | { |
153 | dMY_CXT; |
154 | RETVAL = (MY_CXT.dummy == 42); |
155 | ++ MY_CXT.dummy ; |
156 | } |
157 | OUTPUT: |
158 | RETVAL |
159 | |
160 | int |
161 | test15() |
162 | CODE: |
163 | { |
164 | dMY_CXT; |
165 | RETVAL = (MY_CXT.dummy == 43); |
166 | } |
167 | OUTPUT: |
168 | RETVAL |
169 | |