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 MORIOKA Tomohiko
+ 2012, 2013, 2016 MORIOKA Tomohiko
This file is part of XEmacs.
#include "mule-ccl.h"
#include "chartab.h"
#endif
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
+#include <cos.h>
+#endif
#include "file-coding.h"
Lisp_Object Qcoding_system_error;
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);
}
unsigned combined_char_count;
Emchar combined_chars[16];
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
+ COS_object combining_table;
+#else
Lisp_Object combining_table;
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
#endif
struct detection_state decst;
};
str->bom_flag = 0;
str->er_counter = 0;
str->combined_char_count = 0;
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
+ str->combining_table = COS_NIL;
+#else
str->combining_table = Qnil;
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
#endif
if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_AUTODETECT
|| CODING_SYSTEM_EOL_TYPE (str->codesys) == EOL_AUTODETECT)
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 USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
+ str->combining_table = COS_NIL;
+#else
str->combining_table = Qnil;
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
+}
+
+extern CONCORD_DS concord_current_env;
+
+#if 0
+static int
+concord_setup_env_maybe ()
+{
+ if (concord_current_env == NULL)
+ {
+ concord_open_env ("/usr/local/share/chise/1.0/db/");
+ }
+ return 0;
}
+#endif
void COMPOSE_ADD_CHAR (struct decoding_stream *str, Emchar character,
unsigned_char_dynarr* dst);
{
if (CODING_SYSTEM_DISABLE_COMPOSITION (str->codesys))
decode_add_er_char (str, character, dst);
+#ifdef USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE
+ else if (!cos_cons_p (str->combining_table))
+ {
+ COS_object ret;
+
+ /* concord_setup_env_maybe (); */
+ open_chise_data_source_maybe ();
+ ret = concord_object_get_attribute (cos_make_char (character),
+ COS_COMPOSITION);
+
+ if (!cos_cons_p (ret))
+ decode_add_er_char (str, character, dst);
+ else
+ {
+ str->combined_chars[0] = character;
+ str->combined_char_count = 1;
+ str->combining_table = ret;
+ }
+ }
+ else
+ {
+ COS_object ret
+ = cos_cdr (cos_assoc (cos_make_char (character),
+ str->combining_table));
+
+ if (cos_char_p (ret))
+ {
+ Emchar char2 = cos_char_id (ret);
+ COS_object ret2;
+
+ /* concord_setup_env_maybe (); */
+ open_chise_data_source_maybe ();
+ ret2 = concord_object_get_attribute (ret, COS_COMPOSITION);
+
+ if (!cos_cons_p (ret2))
+ {
+ decode_add_er_char (str, char2, dst);
+ str->combined_char_count = 0;
+ str->combining_table = COS_NIL;
+ }
+ else
+ {
+ str->combined_chars[0] = char2;
+ str->combined_char_count = 1;
+ str->combining_table = ret2;
+ }
+ }
+ else
+ {
+ /* concord_setup_env_maybe (); */
+ open_chise_data_source_maybe ();
+ ret = concord_object_get_attribute (cos_make_char (character),
+ COS_COMPOSITION);
+
+ COMPOSE_FLUSH_CHARS (str, dst);
+ if (!cos_cons_p (ret))
+ decode_add_er_char (str, character, dst);
+ else
+ {
+ str->combined_chars[0] = character;
+ str->combined_char_count = 1;
+ str->combining_table = ret;
+ }
+ }
+ }
+#else
else if (!CONSP (str->combining_table))
{
Lisp_Object ret
}
}
}
+#endif /* USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE */
}
#else /* not UTF2000 */
#define COMPOSE_FLUSH_CHARS(str, dst)
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];