(Vcharacter_composition_table): Don't add extern if external-DB
feature is supported.
(COMPOSE_ADD_CHAR): Modify for new data-representation of character
composition rule if external-DB feature is supported.
+#ifdef HAVE_DATABASE
+extern Lisp_Object Qcomposition;
+#else
extern Lisp_Object Vcharacter_composition_table;
extern Lisp_Object Vcharacter_composition_table;
INLINE_HEADER void
decode_flush_er_chars (struct decoding_stream *str, unsigned_char_dynarr* dst);
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);
{
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);
if (NILP (ret))
decode_add_er_char (str, character, dst);
- 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 =
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),
get_char_id_table (XCHAR_TABLE(Vcharacter_composition_table),
if (NILP (ret))
{
decode_add_er_char (str, character, dst);
if (NILP (ret))
{
decode_add_er_char (str, character, dst);
str->combining_table = ret;
}
}
str->combining_table = ret;
}
}
else if (CHAR_TABLEP (ret))
{
str->combined_chars[str->combined_char_count++] = character;
str->combining_table = ret;
}
else if (CHAR_TABLEP (ret))
{
str->combined_chars[str->combined_char_count++] = character;
str->combining_table = ret;
}
else
{
COMPOSE_FLUSH_CHARS (str, dst);
else
{
COMPOSE_FLUSH_CHARS (str, dst);