update.
[chise/xemacs-chise.git.1] / src / text-coding.c
index e6da371..7071934 100644 (file)
@@ -2,7 +2,7 @@
    Copyright (C) 1991, 1995 Free Software Foundation, Inc.
    Copyright (C) 1995 Sun Microsystems, Inc.
    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2011,
    Copyright (C) 1991, 1995 Free Software Foundation, Inc.
    Copyright (C) 1995 Sun Microsystems, Inc.
    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2011,
-     2012, 2013 MORIOKA Tomohiko
+     2012, 2013, 2016 MORIOKA Tomohiko
 
 This file is part of XEmacs.
 
 
 This file is part of XEmacs.
 
@@ -38,7 +38,7 @@ Boston, MA 02111-1307, USA.  */
 #include "mule-ccl.h"
 #include "chartab.h"
 #endif
 #include "mule-ccl.h"
 #include "chartab.h"
 #endif
-#ifdef HAVE_LIBCHISE
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
 #include <cos.h>
 #endif
 #include "file-coding.h"
 #include <cos.h>
 #endif
 #include "file-coding.h"
@@ -1079,6 +1079,8 @@ if TYPE is 'ccl:
              CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, 1) = value;
            else if (EQ (key, Qcharset_g2))
              CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, 2) = value;
              CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, 1) = value;
            else if (EQ (key, Qcharset_g2))
              CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, 2) = value;
+           else if (EQ (key, Qcharset_g3))
+             CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, 3) = value;
            else
              signal_simple_error ("Unrecognized property", key);
          }
            else
              signal_simple_error ("Unrecognized property", key);
          }
@@ -2337,11 +2339,11 @@ struct decoding_stream
 
   unsigned combined_char_count;
   Emchar combined_chars[16];
 
   unsigned combined_char_count;
   Emchar combined_chars[16];
-#ifdef HAVE_LIBCHISE
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
   COS_object combining_table;
 #else
   Lisp_Object combining_table;
   COS_object combining_table;
 #else
   Lisp_Object combining_table;
-#endif /* HAVE_LIBCHISE */
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
 #endif
   struct detection_state decst;
 };
 #endif
   struct detection_state decst;
 };
@@ -2483,11 +2485,11 @@ reset_decoding_stream (struct decoding_stream *str)
   str->bom_flag = 0;
   str->er_counter = 0;
   str->combined_char_count = 0;
   str->bom_flag = 0;
   str->er_counter = 0;
   str->combined_char_count = 0;
-#ifdef HAVE_LIBCHISE
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
   str->combining_table = COS_NIL;
 #else
   str->combining_table = Qnil;
   str->combining_table = COS_NIL;
 #else
   str->combining_table = Qnil;
-#endif /* HAVE_LIBCHISE */
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
 #endif
   if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_AUTODETECT
       || CODING_SYSTEM_EOL_TYPE (str->codesys) == EOL_AUTODETECT)
 #endif
   if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_AUTODETECT
       || CODING_SYSTEM_EOL_TYPE (str->codesys) == EOL_AUTODETECT)
@@ -3518,11 +3520,11 @@ COMPOSE_FLUSH_CHARS (struct decoding_stream *str, unsigned_char_dynarr* dst)
   for (i = 0; i < str->combined_char_count; i++)
     decode_add_er_char (str, str->combined_chars[i], dst);
   str->combined_char_count = 0;
   for (i = 0; i < str->combined_char_count; i++)
     decode_add_er_char (str, str->combined_chars[i], dst);
   str->combined_char_count = 0;
-#ifdef HAVE_LIBCHISE
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
   str->combining_table = COS_NIL;
 #else
   str->combining_table = Qnil;
   str->combining_table = COS_NIL;
 #else
   str->combining_table = Qnil;
-#endif /* HAVE_LIBCHISE */
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
 }
 
 extern CONCORD_DS concord_current_env;
 }
 
 extern CONCORD_DS concord_current_env;
@@ -3547,7 +3549,7 @@ COMPOSE_ADD_CHAR (struct decoding_stream *str,
 {
   if (CODING_SYSTEM_DISABLE_COMPOSITION (str->codesys))
     decode_add_er_char (str, character, dst);
 {
   if (CODING_SYSTEM_DISABLE_COMPOSITION (str->codesys))
     decode_add_er_char (str, character, dst);
-#ifdef HAVE_LIBCHISE
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
   else if (!cos_cons_p (str->combining_table))
     {
       COS_object ret;
   else if (!cos_cons_p (str->combining_table))
     {
       COS_object ret;
@@ -3668,7 +3670,7 @@ COMPOSE_ADD_CHAR (struct decoding_stream *str,
            }
        }
     }
            }
        }
     }
-#endif /* HAVE_LIBCHISE */
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
 }
 #else /* not UTF2000 */
 #define COMPOSE_FLUSH_CHARS(str, dst)
 }
 #else /* not UTF2000 */
 #define COMPOSE_FLUSH_CHARS(str, dst)
@@ -4825,6 +4827,13 @@ char_encode_utf8 (struct encoding_stream *str, Emchar ch,
                                                  map, Qnil,
                                                  Qnil, Qnil)) )
            code_point = XINT (ret);
                                                  map, Qnil,
                                                  Qnil, Qnil)) )
            code_point = XINT (ret);
+         else if ( !NILP (map =
+                          CODING_SYSTEM_ISO2022_INITIAL_CHARSET
+                          (str->codesys, 3))
+                   && INTP (ret = Fchar_feature (make_char (ch),
+                                                 map, Qnil,
+                                                 Qnil, Qnil)) )
+           code_point = XINT (ret);
          else if (CODING_SYSTEM_USE_ENTITY_REFERENCE (str->codesys))
            {
              char buf[18];
          else if (CODING_SYSTEM_USE_ENTITY_REFERENCE (str->codesys))
            {
              char buf[18];