|
21 | 21 | * This macro converts uppercase ASCII values to Regional Indicator codepoints */ |
22 | 22 | #define NFLAGS(c) (0x1F1A5+((unsigned int)(c))) |
23 | 23 |
|
24 | | -static const char nflags_s[10][2] = {"CN", "DE", "ES", "FR", "GB", "IT", "JP", "KR", "RU", "US"}; |
| 24 | +#if __has_attribute(nonstring) && defined(__GNUC__) && ((!defined(__clang__) && __GNUC__ >= 15) || (defined(__clang_major__) && __clang_major__ >= 20)) |
| 25 | +# define ZEND_NONSTRING __attribute__((nonstring)) |
| 26 | +#else |
| 27 | +# define ZEND_NONSTRING |
| 28 | +#endif |
| 29 | + |
| 30 | +static const char nflags_s[10][2] ZEND_NONSTRING = {"CN", "DE", "ES", "FR", "GB", "IT", "JP", "KR", "RU", "US"}; |
25 | 31 | static const int nflags_code_kddi[10] = { 0x2549, 0x2546, 0x24C0, 0x2545, 0x2548, 0x2547, 0x2750, 0x254A, 0x24C1, 0x27F7 }; |
26 | 32 | static const int nflags_code_sb[10] = { 0x2B0A, 0x2B05, 0x2B08, 0x2B04, 0x2B07, 0x2B06, 0x2B02, 0x2B0B, 0x2B09, 0x2B03 }; |
27 | 33 |
|
28 | 34 | #define EMIT_KEYPAD_EMOJI(c) do { *snd = (c); return 0x20E3; } while(0) |
29 | 35 | #define EMIT_FLAG_EMOJI(country) do { *snd = NFLAGS((country)[0]); return NFLAGS((country)[1]); } while(0) |
30 | 36 |
|
31 | | -static const char nflags_kddi[6][2] = {"FR", "DE", "IT", "GB", "CN", "KR"}; |
32 | | -static const char nflags_sb[10][2] = {"JP", "US", "FR", "DE", "IT", "GB", "ES", "RU", "CN", "KR"}; |
| 37 | +static const char nflags_kddi[6][2] ZEND_NONSTRING = {"FR", "DE", "IT", "GB", "CN", "KR"}; |
| 38 | +static const char nflags_sb[10][2] ZEND_NONSTRING = {"JP", "US", "FR", "DE", "IT", "GB", "ES", "RU", "CN", "KR"}; |
33 | 39 |
|
34 | 40 | /* number -> (ku*94)+ten value for telephone keypad character */ |
35 | 41 | #define DOCOMO_KEYPAD(n) ((n) == 0 ? 0x296F : (0x2965 + (n))) |
|
0 commit comments