This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make measure_struct a file static.
[perl5.git] / utf8.h
diff --git a/utf8.h b/utf8.h
index b35cfeb..feff1b4 100644 (file)
--- a/utf8.h
+++ b/utf8.h
@@ -1,6 +1,6 @@
 /*    utf8.h
  *
- *    Copyright (c) 1998-2001, Larry Wall
+ *    Copyright (c) 1998-2002, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -138,9 +138,11 @@ END_EXTERN_C
 /* how wide can a single UTF8 encoded character become */
 #define UTF8_MAXLEN 13
 /* how wide a character can become when upper/lowercased */
-#define UTF8_MAXLEN_UCLC (UTF8_MAXLEN*2)
+#define UTF8_MAXLEN_UCLC_MULT 3
+#define UTF8_MAXLEN_UCLC (UTF8_MAXLEN*UTF8_MAXLEN_UCLC_MULT)
 /* how wide a character can become when casefolded */
-#define UTF8_MAXLEN_FOLD (UTF8_MAXLEN*3)
+#define UTF8_MAXLEN_FOLD_MULT 3
+#define UTF8_MAXLEN_FOLD (UTF8_MAXLEN*UTF8_MAXLEN_FOLD_MULT)
 
 #define IN_BYTES (PL_curcop->op_private & HINT_BYTES)
 #define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTES)
@@ -188,3 +190,34 @@ END_EXTERN_C
 #endif
 
 #define UTF8_IS_ASCII(c) UTF8_IS_INVARIANT(c)
+
+#define UNICODE_LATIN_SMALL_LETTER_SHARP_S     0x00DF
+#define UNICODE_GREEK_CAPITAL_LETTER_SIGMA     0x03A3
+#define UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA 0x03C2
+#define UNICODE_GREEK_SMALL_LETTER_SIGMA       0x03C3
+
+#define EBCDIC_LATIN_SMALL_LETTER_SHARP_S      0x0059
+
+#define UNI_DISPLAY_ISPRINT    0x0001
+#define UNI_DISPLAY_BACKSLASH  0x0002
+#define UNI_DISPLAY_QQ         (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH)
+#define UNI_DISPLAY_REGEX      (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH)
+
+#ifdef EBCDIC
+#   define ANYOF_FOLD_SHARP_S(node, input, end)        \
+       (ANYOF_BITMAP_TEST(node, EBCDIC_LATIN_SMALL_LETTER_SHARP_S) && \
+        (ANYOF_FLAGS(node) & ANYOF_UNICODE) && \
+        (ANYOF_FLAGS(node) & ANYOF_FOLD) && \
+        ((end) > (input) + 1) && \
+        toLOWER((input)[0]) == 's' && \
+        toLOWER((input)[1]) == 's')
+#else
+#   define ANYOF_FOLD_SHARP_S(node, input, end)        \
+       (ANYOF_BITMAP_TEST(node, UNICODE_LATIN_SMALL_LETTER_SHARP_S) && \
+        (ANYOF_FLAGS(node) & ANYOF_UNICODE) && \
+        (ANYOF_FLAGS(node) & ANYOF_FOLD) && \
+        ((end) > (input) + 1) && \
+        toLOWER((input)[0]) == 's' && \
+        toLOWER((input)[1]) == 's')
+#endif
+#define SHARP_S_SKIP 2