This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
move Time-HiRes from cpan to dist
[perl5.git] / dist / Time-HiRes / fallback / const-c.inc
CommitLineData
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
14typedef 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
22static int
23constant_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
89static int
90constant_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
169static int
170constant_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
225static int
226constant (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
239use ExtUtils::Constant qw (constant_types C_constant XS_constant);
240
241my $types = {map {($_, 1)} qw(IV)};
170c5524
SP
242my @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
258print constant_types(); # macro defs
259foreach (C_constant ("Time::HiRes", 'constant', 'IV', $types, undef, 3, @names) ) {
260 print $_, "\n"; # C constant subs
261}
262print "#### XS Section:\n";
263print 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