9 #define PERL_constant_NOTFOUND 1
10 #define PERL_constant_NOTDEF 2
11 #define PERL_constant_ISIV 3
12 #define PERL_constant_ISNO 4
13 #define PERL_constant_ISNV 5
14 #define PERL_constant_ISPV 6
15 #define PERL_constant_ISPVN 7
16 #define PERL_constant_ISSV 8
17 #define PERL_constant_ISUNDEF 9
18 #define PERL_constant_ISUV 10
19 #define PERL_constant_ISYES 11
22 typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */
25 constant_5 (pTHX_ const char *name, IV *iv_return) {
26 /* When generated this function returned values for the list of names given
27 here. However, subsequent manual editing may have added or removed some.
28 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 D_FMT MON_1 MON_2 MON_3 MON_4
29 MON_5 MON_6 MON_7 MON_8 MON_9 NOSTR T_FMT */
30 /* Offset 4 gives the best switch position. */
33 if (memEQ(name, "DAY_1", 5)) {
37 return PERL_constant_ISIV;
39 return PERL_constant_NOTDEF;
42 if (memEQ(name, "MON_1", 5)) {
46 return PERL_constant_ISIV;
48 return PERL_constant_NOTDEF;
53 if (memEQ(name, "DAY_2", 5)) {
57 return PERL_constant_ISIV;
59 return PERL_constant_NOTDEF;
62 if (memEQ(name, "MON_2", 5)) {
66 return PERL_constant_ISIV;
68 return PERL_constant_NOTDEF;
73 if (memEQ(name, "DAY_3", 5)) {
77 return PERL_constant_ISIV;
79 return PERL_constant_NOTDEF;
82 if (memEQ(name, "MON_3", 5)) {
86 return PERL_constant_ISIV;
88 return PERL_constant_NOTDEF;
93 if (memEQ(name, "DAY_4", 5)) {
97 return PERL_constant_ISIV;
99 return PERL_constant_NOTDEF;
102 if (memEQ(name, "MON_4", 5)) {
106 return PERL_constant_ISIV;
108 return PERL_constant_NOTDEF;
113 if (memEQ(name, "DAY_5", 5)) {
117 return PERL_constant_ISIV;
119 return PERL_constant_NOTDEF;
122 if (memEQ(name, "MON_5", 5)) {
126 return PERL_constant_ISIV;
128 return PERL_constant_NOTDEF;
133 if (memEQ(name, "DAY_6", 5)) {
137 return PERL_constant_ISIV;
139 return PERL_constant_NOTDEF;
142 if (memEQ(name, "MON_6", 5)) {
146 return PERL_constant_ISIV;
148 return PERL_constant_NOTDEF;
153 if (memEQ(name, "DAY_7", 5)) {
157 return PERL_constant_ISIV;
159 return PERL_constant_NOTDEF;
162 if (memEQ(name, "MON_7", 5)) {
166 return PERL_constant_ISIV;
168 return PERL_constant_NOTDEF;
173 if (memEQ(name, "MON_8", 5)) {
177 return PERL_constant_ISIV;
179 return PERL_constant_NOTDEF;
184 if (memEQ(name, "MON_9", 5)) {
188 return PERL_constant_ISIV;
190 return PERL_constant_NOTDEF;
195 if (memEQ(name, "NOSTR", 5)) {
199 return PERL_constant_ISIV;
201 return PERL_constant_NOTDEF;
206 if (memEQ(name, "D_FMT", 5)) {
210 return PERL_constant_ISIV;
212 return PERL_constant_NOTDEF;
215 if (memEQ(name, "T_FMT", 5)) {
219 return PERL_constant_ISIV;
221 return PERL_constant_NOTDEF;
226 return PERL_constant_NOTFOUND;
230 constant_6 (pTHX_ const char *name, IV *iv_return) {
231 /* When generated this function returned values for the list of names given
232 here. However, subsequent manual editing may have added or removed some.
233 AM_STR MON_10 MON_11 MON_12 NOEXPR PM_STR YESSTR */
234 /* Offset 0 gives the best switch position. */
237 if (memEQ(name, "AM_STR", 6)) {
241 return PERL_constant_ISIV;
243 return PERL_constant_NOTDEF;
248 if (memEQ(name, "MON_10", 6)) {
252 return PERL_constant_ISIV;
254 return PERL_constant_NOTDEF;
257 if (memEQ(name, "MON_11", 6)) {
261 return PERL_constant_ISIV;
263 return PERL_constant_NOTDEF;
266 if (memEQ(name, "MON_12", 6)) {
270 return PERL_constant_ISIV;
272 return PERL_constant_NOTDEF;
277 if (memEQ(name, "NOEXPR", 6)) {
281 return PERL_constant_ISIV;
283 return PERL_constant_NOTDEF;
288 if (memEQ(name, "PM_STR", 6)) {
292 return PERL_constant_ISIV;
294 return PERL_constant_NOTDEF;
299 if (memEQ(name, "YESSTR", 6)) {
303 return PERL_constant_ISIV;
305 return PERL_constant_NOTDEF;
310 return PERL_constant_NOTFOUND;
314 constant_7 (pTHX_ const char *name, IV *iv_return) {
315 /* When generated this function returned values for the list of names given
316 here. However, subsequent manual editing may have added or removed some.
317 ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7 ABMON_1 ABMON_2
318 ABMON_3 ABMON_4 ABMON_5 ABMON_6 ABMON_7 ABMON_8 ABMON_9 CODESET D_T_FMT
320 /* Offset 6 gives the best switch position. */
323 if (memEQ(name, "ABDAY_1", 7)) {
326 *iv_return = ABDAY_1;
327 return PERL_constant_ISIV;
329 return PERL_constant_NOTDEF;
332 if (memEQ(name, "ABMON_1", 7)) {
335 *iv_return = ABMON_1;
336 return PERL_constant_ISIV;
338 return PERL_constant_NOTDEF;
343 if (memEQ(name, "ABDAY_2", 7)) {
346 *iv_return = ABDAY_2;
347 return PERL_constant_ISIV;
349 return PERL_constant_NOTDEF;
352 if (memEQ(name, "ABMON_2", 7)) {
355 *iv_return = ABMON_2;
356 return PERL_constant_ISIV;
358 return PERL_constant_NOTDEF;
363 if (memEQ(name, "ABDAY_3", 7)) {
366 *iv_return = ABDAY_3;
367 return PERL_constant_ISIV;
369 return PERL_constant_NOTDEF;
372 if (memEQ(name, "ABMON_3", 7)) {
375 *iv_return = ABMON_3;
376 return PERL_constant_ISIV;
378 return PERL_constant_NOTDEF;
383 if (memEQ(name, "ABDAY_4", 7)) {
386 *iv_return = ABDAY_4;
387 return PERL_constant_ISIV;
389 return PERL_constant_NOTDEF;
392 if (memEQ(name, "ABMON_4", 7)) {
395 *iv_return = ABMON_4;
396 return PERL_constant_ISIV;
398 return PERL_constant_NOTDEF;
403 if (memEQ(name, "ABDAY_5", 7)) {
406 *iv_return = ABDAY_5;
407 return PERL_constant_ISIV;
409 return PERL_constant_NOTDEF;
412 if (memEQ(name, "ABMON_5", 7)) {
415 *iv_return = ABMON_5;
416 return PERL_constant_ISIV;
418 return PERL_constant_NOTDEF;
423 if (memEQ(name, "ABDAY_6", 7)) {
426 *iv_return = ABDAY_6;
427 return PERL_constant_ISIV;
429 return PERL_constant_NOTDEF;
432 if (memEQ(name, "ABMON_6", 7)) {
435 *iv_return = ABMON_6;
436 return PERL_constant_ISIV;
438 return PERL_constant_NOTDEF;
443 if (memEQ(name, "ABDAY_7", 7)) {
446 *iv_return = ABDAY_7;
447 return PERL_constant_ISIV;
449 return PERL_constant_NOTDEF;
452 if (memEQ(name, "ABMON_7", 7)) {
455 *iv_return = ABMON_7;
456 return PERL_constant_ISIV;
458 return PERL_constant_NOTDEF;
463 if (memEQ(name, "ABMON_8", 7)) {
466 *iv_return = ABMON_8;
467 return PERL_constant_ISIV;
469 return PERL_constant_NOTDEF;
474 if (memEQ(name, "ABMON_9", 7)) {
477 *iv_return = ABMON_9;
478 return PERL_constant_ISIV;
480 return PERL_constant_NOTDEF;
485 if (memEQ(name, "THOUSEP", 7)) {
488 *iv_return = THOUSEP;
489 return PERL_constant_ISIV;
491 return PERL_constant_NOTDEF;
496 if (memEQ(name, "YESEXPR", 7)) {
499 *iv_return = YESEXPR;
500 return PERL_constant_ISIV;
502 return PERL_constant_NOTDEF;
507 if (memEQ(name, "CODESET", 7)) {
510 *iv_return = CODESET;
511 return PERL_constant_ISIV;
513 return PERL_constant_NOTDEF;
516 if (memEQ(name, "D_T_FMT", 7)) {
519 *iv_return = D_T_FMT;
520 return PERL_constant_ISIV;
522 return PERL_constant_NOTDEF;
527 return PERL_constant_NOTFOUND;
531 constant_8 (pTHX_ const char *name, IV *iv_return) {
532 /* When generated this function returned values for the list of names given
533 here. However, subsequent manual editing may have added or removed some.
534 ABMON_10 ABMON_11 ABMON_12 CRNCYSTR */
535 /* Offset 7 gives the best switch position. */
538 if (memEQ(name, "ABMON_10", 8)) {
541 *iv_return = ABMON_10;
542 return PERL_constant_ISIV;
544 return PERL_constant_NOTDEF;
549 if (memEQ(name, "ABMON_11", 8)) {
552 *iv_return = ABMON_11;
553 return PERL_constant_ISIV;
555 return PERL_constant_NOTDEF;
560 if (memEQ(name, "ABMON_12", 8)) {
563 *iv_return = ABMON_12;
564 return PERL_constant_ISIV;
566 return PERL_constant_NOTDEF;
571 if (memEQ(name, "CRNCYSTR", 8)) {
574 *iv_return = CRNCYSTR;
575 return PERL_constant_ISIV;
577 return PERL_constant_NOTDEF;
582 return PERL_constant_NOTFOUND;
586 constant_9 (pTHX_ const char *name, IV *iv_return) {
587 /* When generated this function returned values for the list of names given
588 here. However, subsequent manual editing may have added or removed some.
589 ERA_D_FMT ERA_T_FMT RADIXCHAR */
590 /* Offset 4 gives the best switch position. */
593 if (memEQ(name, "ERA_D_FMT", 9)) {
596 *iv_return = ERA_D_FMT;
597 return PERL_constant_ISIV;
599 return PERL_constant_NOTDEF;
604 if (memEQ(name, "ERA_T_FMT", 9)) {
607 *iv_return = ERA_T_FMT;
608 return PERL_constant_ISIV;
610 return PERL_constant_NOTDEF;
615 if (memEQ(name, "RADIXCHAR", 9)) {
618 *iv_return = RADIXCHAR;
619 return PERL_constant_ISIV;
621 return PERL_constant_NOTDEF;
626 return PERL_constant_NOTFOUND;
630 constant (pTHX_ const char *name, STRLEN len, IV *iv_return) {
631 /* Initially switch on the length of the name. */
632 /* When generated this function returned values for the list of names given
633 in this section of perl code. Rather than manually editing these functions
634 to add or remove constants, which would result in this comment and section
635 of code becoming inaccurate, we recommend that you edit this section of
636 code, and use it to regenerate a new set of constant functions which you
637 then use to replace the originals.
639 Regenerate these constant functions by feeding this entire source file to
643 use ExtUtils::Constant qw (constant_types C_constant XS_constant);
645 my $types = {map {($_, 1)} qw(IV)};
646 my @names = (qw(ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7 ABMON_1
647 ABMON_10 ABMON_11 ABMON_12 ABMON_2 ABMON_3 ABMON_4 ABMON_5
648 ABMON_6 ABMON_7 ABMON_8 ABMON_9 ALT_DIGITS AM_STR CODESET
649 CRNCYSTR DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 D_FMT D_T_FMT
650 ERA ERA_D_FMT ERA_D_T_FMT ERA_T_FMT MON_1 MON_10 MON_11 MON_12
651 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 NOEXPR NOSTR
652 PM_STR RADIXCHAR THOUSEP T_FMT T_FMT_AMPM YESEXPR YESSTR));
654 print constant_types(); # macro defs
655 foreach (C_constant ("I18N::Langinfo", 'constant', 'IV', $types, undef, 3, @names) ) {
656 print $_, "\n"; # C constant subs
658 print "#### XS Section:\n";
659 print XS_constant ("I18N::Langinfo", $types);
665 if (memEQ(name, "ERA", 3)) {
668 return PERL_constant_ISIV;
670 return PERL_constant_NOTDEF;
675 return constant_5 (aTHX_ name, iv_return);
678 return constant_6 (aTHX_ name, iv_return);
681 return constant_7 (aTHX_ name, iv_return);
684 return constant_8 (aTHX_ name, iv_return);
687 return constant_9 (aTHX_ name, iv_return);
690 /* Names all of length 10. */
691 /* ALT_DIGITS T_FMT_AMPM */
692 /* Offset 7 gives the best switch position. */
695 if (memEQ(name, "ALT_DIGITS", 10)) {
698 *iv_return = ALT_DIGITS;
699 return PERL_constant_ISIV;
701 return PERL_constant_NOTDEF;
706 if (memEQ(name, "T_FMT_AMPM", 10)) {
709 *iv_return = T_FMT_AMPM;
710 return PERL_constant_ISIV;
712 return PERL_constant_NOTDEF;
719 if (memEQ(name, "ERA_D_T_FMT", 11)) {
721 *iv_return = ERA_D_T_FMT;
722 return PERL_constant_ISIV;
724 return PERL_constant_NOTDEF;
729 return PERL_constant_NOTFOUND;
732 MODULE = I18N::Langinfo PACKAGE = I18N::Langinfo
740 dXSTARG; /* Faster if we have it. */
747 /* NV nv; Uncomment this if you need to return NVs */
748 /* const char *pv; Uncomment this if you need to return PVs */
751 const char * s = SvPV(sv, len);
753 /* Change this to constant(aTHX_ s, len, &iv, &nv);
754 if you need to return both NVs and IVs */
755 type = constant(aTHX_ s, len, &iv);
756 /* Return 1 or 2 items. First is error message, or undef if no error.
757 Second, if present, is found value */
759 case PERL_constant_NOTFOUND:
760 sv = sv_2mortal(newSVpvf("%s is not a valid I18N::Langinfo macro", s));
763 case PERL_constant_NOTDEF:
764 sv = sv_2mortal(newSVpvf(
765 "Your vendor has not defined I18N::Langinfo macro %s, used", s));
768 case PERL_constant_ISIV:
773 /* Uncomment this if you need to return NOs
774 case PERL_constant_ISNO:
779 /* Uncomment this if you need to return NVs
780 case PERL_constant_ISNV:
785 /* Uncomment this if you need to return PVs
786 case PERL_constant_ISPV:
789 PUSHp(pv, strlen(pv));
791 /* Uncomment this if you need to return PVNs
792 case PERL_constant_ISPVN:
797 /* Uncomment this if you need to return SVs
798 case PERL_constant_ISSV:
803 /* Uncomment this if you need to return UNDEFs
804 case PERL_constant_ISUNDEF:
806 /* Uncomment this if you need to return UVs
807 case PERL_constant_ISUV:
812 /* Uncomment this if you need to return YESs
813 case PERL_constant_ISYES:
819 sv = sv_2mortal(newSVpvf(
820 "Unexpected return type %d while processing I18N::Langinfo macro %s, used",
829 #ifdef HAS_NL_LANGINFO
830 char *s = nl_langinfo(code);
831 RETVAL = newSVpvn(s, strlen(s));
833 croak("nl_langinfo() not implemented on this architecture");