Move Object::Accessor from lib/ to ext/
[p5sagit/p5-mst-13.2.git] / ext / Time-HiRes / fallback / const-c.inc
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
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     /*                      ^          */
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.
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':
98     if (memEQ(name, "CLOCK_REALTIME", 14)) {
99     /*                       ^            */
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;
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':
131     if (memEQ(name, "ITIMER_VIRTUAL", 14)) {
132     /*                       ^            */
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;
141   case 'e':
142     if (memEQ(name, "d_gettimeofday", 14)) {
143     /*                       ^            */
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;
153   case 'g':
154     if (memEQ(name, "d_clock_getres", 14)) {
155     /*                       ^            */
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
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
238 #!perl -w
239 use ExtUtils::Constant qw (constant_types C_constant XS_constant);
240
241 my $types = {map {($_, 1)} qw(IV)};
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"]},
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"]},
249             {name=>"d_clock_nanosleep", type=>"IV", macro=>"TIME_HIRES_CLOCK_NANOSLEEP", value=>"1", default=>["IV", "0"]},
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"]},
252             {name=>"d_hires_stat", type=>"IV", macro=>"TIME_HIRES_STAT", value=>"1", default=>["IV", "0"]},
253             {name=>"d_nanosleep", type=>"IV", macro=>"TIME_HIRES_NANOSLEEP", value=>"1", default=>["IV", "0"]},
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) {
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;
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':
285       if (memEQ(name, "d_ualar", 7)) {
286       /*                      m     */
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':
297       if (memEQ(name, "d_uslee", 7)) {
298       /*                      p     */
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;
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;
324   case 13:
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       /*                 ^                 */
343 #ifdef CLOCK_HIGHRES
344         *iv_return = CLOCK_HIGHRES;
345         return PERL_constant_ISIV;
346 #else
347         return PERL_constant_NOTDEF;
348 #endif
349       }
350       break;
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;
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;
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;
375 #else
376       return PERL_constant_NOTDEF;
377 #endif
378     }
379     break;
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;
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