\f
#ifdef UTF2000
+EXFUN (Fmap_char_attribute, 3);
+
#if defined(HAVE_DATABASE)
EXFUN (Fload_char_attribute_table, 1);
-EXFUN (Fmap_char_attribute, 3);
Lisp_Object Vchar_db_stingy_mode;
#endif
}
-#ifndef HAVE_DATABASE
-Lisp_Object Vcharacter_composition_table;
-#endif
Lisp_Object Vcharacter_variant_table;
Lisp_Object Qsystem_char_id;
*/
(list))
{
-#ifdef HAVE_DATABASE
Lisp_Object base, modifier;
Lisp_Object rest;
while (!NILP (rest))
{
if (!CHARP (base))
- signal_simple_error ("Invalid value for composition", list);
+ return Qnil;
if (!CONSP (rest))
signal_simple_error ("Invalid value for composition", list);
modifier = Fcar (rest);
Fget_char_attribute (base, Qcomposition, Qnil)));
}
return base;
-#else
- Lisp_Object table = Vcharacter_composition_table;
- Lisp_Object rest = list;
-
- while (CONSP (rest))
- {
- Lisp_Object v = Fcar (rest);
- Lisp_Object ret;
- Emchar c = to_char_id (v, "Invalid value for composition", list);
-
- ret = get_char_id_table (XCHAR_TABLE(table), c);
-
- rest = Fcdr (rest);
- if (NILP (rest))
- {
- if (!CHAR_TABLEP (ret))
- return ret;
- else
- return Qt;
- }
- else if (!CONSP (rest))
- break;
- else if (CHAR_TABLEP (ret))
- table = ret;
- else
- signal_simple_error ("Invalid table is found with", list);
- }
- signal_simple_error ("Invalid value for composition", list);
-#endif
}
DEFUN ("char-variants", Fchar_variants, 1, 1, 0, /*
}
else if (EQ (attribute, Q_decomposition))
{
-#ifndef HAVE_DATABASE
- Lisp_Object seq;
-#endif
-
CHECK_CHAR (character);
if (!CONSP (value))
signal_simple_error ("Invalid value for ->decomposition",
if (CONSP (Fcdr (value)))
{
-#ifdef HAVE_DATABASE
if (NILP (Fcdr (Fcdr (value))))
{
Lisp_Object base = Fcar (value);
Fsetcdr (ret, character);
}
}
-#else
- Lisp_Object rest = value;
- Lisp_Object table = Vcharacter_composition_table;
- size_t len;
- int i = 0;
-
- GET_EXTERNAL_LIST_LENGTH (rest, len);
- seq = make_vector (len, Qnil);
-
- while (CONSP (rest))
- {
- Lisp_Object v = Fcar (rest);
- Lisp_Object ntable;
- Emchar c
- = to_char_id (v, "Invalid value for ->decomposition", value);
-
- if (c < 0)
- XVECTOR_DATA(seq)[i++] = v;
- else
- XVECTOR_DATA(seq)[i++] = make_char (c);
- rest = Fcdr (rest);
- if (!CONSP (rest))
- {
- put_char_id_table (XCHAR_TABLE(table),
- make_char (c), character);
- break;
- }
- else
- {
- ntable = get_char_id_table (XCHAR_TABLE(table), c);
- if (!CHAR_TABLEP (ntable))
- {
- ntable = make_char_id_table (Qnil);
- put_char_id_table (XCHAR_TABLE(table),
- make_char (c), ntable);
- }
- table = ntable;
- }
- }
-#endif
}
else
{
make_char (c), Fcons (character, ret));
}
}
-#ifndef HAVE_DATABASE
- seq = make_vector (1, v);
-#endif
}
-#ifndef HAVE_DATABASE
- value = seq;
-#endif
}
else if (EQ (attribute, Qto_ucs) || EQ (attribute, Q_ucs))
{
return Qnil;
}
+#ifdef HAVE_DATABASE
Lisp_Object
char_attribute_system_db_file (Lisp_Object key_type, Lisp_Object attribute,
int writing_mode)
return Fexpand_file_name (Fsymbol_name (attribute), db_dir);
#endif
}
-
+
DEFUN ("save-char-attribute-table", Fsave_char_attribute_table, 1, 1, 0, /*
Save values of ATTRIBUTE into database file.
*/
return Qnil;
}
-#ifdef HAVE_DATABASE
Lisp_Object
load_char_attribute_maybe (Lisp_Char_Table* cit, Emchar ch)
{
put_char_id_table_0 (char_attribute_table_to_load, code, Fread (value));
return Qnil;
}
-#endif
DEFUN ("load-char-attribute-table", Fload_char_attribute_table, 1, 1, 0, /*
Load values of ATTRIBUTE into database file.
*/
(attribute))
{
-#ifdef HAVE_DATABASE
Lisp_Object table = Fgethash (attribute,
Vchar_attribute_hash_table,
Qunbound);
}
}
return Qnil;
-#endif
}
+#endif
DEFUN ("map-char-attribute", Fmap_char_attribute, 2, 3, 0, /*
Map FUNCTION over entries in ATTRIBUTE, calling it with two args,
DEFSUBR (Ffind_char_attribute_table);
defsymbol (&Qput_char_table_map_function, "put-char-table-map-function");
DEFSUBR (Fput_char_table_map_function);
+#ifdef HAVE_DATABASE
DEFSUBR (Fsave_char_attribute_table);
DEFSUBR (Fmount_char_attribute_table);
DEFSUBR (Freset_char_attribute_table);
DEFSUBR (Fclose_char_attribute_table);
-#ifdef HAVE_DATABASE
defsymbol (&Qload_char_attribute_table_map_function,
"load-char-attribute-table-map-function");
DEFSUBR (Fload_char_attribute_table_map_function);
-#endif
DEFSUBR (Fload_char_attribute_table);
+#endif
DEFSUBR (Fchar_attribute_alist);
DEFSUBR (Fget_char_attribute);
DEFSUBR (Fput_char_attribute);
vars_of_chartab (void)
{
#ifdef UTF2000
-#ifndef HAVE_DATABASE
- staticpro (&Vcharacter_composition_table);
- Vcharacter_composition_table = make_char_id_table (Qnil);
-#endif
-
staticpro (&Vcharacter_variant_table);
Vcharacter_variant_table = make_char_id_table (Qunbound);