(M17NLIB_MINOR_VERSION): Update to 2.
[m17n/m17n-lib.git] / src / mtext.c
index f34586f..d257d43 100644 (file)
@@ -449,22 +449,18 @@ count_utf_16_chars (const void *data, int nitems, int swap)
       if (prev_surrogate)
        {
          if (c < 0xDC00 || c >= 0xE000)
-           return -1;
-         prev_surrogate = 0;
+           /* Invalid surrogate */
+           nchars++;
        }
       else
        {
-         if (c < 0xD800)
-           ;
-         else if (c < 0xDC00)
+         if (c >= 0xD800 && c < 0xDC00)
            prev_surrogate = 1;
-         else if (c < 0xE000)
-           return -1;
          nchars++;
        }
     }
   if (prev_surrogate)
-    return -1;
+    nchars++;
   return nchars;
 }
 
@@ -1111,71 +1107,20 @@ mtext__eol (MText *mt, int pos)
 \f
 /* External API */
 
-/*** @addtogroup m17nMtext */
-/*** @{ */
-/*=*/
-/***en @name Variables: System's UTF-16 and UTF-32 types */
-/***ja @name ÊÑ¿ô: ¥·¥¹¥Æ¥à¤Î UTF-16 ¤È UTF-32 ¤Î¥¿¥¤¥× */
-/*** @{ */
-/*=*/
-
-/***en
-    @brief Variable of value MTEXT_FORMAT_UTF_16LE or MTEXT_FORMAT_UTF_16BE.
-
-    The global variable MTEXT_FORMAT_UTF_16 is initialized to
-    MTEXT_FORMAT_UTF_16LE on a "Little Endian" system (storing words
-    with the least significant byte first), and to
-    MTEXT_FORMAT_UTF_16BE depneding on a "Big Endian" system (storing
-    words with the most significant byte first).  */
-
-/***ja
-    @brief Ãͤ¬ MTEXT_FORMAT_UTF_16LE ¤« MTEXT_FORMAT_UTF_16BE ¤Ç¤¢¤ëÊÑ¿ô
-
-    Âç°èÊÑ¿ô MTEXT_FORMAT_UTF_16 ¤Ï¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à¡Ê¥ï¡¼
-    ¥É¤ò LSB (Least Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
-    MTEXT_FORMAT_UTF_16LE ¤Ë½é´ü²½¤µ¤ì¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
-    ¡Ê¥ï¡¼¥É¤ò MSB (Most Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
-    MTEXT_FORMAT_UTF_16BE ¤Ë½é´ü²½¤µ¤ì¤ë¡£  */
-
-/***
-    @seealso mtext_from_data ()  */
-
 #ifdef WORDS_BIGENDIAN
-const enum MTextFormat MTEXT_FORMAT_UTF_16 = MTEXT_FORMAT_UTF_16BE;
+const int MTEXT_FORMAT_UTF_16 = MTEXT_FORMAT_UTF_16BE;
 #else
-const enum MTextFormat MTEXT_FORMAT_UTF_16 = MTEXT_FORMAT_UTF_16LE;
+const int MTEXT_FORMAT_UTF_16 = MTEXT_FORMAT_UTF_16LE;
 #endif
 
-/*=*/
-/***en
-    @brief Variable of value MTEXT_FORMAT_UTF_32LE or MTEXT_FORMAT_UTF_32BE.
-
-    The global variable MTEXT_FORMAT_UTF_32 is initialized to
-    MTEXT_FORMAT_UTF_32LE on a "Little Endian" system (storing words
-    with the least significant byte first), and to
-    MTEXT_FORMAT_UTF_32BE depneding on a "Big Endian" system (storing
-    words with the most significant byte first).  */
-
-/***ja
-    @brief Ãͤ¬ MTEXT_FORMAT_UTF_32LE ¤« MTEXT_FORMAT_UTF_32BE ¤Ç¤¢¤ëÊÑ¿ô
-
-    Âç°èÊÑ¿ô MTEXT_FORMAT_UTF_32 ¤Ï¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à¡Ê¥ï¡¼
-    ¥É¤ò LSB (Least Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
-    MTEXT_FORMAT_UTF_32LE ¤Ë½é´ü²½¤µ¤ì¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥·¥¹¥Æ¥à
-    ¡Ê¥ï¡¼¥É¤ò MSB (Most Significant Byte) ¤òÀè¤Ë¤·¤Æ³ÊǼ¡Ë¾å¤Ç¤Ï
-    MTEXT_FORMAT_UTF_32BE ¤Ë½é´ü²½¤µ¤ì¤ë¡£  */
-
-/***
-    @seealso mtext_from_data ()  */
-
 #ifdef WORDS_BIGENDIAN
-const enum MTextFormat MTEXT_FORMAT_UTF_32 = MTEXT_FORMAT_UTF_32BE;
+const int MTEXT_FORMAT_UTF_32 = MTEXT_FORMAT_UTF_32BE;
 #else
-const enum MTextFormat MTEXT_FORMAT_UTF_32 = MTEXT_FORMAT_UTF_32LE;
+const int MTEXT_FORMAT_UTF_32 = MTEXT_FORMAT_UTF_32LE;
 #endif
 
-/*** @} */
-
+/*** @addtogroup m17nMtext */
+/*** @{ */
 /*=*/
 
 /***en