ncurses 6.2 - patch 20210418
[ncurses.git] / ncurses / wcwidth.h
index 61e822ad679f7c7c9cc819f5bb24ac4b13a7fbf0..ccae41a9b994ddebcd731540e538036d2aefa4ef 100644 (file)
@@ -119,7 +119,7 @@ static int bisearch(wchar_t ucs, const struct interval *table, int max) {
  * in ISO 10646.
  */
 
-int mk_wcwidth(wchar_t ucs)
+NCURSES_EXPORT(int) mk_wcwidth(wchar_t ucs)
 {
   /* sorted list of non-overlapping intervals of non-spacing characters */
   /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
@@ -192,19 +192,22 @@ int mk_wcwidth(wchar_t ucs)
      (ucs <= 0x115f ||                    /* Hangul Jamo init. consonants */
       ucs == 0x2329 || ucs == 0x232a ||
       (ucs >= 0x2e80 && ucs <= 0xa4cf &&
-       ucs != 0x303f) ||                  /* CJK ... Yi */
-      (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
-      (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
-      (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */
-      (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
-      (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
-      (ucs >= 0xffe0 && ucs <= 0xffe6) ||
-      (ucs >= 0x20000 && ucs <= 0x2fffd) ||
-      (ucs >= 0x30000 && ucs <= 0x3fffd)));
+       ucs != 0x303f)                     /* CJK ... Yi */
+      || (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */
+      || (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */
+      || (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */
+      || (ucs >= 0xfe30 && ucs <= 0xfe6f) /* CJK Compatibility Forms */
+      || (ucs >= 0xff00 && ucs <= 0xff60) /* Fullwidth Forms */
+      || (ucs >= 0xffe0 && ucs <= 0xffe6)
+#if !defined(SIZEOF_WCHAR_T) || (SIZEOF_WCHAR_T >= 4)
+      || (ucs >= 0x20000 && ucs <= 0x2fffd)
+      || (ucs >= 0x30000 && ucs <= 0x3fffd)
+#endif
+      ));
 }
 
 
-int mk_wcswidth(const wchar_t *pwcs, size_t n)
+NCURSES_EXPORT(int) mk_wcswidth(const wchar_t *pwcs, size_t n)
 {
   int w, width = 0;
 
@@ -227,7 +230,7 @@ int mk_wcswidth(const wchar_t *pwcs, size_t n)
  * the traditional terminal character-width behaviour. It is not
  * otherwise recommended for general use.
  */
-int mk_wcwidth_cjk(wchar_t ucs)
+NCURSES_EXPORT(int) mk_wcwidth_cjk(wchar_t ucs)
 {
   /* sorted list of non-overlapping intervals of East Asian Ambiguous
    * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
@@ -295,7 +298,7 @@ int mk_wcwidth_cjk(wchar_t ucs)
 }
 
 
-int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
+NCURSES_EXPORT(int) mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
 {
   int w, width = 0;