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
22
23static int
24constant_8 (pTHX_ const char *name, IV *iv_return) {
25  /* When generated this function returned values for the list of names given
26     here.  However, subsequent manual editing may have added or removed some.
27     MDB_LAST MDB_NEXT MDB_PREV */
28  /* Offset 4 gives the best switch position.  */
29  switch (name[4]) {
30  case 'L':
31    if (memEQ(name, "MDB_LAST", 8)) {
32    /*                   ^         */
33      *iv_return = MDB_LAST;
34      return PERL_constant_ISIV;
35    }
36    break;
37  case 'N':
38    if (memEQ(name, "MDB_NEXT", 8)) {
39    /*                   ^         */
40      *iv_return = MDB_NEXT;
41      return PERL_constant_ISIV;
42    }
43    break;
44  case 'P':
45    if (memEQ(name, "MDB_PREV", 8)) {
46    /*                   ^         */
47      *iv_return = MDB_PREV;
48      return PERL_constant_ISIV;
49    }
50    break;
51  }
52  return PERL_constant_NOTFOUND;
53}
54
55static int
56constant_9 (pTHX_ const char *name, IV *iv_return) {
57  /* When generated this function returned values for the list of names given
58     here.  However, subsequent manual editing may have added or removed some.
59     MDB_FIRST MDB_NOTLS MDB_PANIC */
60  /* Offset 6 gives the best switch position.  */
61  switch (name[6]) {
62  case 'N':
63    if (memEQ(name, "MDB_PANIC", 9)) {
64    /*                     ^        */
65#ifdef MDB_PANIC
66      *iv_return = MDB_PANIC;
67      return PERL_constant_ISIV;
68#else
69      return PERL_constant_NOTDEF;
70#endif
71    }
72    break;
73  case 'R':
74    if (memEQ(name, "MDB_FIRST", 9)) {
75    /*                     ^        */
76      *iv_return = MDB_FIRST;
77      return PERL_constant_ISIV;
78    }
79    break;
80  case 'T':
81    if (memEQ(name, "MDB_NOTLS", 9)) {
82    /*                     ^        */
83#ifdef MDB_NOTLS
84      *iv_return = MDB_NOTLS;
85      return PERL_constant_ISIV;
86#else
87      return PERL_constant_NOTDEF;
88#endif
89    }
90    break;
91  }
92  return PERL_constant_NOTFOUND;
93}
94
95static int
96constant_10 (pTHX_ const char *name, IV *iv_return) {
97  /* When generated this function returned values for the list of names given
98     here.  However, subsequent manual editing may have added or removed some.
99     MDB_APPEND MDB_CREATE MDB_NOLOCK MDB_NOSYNC MDB_RDONLY */
100  /* Offset 6 gives the best switch position.  */
101  switch (name[6]) {
102  case 'E':
103    if (memEQ(name, "MDB_CREATE", 10)) {
104    /*                     ^          */
105#ifdef MDB_CREATE
106      *iv_return = MDB_CREATE;
107      return PERL_constant_ISIV;
108#else
109      return PERL_constant_NOTDEF;
110#endif
111    }
112    break;
113  case 'L':
114    if (memEQ(name, "MDB_NOLOCK", 10)) {
115    /*                     ^          */
116#ifdef MDB_NOLOCK
117      *iv_return = MDB_NOLOCK;
118      return PERL_constant_ISIV;
119#else
120      return PERL_constant_NOTDEF;
121#endif
122    }
123    break;
124  case 'O':
125    if (memEQ(name, "MDB_RDONLY", 10)) {
126    /*                     ^          */
127#ifdef MDB_RDONLY
128      *iv_return = MDB_RDONLY;
129      return PERL_constant_ISIV;
130#else
131      return PERL_constant_NOTDEF;
132#endif
133    }
134    break;
135  case 'P':
136    if (memEQ(name, "MDB_APPEND", 10)) {
137    /*                     ^          */
138#ifdef MDB_APPEND
139      *iv_return = MDB_APPEND;
140      return PERL_constant_ISIV;
141#else
142      return PERL_constant_NOTDEF;
143#endif
144    }
145    break;
146  case 'S':
147    if (memEQ(name, "MDB_NOSYNC", 10)) {
148    /*                     ^          */
149#ifdef MDB_NOSYNC
150      *iv_return = MDB_NOSYNC;
151      return PERL_constant_ISIV;
152#else
153      return PERL_constant_NOTDEF;
154#endif
155    }
156    break;
157  }
158  return PERL_constant_NOTFOUND;
159}
160
161static int
162constant_11 (pTHX_ const char *name, IV *iv_return) {
163  /* When generated this function returned values for the list of names given
164     here.  However, subsequent manual editing may have added or removed some.
165     LMDB_OFLAGN MDB_BAD_DBI MDB_BAD_TXN MDB_CURRENT MDB_DUPSORT MDB_INVALID
166     MDB_RESERVE MDB_SET_KEY MDB_SUCCESS */
167  /* Offset 9 gives the best switch position.  */
168  switch (name[9]) {
169  case 'B':
170    if (memEQ(name, "MDB_BAD_DBI", 11)) {
171    /*                        ^        */
172#ifdef MDB_BAD_DBI
173      *iv_return = MDB_BAD_DBI;
174      return PERL_constant_ISIV;
175#else
176      return PERL_constant_NOTDEF;
177#endif
178    }
179    break;
180  case 'E':
181    if (memEQ(name, "MDB_SET_KEY", 11)) {
182    /*                        ^        */
183      *iv_return = MDB_SET_KEY;
184      return PERL_constant_ISIV;
185    }
186    break;
187  case 'G':
188    if (memEQ(name, "LMDB_OFLAGN", 11)) {
189    /*                        ^        */
190#ifdef LMDB_OFLAGN
191      *iv_return = LMDB_OFLAGN;
192      return PERL_constant_ISIV;
193#else
194      return PERL_constant_NOTDEF;
195#endif
196    }
197    break;
198  case 'I':
199    if (memEQ(name, "MDB_INVALID", 11)) {
200    /*                        ^        */
201#ifdef MDB_INVALID
202      *iv_return = MDB_INVALID;
203      return PERL_constant_ISIV;
204#else
205      return PERL_constant_NOTDEF;
206#endif
207    }
208    break;
209  case 'N':
210    if (memEQ(name, "MDB_CURRENT", 11)) {
211    /*                        ^        */
212#ifdef MDB_CURRENT
213      *iv_return = MDB_CURRENT;
214      return PERL_constant_ISIV;
215#else
216      return PERL_constant_NOTDEF;
217#endif
218    }
219    break;
220  case 'R':
221    if (memEQ(name, "MDB_DUPSORT", 11)) {
222    /*                        ^        */
223#ifdef MDB_DUPSORT
224      *iv_return = MDB_DUPSORT;
225      return PERL_constant_ISIV;
226#else
227      return PERL_constant_NOTDEF;
228#endif
229    }
230    break;
231  case 'S':
232    if (memEQ(name, "MDB_SUCCESS", 11)) {
233    /*                        ^        */
234#ifdef MDB_SUCCESS
235      *iv_return = MDB_SUCCESS;
236      return PERL_constant_ISIV;
237#else
238      return PERL_constant_NOTDEF;
239#endif
240    }
241    break;
242  case 'V':
243    if (memEQ(name, "MDB_RESERVE", 11)) {
244    /*                        ^        */
245#ifdef MDB_RESERVE
246      *iv_return = MDB_RESERVE;
247      return PERL_constant_ISIV;
248#else
249      return PERL_constant_NOTDEF;
250#endif
251    }
252    break;
253  case 'X':
254    if (memEQ(name, "MDB_BAD_TXN", 11)) {
255    /*                        ^        */
256#ifdef MDB_BAD_TXN
257      *iv_return = MDB_BAD_TXN;
258      return PERL_constant_ISIV;
259#else
260      return PERL_constant_NOTDEF;
261#endif
262    }
263    break;
264  }
265  return PERL_constant_NOTFOUND;
266}
267
268static int
269constant_12 (pTHX_ const char *name, IV *iv_return) {
270  /* When generated this function returned values for the list of names given
271     here.  However, subsequent manual editing may have added or removed some.
272     MDB_DBS_FULL MDB_DUPFIXED MDB_FIXEDMAP MDB_GET_BOTH MDB_KEYEXIST
273     MDB_LAST_DUP MDB_MAPASYNC MDB_MAP_FULL MDB_MULTIPLE MDB_NEXT_DUP
274     MDB_NOSUBDIR MDB_NOTFOUND MDB_PREV_DUP MDB_TLS_FULL MDB_TXN_FULL
275     MDB_WRITEMAP */
276  /* Offset 4 gives the best switch position.  */
277  switch (name[4]) {
278  case 'D':
279    if (memEQ(name, "MDB_DBS_FULL", 12)) {
280    /*                   ^              */
281#ifdef MDB_DBS_FULL
282      *iv_return = MDB_DBS_FULL;
283      return PERL_constant_ISIV;
284#else
285      return PERL_constant_NOTDEF;
286#endif
287    }
288    if (memEQ(name, "MDB_DUPFIXED", 12)) {
289    /*                   ^              */
290#ifdef MDB_DUPFIXED
291      *iv_return = MDB_DUPFIXED;
292      return PERL_constant_ISIV;
293#else
294      return PERL_constant_NOTDEF;
295#endif
296    }
297    break;
298  case 'F':
299    if (memEQ(name, "MDB_FIXEDMAP", 12)) {
300    /*                   ^              */
301#ifdef MDB_FIXEDMAP
302      *iv_return = MDB_FIXEDMAP;
303      return PERL_constant_ISIV;
304#else
305      return PERL_constant_NOTDEF;
306#endif
307    }
308    break;
309  case 'G':
310    if (memEQ(name, "MDB_GET_BOTH", 12)) {
311    /*                   ^              */
312      *iv_return = MDB_GET_BOTH;
313      return PERL_constant_ISIV;
314    }
315    break;
316  case 'K':
317    if (memEQ(name, "MDB_KEYEXIST", 12)) {
318    /*                   ^              */
319#ifdef MDB_KEYEXIST
320      *iv_return = MDB_KEYEXIST;
321      return PERL_constant_ISIV;
322#else
323      return PERL_constant_NOTDEF;
324#endif
325    }
326    break;
327  case 'L':
328    if (memEQ(name, "MDB_LAST_DUP", 12)) {
329    /*                   ^              */
330      *iv_return = MDB_LAST_DUP;
331      return PERL_constant_ISIV;
332    }
333    break;
334  case 'M':
335    if (memEQ(name, "MDB_MAPASYNC", 12)) {
336    /*                   ^              */
337#ifdef MDB_MAPASYNC
338      *iv_return = MDB_MAPASYNC;
339      return PERL_constant_ISIV;
340#else
341      return PERL_constant_NOTDEF;
342#endif
343    }
344    if (memEQ(name, "MDB_MAP_FULL", 12)) {
345    /*                   ^              */
346#ifdef MDB_MAP_FULL
347      *iv_return = MDB_MAP_FULL;
348      return PERL_constant_ISIV;
349#else
350      return PERL_constant_NOTDEF;
351#endif
352    }
353    if (memEQ(name, "MDB_MULTIPLE", 12)) {
354    /*                   ^              */
355#ifdef MDB_MULTIPLE
356      *iv_return = MDB_MULTIPLE;
357      return PERL_constant_ISIV;
358#else
359      return PERL_constant_NOTDEF;
360#endif
361    }
362    break;
363  case 'N':
364    if (memEQ(name, "MDB_NEXT_DUP", 12)) {
365    /*                   ^              */
366      *iv_return = MDB_NEXT_DUP;
367      return PERL_constant_ISIV;
368    }
369    if (memEQ(name, "MDB_NOSUBDIR", 12)) {
370    /*                   ^              */
371#ifdef MDB_NOSUBDIR
372      *iv_return = MDB_NOSUBDIR;
373      return PERL_constant_ISIV;
374#else
375      return PERL_constant_NOTDEF;
376#endif
377    }
378    if (memEQ(name, "MDB_NOTFOUND", 12)) {
379    /*                   ^              */
380#ifdef MDB_NOTFOUND
381      *iv_return = MDB_NOTFOUND;
382      return PERL_constant_ISIV;
383#else
384      return PERL_constant_NOTDEF;
385#endif
386    }
387    break;
388  case 'P':
389    if (memEQ(name, "MDB_PREV_DUP", 12)) {
390    /*                   ^              */
391      *iv_return = MDB_PREV_DUP;
392      return PERL_constant_ISIV;
393    }
394    break;
395  case 'T':
396    if (memEQ(name, "MDB_TLS_FULL", 12)) {
397    /*                   ^              */
398#ifdef MDB_TLS_FULL
399      *iv_return = MDB_TLS_FULL;
400      return PERL_constant_ISIV;
401#else
402      return PERL_constant_NOTDEF;
403#endif
404    }
405    if (memEQ(name, "MDB_TXN_FULL", 12)) {
406    /*                   ^              */
407#ifdef MDB_TXN_FULL
408      *iv_return = MDB_TXN_FULL;
409      return PERL_constant_ISIV;
410#else
411      return PERL_constant_NOTDEF;
412#endif
413    }
414    break;
415  case 'W':
416    if (memEQ(name, "MDB_WRITEMAP", 12)) {
417    /*                   ^              */
418#ifdef MDB_WRITEMAP
419      *iv_return = MDB_WRITEMAP;
420      return PERL_constant_ISIV;
421#else
422      return PERL_constant_NOTDEF;
423#endif
424    }
425    break;
426  }
427  return PERL_constant_NOTFOUND;
428}
429
430static int
431constant_13 (pTHX_ const char *name, IV *iv_return) {
432  /* When generated this function returned values for the list of names given
433     here.  However, subsequent manual editing may have added or removed some.
434     MDB_APPENDDUP MDB_BAD_RSLOT MDB_CORRUPTED MDB_FIRST_DUP MDB_NODUPDATA
435     MDB_NOMEMINIT MDB_NORDAHEAD MDB_PAGE_FULL MDB_SET_RANGE */
436  /* Offset 11 gives the best switch position.  */
437  switch (name[11]) {
438  case 'A':
439    if (memEQ(name, "MDB_NORDAHEAD", 13)) {
440    /*                          ^        */
441#ifdef MDB_NORDAHEAD
442      *iv_return = MDB_NORDAHEAD;
443      return PERL_constant_ISIV;
444#else
445      return PERL_constant_NOTDEF;
446#endif
447    }
448    break;
449  case 'E':
450    if (memEQ(name, "MDB_CORRUPTED", 13)) {
451    /*                          ^        */
452#ifdef MDB_CORRUPTED
453      *iv_return = MDB_CORRUPTED;
454      return PERL_constant_ISIV;
455#else
456      return PERL_constant_NOTDEF;
457#endif
458    }
459    break;
460  case 'G':
461    if (memEQ(name, "MDB_SET_RANGE", 13)) {
462    /*                          ^        */
463      *iv_return = MDB_SET_RANGE;
464      return PERL_constant_ISIV;
465    }
466    break;
467  case 'I':
468    if (memEQ(name, "MDB_NOMEMINIT", 13)) {
469    /*                          ^        */
470#ifdef MDB_NOMEMINIT
471      *iv_return = MDB_NOMEMINIT;
472      return PERL_constant_ISIV;
473#else
474      return PERL_constant_NOTDEF;
475#endif
476    }
477    break;
478  case 'L':
479    if (memEQ(name, "MDB_PAGE_FULL", 13)) {
480    /*                          ^        */
481#ifdef MDB_PAGE_FULL
482      *iv_return = MDB_PAGE_FULL;
483      return PERL_constant_ISIV;
484#else
485      return PERL_constant_NOTDEF;
486#endif
487    }
488    break;
489  case 'O':
490    if (memEQ(name, "MDB_BAD_RSLOT", 13)) {
491    /*                          ^        */
492#ifdef MDB_BAD_RSLOT
493      *iv_return = MDB_BAD_RSLOT;
494      return PERL_constant_ISIV;
495#else
496      return PERL_constant_NOTDEF;
497#endif
498    }
499    break;
500  case 'T':
501    if (memEQ(name, "MDB_NODUPDATA", 13)) {
502    /*                          ^        */
503#ifdef MDB_NODUPDATA
504      *iv_return = MDB_NODUPDATA;
505      return PERL_constant_ISIV;
506#else
507      return PERL_constant_NOTDEF;
508#endif
509    }
510    break;
511  case 'U':
512    if (memEQ(name, "MDB_APPENDDUP", 13)) {
513    /*                          ^        */
514#ifdef MDB_APPENDDUP
515      *iv_return = MDB_APPENDDUP;
516      return PERL_constant_ISIV;
517#else
518      return PERL_constant_NOTDEF;
519#endif
520    }
521    if (memEQ(name, "MDB_FIRST_DUP", 13)) {
522    /*                          ^        */
523      *iv_return = MDB_FIRST_DUP;
524      return PERL_constant_ISIV;
525    }
526    break;
527  }
528  return PERL_constant_NOTFOUND;
529}
530
531static int
532constant_14 (pTHX_ const char *name, IV *iv_return) {
533  /* When generated this function returned values for the list of names given
534     here.  However, subsequent manual editing may have added or removed some.
535     MDB_CP_COMPACT MDB_INTEGERDUP MDB_INTEGERKEY MDB_NEXT_NODUP MDB_NOMETASYNC
536     MDB_PREV_NODUP MDB_REVERSEDUP MDB_REVERSEKEY */
537  /* Offset 6 gives the best switch position.  */
538  switch (name[6]) {
539  case 'E':
540    if (memEQ(name, "MDB_PREV_NODUP", 14)) {
541    /*                     ^              */
542      *iv_return = MDB_PREV_NODUP;
543      return PERL_constant_ISIV;
544    }
545    break;
546  case 'M':
547    if (memEQ(name, "MDB_NOMETASYNC", 14)) {
548    /*                     ^              */
549#ifdef MDB_NOMETASYNC
550      *iv_return = MDB_NOMETASYNC;
551      return PERL_constant_ISIV;
552#else
553      return PERL_constant_NOTDEF;
554#endif
555    }
556    break;
557  case 'T':
558    if (memEQ(name, "MDB_INTEGERDUP", 14)) {
559    /*                     ^              */
560#ifdef MDB_INTEGERDUP
561      *iv_return = MDB_INTEGERDUP;
562      return PERL_constant_ISIV;
563#else
564      return PERL_constant_NOTDEF;
565#endif
566    }
567    if (memEQ(name, "MDB_INTEGERKEY", 14)) {
568    /*                     ^              */
569#ifdef MDB_INTEGERKEY
570      *iv_return = MDB_INTEGERKEY;
571      return PERL_constant_ISIV;
572#else
573      return PERL_constant_NOTDEF;
574#endif
575    }
576    break;
577  case 'V':
578    if (memEQ(name, "MDB_REVERSEDUP", 14)) {
579    /*                     ^              */
580#ifdef MDB_REVERSEDUP
581      *iv_return = MDB_REVERSEDUP;
582      return PERL_constant_ISIV;
583#else
584      return PERL_constant_NOTDEF;
585#endif
586    }
587    if (memEQ(name, "MDB_REVERSEKEY", 14)) {
588    /*                     ^              */
589#ifdef MDB_REVERSEKEY
590      *iv_return = MDB_REVERSEKEY;
591      return PERL_constant_ISIV;
592#else
593      return PERL_constant_NOTDEF;
594#endif
595    }
596    break;
597  case 'X':
598    if (memEQ(name, "MDB_NEXT_NODUP", 14)) {
599    /*                     ^              */
600      *iv_return = MDB_NEXT_NODUP;
601      return PERL_constant_ISIV;
602    }
603    break;
604  case '_':
605    if (memEQ(name, "MDB_CP_COMPACT", 14)) {
606    /*                     ^              */
607#ifdef MDB_CP_COMPACT
608      *iv_return = MDB_CP_COMPACT;
609      return PERL_constant_ISIV;
610#else
611      return PERL_constant_NOTDEF;
612#endif
613    }
614    break;
615  }
616  return PERL_constant_NOTFOUND;
617}
618
619static int
620constant_15 (pTHX_ const char *name, IV *iv_return) {
621  /* When generated this function returned values for the list of names given
622     here.  However, subsequent manual editing may have added or removed some.
623     MDB_BAD_VALSIZE MDB_CURSOR_FULL MDB_GET_CURRENT MDB_MAP_RESIZED
624     MDB_NOOVERWRITE */
625  /* Offset 4 gives the best switch position.  */
626  switch (name[4]) {
627  case 'B':
628    if (memEQ(name, "MDB_BAD_VALSIZE", 15)) {
629    /*                   ^                 */
630#ifdef MDB_BAD_VALSIZE
631      *iv_return = MDB_BAD_VALSIZE;
632      return PERL_constant_ISIV;
633#else
634      return PERL_constant_NOTDEF;
635#endif
636    }
637    break;
638  case 'C':
639    if (memEQ(name, "MDB_CURSOR_FULL", 15)) {
640    /*                   ^                 */
641#ifdef MDB_CURSOR_FULL
642      *iv_return = MDB_CURSOR_FULL;
643      return PERL_constant_ISIV;
644#else
645      return PERL_constant_NOTDEF;
646#endif
647    }
648    break;
649  case 'G':
650    if (memEQ(name, "MDB_GET_CURRENT", 15)) {
651    /*                   ^                 */
652      *iv_return = MDB_GET_CURRENT;
653      return PERL_constant_ISIV;
654    }
655    break;
656  case 'M':
657    if (memEQ(name, "MDB_MAP_RESIZED", 15)) {
658    /*                   ^                 */
659#ifdef MDB_MAP_RESIZED
660      *iv_return = MDB_MAP_RESIZED;
661      return PERL_constant_ISIV;
662#else
663      return PERL_constant_NOTDEF;
664#endif
665    }
666    break;
667  case 'N':
668    if (memEQ(name, "MDB_NOOVERWRITE", 15)) {
669    /*                   ^                 */
670#ifdef MDB_NOOVERWRITE
671      *iv_return = MDB_NOOVERWRITE;
672      return PERL_constant_ISIV;
673#else
674      return PERL_constant_NOTDEF;
675#endif
676    }
677    break;
678  }
679  return PERL_constant_NOTFOUND;
680}
681
682static int
683constant_16 (pTHX_ const char *name, IV *iv_return, const char **pv_return) {
684  /* When generated this function returned values for the list of names given
685     here.  However, subsequent manual editing may have added or removed some.
686     MDB_GET_MULTIPLE MDB_INCOMPATIBLE MDB_LAST_ERRCODE MDB_READERS_FULL
687     MDB_VERSION_DATE MDB_VERSION_FULL */
688  /* Offset 4 gives the best switch position.  */
689  switch (name[4]) {
690  case 'G':
691    if (memEQ(name, "MDB_GET_MULTIPLE", 16)) {
692    /*                   ^                  */
693      *iv_return = MDB_GET_MULTIPLE;
694      return PERL_constant_ISIV;
695    }
696    break;
697  case 'I':
698    if (memEQ(name, "MDB_INCOMPATIBLE", 16)) {
699    /*                   ^                  */
700#ifdef MDB_INCOMPATIBLE
701      *iv_return = MDB_INCOMPATIBLE;
702      return PERL_constant_ISIV;
703#else
704      return PERL_constant_NOTDEF;
705#endif
706    }
707    break;
708  case 'L':
709    if (memEQ(name, "MDB_LAST_ERRCODE", 16)) {
710    /*                   ^                  */
711#ifdef MDB_LAST_ERRCODE
712      *iv_return = MDB_LAST_ERRCODE;
713      return PERL_constant_ISIV;
714#else
715      return PERL_constant_NOTDEF;
716#endif
717    }
718    break;
719  case 'R':
720    if (memEQ(name, "MDB_READERS_FULL", 16)) {
721    /*                   ^                  */
722#ifdef MDB_READERS_FULL
723      *iv_return = MDB_READERS_FULL;
724      return PERL_constant_ISIV;
725#else
726      return PERL_constant_NOTDEF;
727#endif
728    }
729    break;
730  case 'V':
731    if (memEQ(name, "MDB_VERSION_DATE", 16)) {
732    /*                   ^                  */
733      *pv_return = MDB_VERSION_DATE;
734      return PERL_constant_ISPV;
735    }
736    if (memEQ(name, "MDB_VERSION_FULL", 16)) {
737    /*                   ^                  */
738#ifdef MDB_VERSION_FULL
739      *iv_return = MDB_VERSION_FULL;
740      return PERL_constant_ISIV;
741#else
742      return PERL_constant_NOTDEF;
743#endif
744    }
745    break;
746  }
747  return PERL_constant_NOTFOUND;
748}
749
750static int
751constant_17 (pTHX_ const char *name, IV *iv_return) {
752  /* When generated this function returned values for the list of names given
753     here.  However, subsequent manual editing may have added or removed some.
754     MDB_NEXT_MULTIPLE MDB_PAGE_NOTFOUND MDB_VERSION_MAJOR MDB_VERSION_MINOR
755     MDB_VERSION_PATCH */
756  /* Offset 14 gives the best switch position.  */
757  switch (name[14]) {
758  case 'J':
759    if (memEQ(name, "MDB_VERSION_MAJOR", 17)) {
760    /*                             ^         */
761#ifdef MDB_VERSION_MAJOR
762      *iv_return = MDB_VERSION_MAJOR;
763      return PERL_constant_ISIV;
764#else
765      return PERL_constant_NOTDEF;
766#endif
767    }
768    break;
769  case 'N':
770    if (memEQ(name, "MDB_VERSION_MINOR", 17)) {
771    /*                             ^         */
772#ifdef MDB_VERSION_MINOR
773      *iv_return = MDB_VERSION_MINOR;
774      return PERL_constant_ISIV;
775#else
776      return PERL_constant_NOTDEF;
777#endif
778    }
779    break;
780  case 'P':
781    if (memEQ(name, "MDB_NEXT_MULTIPLE", 17)) {
782    /*                             ^         */
783      *iv_return = MDB_NEXT_MULTIPLE;
784      return PERL_constant_ISIV;
785    }
786    break;
787  case 'T':
788    if (memEQ(name, "MDB_VERSION_PATCH", 17)) {
789    /*                             ^         */
790#ifdef MDB_VERSION_PATCH
791      *iv_return = MDB_VERSION_PATCH;
792      return PERL_constant_ISIV;
793#else
794      return PERL_constant_NOTDEF;
795#endif
796    }
797    break;
798  case 'U':
799    if (memEQ(name, "MDB_PAGE_NOTFOUND", 17)) {
800    /*                             ^         */
801#ifdef MDB_PAGE_NOTFOUND
802      *iv_return = MDB_PAGE_NOTFOUND;
803      return PERL_constant_ISIV;
804#else
805      return PERL_constant_NOTDEF;
806#endif
807    }
808    break;
809  }
810  return PERL_constant_NOTFOUND;
811}
812
813static int
814constant (pTHX_ const char *name, STRLEN len, IV *iv_return, const char **pv_return) {
815  /* Initially switch on the length of the name.  */
816  /* When generated this function returned values for the list of names given
817     in this section of perl code.  Rather than manually editing these functions
818     to add or remove constants, which would result in this comment and section
819     of code becoming inaccurate, we recommend that you edit this section of
820     code, and use it to regenerate a new set of constant functions which you
821     then use to replace the originals.
822
823     Regenerate these constant functions by feeding this entire source file to
824     perl -x
825
826#!/usr/bin/perl -w
827use ExtUtils::Constant qw (constant_types C_constant XS_constant);
828
829my $types = {map {($_, 1)} qw(IV PV)};
830my @names = (qw(LMDB_OFLAGN MDB_APPEND MDB_APPENDDUP MDB_BAD_DBI MDB_BAD_RSLOT
831	       MDB_BAD_TXN MDB_BAD_VALSIZE MDB_CORRUPTED MDB_CP_COMPACT
832	       MDB_CREATE MDB_CURRENT MDB_CURSOR_FULL MDB_DBS_FULL MDB_DUPFIXED
833	       MDB_DUPSORT MDB_FIXEDMAP MDB_INCOMPATIBLE MDB_INTEGERDUP
834	       MDB_INTEGERKEY MDB_INVALID MDB_KEYEXIST MDB_LAST_ERRCODE
835	       MDB_MAPASYNC MDB_MAP_FULL MDB_MAP_RESIZED MDB_MULTIPLE
836	       MDB_NODUPDATA MDB_NOLOCK MDB_NOMEMINIT MDB_NOMETASYNC
837	       MDB_NOOVERWRITE MDB_NORDAHEAD MDB_NOSUBDIR MDB_NOSYNC
838	       MDB_NOTFOUND MDB_NOTLS MDB_PAGE_FULL MDB_PAGE_NOTFOUND MDB_PANIC
839	       MDB_RDONLY MDB_READERS_FULL MDB_RESERVE MDB_REVERSEDUP
840	       MDB_REVERSEKEY MDB_SUCCESS MDB_TLS_FULL MDB_TXN_FULL
841	       MDB_VERSION_FULL MDB_VERSION_MAJOR MDB_VERSION_MINOR
842	       MDB_VERSION_MISMATCH MDB_VERSION_PATCH MDB_WRITEMAP),
843            {name=>"MDB_FIRST", type=>"IV", macro=>"1"},
844            {name=>"MDB_FIRST_DUP", type=>"IV", macro=>"1"},
845            {name=>"MDB_GET_BOTH", type=>"IV", macro=>"1"},
846            {name=>"MDB_GET_BOTH_RANGE", type=>"IV", macro=>"1"},
847            {name=>"MDB_GET_CURRENT", type=>"IV", macro=>"1"},
848            {name=>"MDB_GET_MULTIPLE", type=>"IV", macro=>"1"},
849            {name=>"MDB_LAST", type=>"IV", macro=>"1"},
850            {name=>"MDB_LAST_DUP", type=>"IV", macro=>"1"},
851            {name=>"MDB_NEXT", type=>"IV", macro=>"1"},
852            {name=>"MDB_NEXT_DUP", type=>"IV", macro=>"1"},
853            {name=>"MDB_NEXT_MULTIPLE", type=>"IV", macro=>"1"},
854            {name=>"MDB_NEXT_NODUP", type=>"IV", macro=>"1"},
855            {name=>"MDB_PREV", type=>"IV", macro=>"1"},
856            {name=>"MDB_PREV_DUP", type=>"IV", macro=>"1"},
857            {name=>"MDB_PREV_NODUP", type=>"IV", macro=>"1"},
858            {name=>"MDB_SET", type=>"IV", macro=>"1"},
859            {name=>"MDB_SET_KEY", type=>"IV", macro=>"1"},
860            {name=>"MDB_SET_RANGE", type=>"IV", macro=>"1"},
861            {name=>"MDB_VERSION_DATE", type=>"PV", macro=>"1"},
862            {name=>"MDB_VERSION_STRING", type=>"PV", macro=>"1"});
863
864print constant_types(), "\n"; # macro defs
865foreach (C_constant ("LMDB_File", 'constant', 'IV', $types, undef, 3, @names) ) {
866    print $_, "\n"; # C constant subs
867}
868print "\n#### XS Section:\n";
869print XS_constant ("LMDB_File", $types);
870__END__
871   */
872
873  switch (len) {
874  case 7:
875    if (memEQ(name, "MDB_SET", 7)) {
876      *iv_return = MDB_SET;
877      return PERL_constant_ISIV;
878    }
879    break;
880  case 8:
881    return constant_8 (aTHX_ name, iv_return);
882    break;
883  case 9:
884    return constant_9 (aTHX_ name, iv_return);
885    break;
886  case 10:
887    return constant_10 (aTHX_ name, iv_return);
888    break;
889  case 11:
890    return constant_11 (aTHX_ name, iv_return);
891    break;
892  case 12:
893    return constant_12 (aTHX_ name, iv_return);
894    break;
895  case 13:
896    return constant_13 (aTHX_ name, iv_return);
897    break;
898  case 14:
899    return constant_14 (aTHX_ name, iv_return);
900    break;
901  case 15:
902    return constant_15 (aTHX_ name, iv_return);
903    break;
904  case 16:
905    return constant_16 (aTHX_ name, iv_return, pv_return);
906    break;
907  case 17:
908    return constant_17 (aTHX_ name, iv_return);
909    break;
910  case 18:
911    /* Names all of length 18.  */
912    /* MDB_GET_BOTH_RANGE MDB_VERSION_STRING */
913    /* Offset 17 gives the best switch position.  */
914    switch (name[17]) {
915    case 'E':
916      if (memEQ(name, "MDB_GET_BOTH_RANG", 17)) {
917      /*                                E      */
918        *iv_return = MDB_GET_BOTH_RANGE;
919        return PERL_constant_ISIV;
920      }
921      break;
922    case 'G':
923      if (memEQ(name, "MDB_VERSION_STRIN", 17)) {
924      /*                                G      */
925        *pv_return = MDB_VERSION_STRING;
926        return PERL_constant_ISPV;
927      }
928      break;
929    }
930    break;
931  case 20:
932    if (memEQ(name, "MDB_VERSION_MISMATCH", 20)) {
933#ifdef MDB_VERSION_MISMATCH
934      *iv_return = MDB_VERSION_MISMATCH;
935      return PERL_constant_ISIV;
936#else
937      return PERL_constant_NOTDEF;
938#endif
939    }
940    break;
941  }
942  return PERL_constant_NOTFOUND;
943}
944
945