Commit | Line | Data |
---|---|---|
98b50af3 JH |
1 | #define PERL_constant_NOTFOUND 1 |
2 | #define PERL_constant_NOTDEF 2 | |
3 | #define PERL_constant_ISIV 3 | |
4 | #define PERL_constant_ISNO 4 | |
5 | #define PERL_constant_ISNV 5 | |
6 | #define PERL_constant_ISPV 6 | |
7 | #define PERL_constant_ISPVN 7 | |
8 | #define PERL_constant_ISSV 8 | |
9 | #define PERL_constant_ISUNDEF 9 | |
10 | #define PERL_constant_ISUV 10 | |
11 | #define PERL_constant_ISYES 11 | |
12 | ||
13 | #ifndef NVTYPE | |
14 | typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */ | |
15 | #endif | |
16 | #ifndef aTHX_ | |
17 | #define aTHX_ /* 5.6 or later define this for threading support. */ | |
18 | #endif | |
19 | #ifndef pTHX_ | |
20 | #define pTHX_ /* 5.6 or later define this for threading support. */ | |
21 | #endif | |
98b50af3 JH |
22 | static int |
23 | constant_11 (pTHX_ const char *name, IV *iv_return) { | |
24 | /* When generated this function returned values for the list of names given | |
25 | here. However, subsequent manual editing may have added or removed some. | |
26 | ITIMER_PROF ITIMER_REAL d_getitimer d_nanosleep d_setitimer */ | |
27 | /* Offset 7 gives the best switch position. */ | |
28 | switch (name[7]) { | |
29 | case 'P': | |
30 | if (memEQ(name, "ITIMER_PROF", 11)) { | |
31 | /* ^ */ | |
32 | #ifdef ITIMER_PROF | |
33 | *iv_return = ITIMER_PROF; | |
34 | return PERL_constant_ISIV; | |
35 | #else | |
36 | return PERL_constant_NOTDEF; | |
37 | #endif | |
38 | } | |
39 | break; | |
40 | case 'R': | |
41 | if (memEQ(name, "ITIMER_REAL", 11)) { | |
42 | /* ^ */ | |
43 | #ifdef ITIMER_REAL | |
44 | *iv_return = ITIMER_REAL; | |
45 | return PERL_constant_ISIV; | |
46 | #else | |
47 | return PERL_constant_NOTDEF; | |
48 | #endif | |
49 | } | |
50 | break; | |
51 | case 'i': | |
52 | if (memEQ(name, "d_getitimer", 11)) { | |
53 | /* ^ */ | |
54 | #ifdef HAS_GETITIMER | |
55 | *iv_return = 1; | |
56 | return PERL_constant_ISIV; | |
57 | #else | |
58 | *iv_return = 0; | |
59 | return PERL_constant_ISIV; | |
60 | #endif | |
61 | } | |
62 | if (memEQ(name, "d_setitimer", 11)) { | |
63 | /* ^ */ | |
64 | #ifdef HAS_SETITIMER | |
65 | *iv_return = 1; | |
66 | return PERL_constant_ISIV; | |
67 | #else | |
68 | *iv_return = 0; | |
69 | return PERL_constant_ISIV; | |
70 | #endif | |
71 | } | |
72 | break; | |
73 | case 'l': | |
74 | if (memEQ(name, "d_nanosleep", 11)) { | |
75 | /* ^ */ | |
ced84e60 SP |
76 | #ifdef TIME_HIRES_NANOSLEEP |
77 | *iv_return = 1; | |
78 | return PERL_constant_ISIV; | |
79 | #else | |
80 | *iv_return = 0; | |
81 | return PERL_constant_ISIV; | |
82 | #endif | |
83 | } | |
84 | break; | |
85 | } | |
86 | return PERL_constant_NOTFOUND; | |
87 | } | |
88 | ||
89 | static int | |
90 | constant_14 (pTHX_ const char *name, IV *iv_return) { | |
91 | /* When generated this function returned values for the list of names given | |
92 | here. However, subsequent manual editing may have added or removed some. | |
170c5524 SP |
93 | CLOCKS_PER_SEC CLOCK_REALTIME CLOCK_SOFTTIME ITIMER_VIRTUAL d_clock_getres |
94 | d_gettimeofday */ | |
95 | /* Offset 8 gives the best switch position. */ | |
96 | switch (name[8]) { | |
97 | case 'A': | |
ced84e60 | 98 | if (memEQ(name, "CLOCK_REALTIME", 14)) { |
170c5524 | 99 | /* ^ */ |
ced84e60 SP |
100 | #ifdef CLOCK_REALTIME |
101 | *iv_return = CLOCK_REALTIME; | |
102 | return PERL_constant_ISIV; | |
103 | #else | |
104 | return PERL_constant_NOTDEF; | |
105 | #endif | |
106 | } | |
107 | break; | |
170c5524 SP |
108 | case 'E': |
109 | if (memEQ(name, "CLOCKS_PER_SEC", 14)) { | |
110 | /* ^ */ | |
111 | #ifdef CLOCKS_PER_SEC | |
112 | *iv_return = CLOCKS_PER_SEC; | |
113 | return PERL_constant_ISIV; | |
114 | #else | |
115 | return PERL_constant_NOTDEF; | |
116 | #endif | |
117 | } | |
118 | break; | |
119 | case 'F': | |
120 | if (memEQ(name, "CLOCK_SOFTTIME", 14)) { | |
121 | /* ^ */ | |
122 | #ifdef CLOCK_SOFTTIME | |
123 | *iv_return = CLOCK_SOFTTIME; | |
124 | return PERL_constant_ISIV; | |
125 | #else | |
126 | return PERL_constant_NOTDEF; | |
127 | #endif | |
128 | } | |
129 | break; | |
130 | case 'I': | |
ced84e60 | 131 | if (memEQ(name, "ITIMER_VIRTUAL", 14)) { |
170c5524 | 132 | /* ^ */ |
ced84e60 SP |
133 | #ifdef ITIMER_VIRTUAL |
134 | *iv_return = ITIMER_VIRTUAL; | |
135 | return PERL_constant_ISIV; | |
136 | #else | |
137 | return PERL_constant_NOTDEF; | |
138 | #endif | |
139 | } | |
140 | break; | |
170c5524 | 141 | case 'e': |
ced84e60 | 142 | if (memEQ(name, "d_gettimeofday", 14)) { |
170c5524 | 143 | /* ^ */ |
ced84e60 SP |
144 | #ifdef HAS_GETTIMEOFDAY |
145 | *iv_return = 1; | |
146 | return PERL_constant_ISIV; | |
147 | #else | |
148 | *iv_return = 0; | |
149 | return PERL_constant_ISIV; | |
150 | #endif | |
151 | } | |
152 | break; | |
170c5524 | 153 | case 'g': |
ced84e60 | 154 | if (memEQ(name, "d_clock_getres", 14)) { |
170c5524 | 155 | /* ^ */ |
ced84e60 SP |
156 | #ifdef TIME_HIRES_CLOCK_GETRES |
157 | *iv_return = 1; | |
158 | return PERL_constant_ISIV; | |
159 | #else | |
160 | *iv_return = 0; | |
161 | return PERL_constant_ISIV; | |
162 | #endif | |
163 | } | |
164 | break; | |
165 | } | |
166 | return PERL_constant_NOTFOUND; | |
167 | } | |
168 | ||
169 | static int | |
170 | constant_15 (pTHX_ const char *name, IV *iv_return) { | |
171 | /* When generated this function returned values for the list of names given | |
172 | here. However, subsequent manual editing may have added or removed some. | |
173 | CLOCK_MONOTONIC CLOCK_TIMEOFDAY ITIMER_REALPROF d_clock_gettime */ | |
174 | /* Offset 7 gives the best switch position. */ | |
175 | switch (name[7]) { | |
176 | case 'I': | |
177 | if (memEQ(name, "CLOCK_TIMEOFDAY", 15)) { | |
178 | /* ^ */ | |
179 | #ifdef CLOCK_TIMEOFDAY | |
180 | *iv_return = CLOCK_TIMEOFDAY; | |
181 | return PERL_constant_ISIV; | |
182 | #else | |
183 | return PERL_constant_NOTDEF; | |
184 | #endif | |
185 | } | |
186 | break; | |
187 | case 'O': | |
188 | if (memEQ(name, "CLOCK_MONOTONIC", 15)) { | |
189 | /* ^ */ | |
190 | #ifdef CLOCK_MONOTONIC | |
191 | *iv_return = CLOCK_MONOTONIC; | |
192 | return PERL_constant_ISIV; | |
193 | #else | |
194 | return PERL_constant_NOTDEF; | |
195 | #endif | |
196 | } | |
197 | break; | |
198 | case 'R': | |
199 | if (memEQ(name, "ITIMER_REALPROF", 15)) { | |
200 | /* ^ */ | |
201 | #ifdef ITIMER_REALPROF | |
202 | *iv_return = ITIMER_REALPROF; | |
203 | return PERL_constant_ISIV; | |
204 | #else | |
205 | return PERL_constant_NOTDEF; | |
206 | #endif | |
207 | } | |
208 | break; | |
209 | case '_': | |
210 | if (memEQ(name, "d_clock_gettime", 15)) { | |
211 | /* ^ */ | |
212 | #ifdef TIME_HIRES_CLOCK_GETTIME | |
98b50af3 JH |
213 | *iv_return = 1; |
214 | return PERL_constant_ISIV; | |
215 | #else | |
216 | *iv_return = 0; | |
217 | return PERL_constant_ISIV; | |
218 | #endif | |
219 | } | |
220 | break; | |
221 | } | |
222 | return PERL_constant_NOTFOUND; | |
223 | } | |
224 | ||
225 | static int | |
226 | constant (pTHX_ const char *name, STRLEN len, IV *iv_return) { | |
227 | /* Initially switch on the length of the name. */ | |
228 | /* When generated this function returned values for the list of names given | |
229 | in this section of perl code. Rather than manually editing these functions | |
230 | to add or remove constants, which would result in this comment and section | |
231 | of code becoming inaccurate, we recommend that you edit this section of | |
232 | code, and use it to regenerate a new set of constant functions which you | |
233 | then use to replace the originals. | |
234 | ||
235 | Regenerate these constant functions by feeding this entire source file to | |
236 | perl -x | |
237 | ||
ced84e60 | 238 | #!perl -w |
98b50af3 JH |
239 | use ExtUtils::Constant qw (constant_types C_constant XS_constant); |
240 | ||
241 | my $types = {map {($_, 1)} qw(IV)}; | |
170c5524 SP |
242 | my @names = (qw(CLOCKS_PER_SEC CLOCK_HIGHRES CLOCK_MONOTONIC |
243 | CLOCK_PROCESS_CPUTIME_ID CLOCK_REALTIME CLOCK_SOFTTIME | |
244 | CLOCK_THREAD_CPUTIME_ID CLOCK_TIMEOFDAY ITIMER_PROF ITIMER_REAL | |
245 | ITIMER_REALPROF ITIMER_VIRTUAL TIMER_ABSTIME), | |
246 | {name=>"d_clock", type=>"IV", macro=>"TIME_HIRES_CLOCK", value=>"1", default=>["IV", "0"]}, | |
ced84e60 SP |
247 | {name=>"d_clock_getres", type=>"IV", macro=>"TIME_HIRES_CLOCK_GETRES", value=>"1", default=>["IV", "0"]}, |
248 | {name=>"d_clock_gettime", type=>"IV", macro=>"TIME_HIRES_CLOCK_GETTIME", value=>"1", default=>["IV", "0"]}, | |
170c5524 | 249 | {name=>"d_clock_nanosleep", type=>"IV", macro=>"TIME_HIRES_CLOCK_NANOSLEEP", value=>"1", default=>["IV", "0"]}, |
98b50af3 JH |
250 | {name=>"d_getitimer", type=>"IV", macro=>"HAS_GETITIMER", value=>"1", default=>["IV", "0"]}, |
251 | {name=>"d_gettimeofday", type=>"IV", macro=>"HAS_GETTIMEOFDAY", value=>"1", default=>["IV", "0"]}, | |
7b9ffbef | 252 | {name=>"d_hires_stat", type=>"IV", macro=>"TIME_HIRES_STAT", value=>"1", default=>["IV", "0"]}, |
ced84e60 | 253 | {name=>"d_nanosleep", type=>"IV", macro=>"TIME_HIRES_NANOSLEEP", value=>"1", default=>["IV", "0"]}, |
98b50af3 JH |
254 | {name=>"d_setitimer", type=>"IV", macro=>"HAS_SETITIMER", value=>"1", default=>["IV", "0"]}, |
255 | {name=>"d_ualarm", type=>"IV", macro=>"HAS_UALARM", value=>"1", default=>["IV", "0"]}, | |
256 | {name=>"d_usleep", type=>"IV", macro=>"HAS_USLEEP", value=>"1", default=>["IV", "0"]}); | |
257 | ||
258 | print constant_types(); # macro defs | |
259 | foreach (C_constant ("Time::HiRes", 'constant', 'IV', $types, undef, 3, @names) ) { | |
260 | print $_, "\n"; # C constant subs | |
261 | } | |
262 | print "#### XS Section:\n"; | |
263 | print XS_constant ("Time::HiRes", $types); | |
264 | __END__ | |
265 | */ | |
266 | ||
267 | switch (len) { | |
170c5524 SP |
268 | case 7: |
269 | if (memEQ(name, "d_clock", 7)) { | |
270 | #ifdef TIME_HIRES_CLOCK | |
271 | *iv_return = 1; | |
272 | return PERL_constant_ISIV; | |
273 | #else | |
274 | *iv_return = 0; | |
275 | return PERL_constant_ISIV; | |
276 | #endif | |
277 | } | |
278 | break; | |
98b50af3 JH |
279 | case 8: |
280 | /* Names all of length 8. */ | |
281 | /* d_ualarm d_usleep */ | |
282 | /* Offset 7 gives the best switch position. */ | |
283 | switch (name[7]) { | |
284 | case 'm': | |
ced84e60 SP |
285 | if (memEQ(name, "d_ualar", 7)) { |
286 | /* m */ | |
98b50af3 JH |
287 | #ifdef HAS_UALARM |
288 | *iv_return = 1; | |
289 | return PERL_constant_ISIV; | |
290 | #else | |
291 | *iv_return = 0; | |
292 | return PERL_constant_ISIV; | |
293 | #endif | |
294 | } | |
295 | break; | |
296 | case 'p': | |
ced84e60 SP |
297 | if (memEQ(name, "d_uslee", 7)) { |
298 | /* p */ | |
98b50af3 JH |
299 | #ifdef HAS_USLEEP |
300 | *iv_return = 1; | |
301 | return PERL_constant_ISIV; | |
302 | #else | |
303 | *iv_return = 0; | |
304 | return PERL_constant_ISIV; | |
305 | #endif | |
306 | } | |
307 | break; | |
308 | } | |
309 | break; | |
310 | case 11: | |
311 | return constant_11 (aTHX_ name, iv_return); | |
312 | break; | |
7b9ffbef SP |
313 | case 12: |
314 | if (memEQ(name, "d_hires_stat", 12)) { | |
315 | #ifdef TIME_HIRES_STAT | |
316 | *iv_return = 1; | |
317 | return PERL_constant_ISIV; | |
318 | #else | |
319 | *iv_return = 0; | |
320 | return PERL_constant_ISIV; | |
321 | #endif | |
322 | } | |
323 | break; | |
ced84e60 | 324 | case 13: |
170c5524 SP |
325 | /* Names all of length 13. */ |
326 | /* CLOCK_HIGHRES TIMER_ABSTIME */ | |
327 | /* Offset 2 gives the best switch position. */ | |
328 | switch (name[2]) { | |
329 | case 'M': | |
330 | if (memEQ(name, "TIMER_ABSTIME", 13)) { | |
331 | /* ^ */ | |
332 | #ifdef TIMER_ABSTIME | |
333 | *iv_return = TIMER_ABSTIME; | |
334 | return PERL_constant_ISIV; | |
335 | #else | |
336 | return PERL_constant_NOTDEF; | |
337 | #endif | |
338 | } | |
339 | break; | |
340 | case 'O': | |
341 | if (memEQ(name, "CLOCK_HIGHRES", 13)) { | |
342 | /* ^ */ | |
ced84e60 | 343 | #ifdef CLOCK_HIGHRES |
170c5524 SP |
344 | *iv_return = CLOCK_HIGHRES; |
345 | return PERL_constant_ISIV; | |
98b50af3 | 346 | #else |
170c5524 | 347 | return PERL_constant_NOTDEF; |
98b50af3 | 348 | #endif |
170c5524 SP |
349 | } |
350 | break; | |
ced84e60 SP |
351 | } |
352 | break; | |
353 | case 14: | |
354 | return constant_14 (aTHX_ name, iv_return); | |
355 | break; | |
356 | case 15: | |
357 | return constant_15 (aTHX_ name, iv_return); | |
358 | break; | |
170c5524 SP |
359 | case 17: |
360 | if (memEQ(name, "d_clock_nanosleep", 17)) { | |
361 | #ifdef TIME_HIRES_CLOCK_NANOSLEEP | |
362 | *iv_return = 1; | |
363 | return PERL_constant_ISIV; | |
364 | #else | |
365 | *iv_return = 0; | |
366 | return PERL_constant_ISIV; | |
367 | #endif | |
368 | } | |
369 | break; | |
ced84e60 SP |
370 | case 23: |
371 | if (memEQ(name, "CLOCK_THREAD_CPUTIME_ID", 23)) { | |
372 | #ifdef CLOCK_THREAD_CPUTIME_ID | |
373 | *iv_return = CLOCK_THREAD_CPUTIME_ID; | |
374 | return PERL_constant_ISIV; | |
98b50af3 | 375 | #else |
ced84e60 | 376 | return PERL_constant_NOTDEF; |
98b50af3 | 377 | #endif |
98b50af3 JH |
378 | } |
379 | break; | |
ced84e60 SP |
380 | case 24: |
381 | if (memEQ(name, "CLOCK_PROCESS_CPUTIME_ID", 24)) { | |
382 | #ifdef CLOCK_PROCESS_CPUTIME_ID | |
383 | *iv_return = CLOCK_PROCESS_CPUTIME_ID; | |
98b50af3 JH |
384 | return PERL_constant_ISIV; |
385 | #else | |
386 | return PERL_constant_NOTDEF; | |
387 | #endif | |
388 | } | |
389 | break; | |
390 | } | |
391 | return PERL_constant_NOTFOUND; | |
392 | } | |
393 |