};
#ifdef UTF2000
+#ifdef HAVE_DATABASE
+extern Lisp_Object Qcomposition;
+#else
extern Lisp_Object Vcharacter_composition_table;
+#endif
INLINE_HEADER void
decode_flush_er_chars (struct decoding_stream *str, unsigned_char_dynarr* dst);
{
if (CODING_SYSTEM_DISABLE_COMPOSITION (str->codesys))
decode_add_er_char (str, character, dst);
- else if (!CHAR_TABLEP (str->combining_table))
+ else if (
+#ifdef HAVE_DATABASE
+ !CONSP (str->combining_table)
+#else
+ !CHAR_TABLEP (str->combining_table)
+#endif
+ )
{
- Lisp_Object ret
- = get_char_id_table (XCHAR_TABLE(Vcharacter_composition_table),
- character);
+ Lisp_Object ret =
+#ifdef HAVE_DATABASE
+ Fget_char_attribute (make_char (character), Qcomposition, Qnil)
+#else
+ get_char_id_table (XCHAR_TABLE(Vcharacter_composition_table),
+ character)
+#endif
+ ;
if (NILP (ret))
decode_add_er_char (str, character, dst);
}
else
{
- Lisp_Object ret
- = get_char_id_table (XCHAR_TABLE(str->combining_table),
- character);
+ Lisp_Object ret =
+#ifdef HAVE_DATABASE
+ Fcdr (Fassq (make_char (character), str->combining_table))
+#else
+ get_char_id_table (XCHAR_TABLE(str->combining_table),
+ character)
+#endif
+ ;
if (CHARP (ret))
{
Emchar char2 = XCHARVAL (ret);
ret =
+#ifdef HAVE_DATABASE
+ Fget_char_attribute (make_char (character), Qcomposition, Qnil)
+#else
get_char_id_table (XCHAR_TABLE(Vcharacter_composition_table),
- char2);
+ char2)
+#endif
+ ;
if (NILP (ret))
{
decode_add_er_char (str, character, dst);
str->combining_table = ret;
}
}
+#ifndef HAVE_DATABASE
else if (CHAR_TABLEP (ret))
{
str->combined_chars[str->combined_char_count++] = character;
str->combining_table = ret;
}
+#endif
else
{
COMPOSE_FLUSH_CHARS (str, dst);