Lisp_Object canon = XCHAR_TABLE (case_table)->extras[1];
int from, to;
+ if (NATNUMP (elt))
+ Fset_char_table_range (canon, range, Faref (case_table, Faref (up, elt)));
+}
+
+/* Set elements of char-table TABLE for characters in RANGE to
+ themselves. This is done only when ELT is a character. This is
+ called in map_char_table. */
+
+static void
+set_identity (table, range, elt)
+ Lisp_Object table, range, elt;
+{
+ int from, to;
+
if (NATNUMP (elt))
{
if (CONSP (range))
from = to = XINT (range);
for (; from <= to; from++)
- {
- Lisp_Object val1, val2;
-
- val1 = Faref (up, elt);
- if (EQ (val1, Qt))
- val1 = elt;
- else if (! NATNUMP (val1))
- continue;
- val2 = Faref (case_table, val1);
- if (EQ (val2, Qt))
- val2 = val1;
- else if (! NATNUMP (val2))
- continue;
- Faset (canon, make_number (from), val2);
- }
+ CHAR_TABLE_SET (table, from, make_number (from));
}
}
-/* Set elements of char-table TABLE for characters in RANGE to
- themselves. This is done only when ELT is a character. This is
- called in map_char_table. */
-
-static void
-set_identity (table, range, elt)
- Lisp_Object table, range, elt;
-{
- if (EQ (elt, Qt) || NATNUMP (elt))
- Fset_char_table_range (table, range, Qt);
-}
-
/* Permute the elements of TABLE (which is initially an identity
mapping) so that it has one cycle for each equivalence class
induced by the translation table on which map_char_table is
if (NATNUMP (elt))
{
- Lisp_Object tem;
+ Lisp_Object tem = Faref (table, elt);
if (CONSP (range))
{
for (; from <= to; from++)
if (from != XINT (elt))
{
- tem = Faref (table, elt);
- if (EQ (tem, Qt))
- tem = elt;
Faset (table, elt, make_number (from));
Faset (table, make_number (from), tem);
}