Mercurial > emacs
changeset 17807:8a8e26aa76ed
(compute_trt_identity): Use make_sub_char_table.
(compute_trt_identity, compute_trt_shuffle):
Set up bytes[0] with the charset code.
Check for a sub-char-table when deciding to recurse.
Terminate the loop properly for a sub-char-table.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 15 May 1997 03:22:38 +0000 |
parents | 96eb40f791e4 |
children | 7a8eda2e280a |
files | src/casetab.c |
diffstat | 1 files changed, 11 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/casetab.c Thu May 15 02:28:34 1997 +0000 +++ b/src/casetab.c Thu May 15 03:22:38 1997 +0000 @@ -177,21 +177,21 @@ struct Lisp_Char_Table *trt, *inverse; { register int i; + int lim = (depth == 0 ? CHAR_TABLE_ORDINARY_SLOTS : SUB_CHAR_TABLE_ORDINARY_SLOTS); - for (i = 0; i < CHAR_TABLE_ORDINARY_SLOTS; i++) + for (i = 0; i < lim; i++) { if (NATNUMP (trt->contents[i])) { bytes[depth] = i; XSETFASTINT (inverse->contents[i], (depth == 0 && i < CHAR_TABLE_SINGLE_BYTE_SLOTS ? i - : MAKE_NON_ASCII_CHAR (bytes[0]-128, - bytes[1], bytes[2]))); + : MAKE_NON_ASCII_CHAR (bytes[0], bytes[1], bytes[2]))); } - else if (CHAR_TABLE_P (trt->contents[i])) + else if (SUB_CHAR_TABLE_P (trt->contents[i])) { - bytes[depth] = i; - inverse->contents[i] = Fmake_char_table (Qnil, Qnil); + bytes[depth] = i - 128; + inverse->contents[i] = make_sub_char_table (Qnil); compute_trt_identity (bytes, depth + 1, XCHAR_TABLE (trt->contents[i]), XCHAR_TABLE (inverse->contents[i])); @@ -210,14 +210,14 @@ { register int i; Lisp_Object j, tem, q; + int lim = (depth == 0 ? CHAR_TABLE_ORDINARY_SLOTS : SUB_CHAR_TABLE_ORDINARY_SLOTS); - for (i = 0; i < CHAR_TABLE_SINGLE_BYTE_SLOTS; i++) + for (i = 0; i < lim; i++) { bytes[depth] = i; XSETFASTINT (j, (depth == 0 && i < CHAR_TABLE_SINGLE_BYTE_SLOTS ? i - : MAKE_NON_ASCII_CHAR (bytes[0]-128, - bytes[1], bytes[2]))); + : MAKE_NON_ASCII_CHAR (bytes[0], bytes[1], bytes[2]))); q = trt->contents[i]; if (NATNUMP (q) && XFASTINT (q) != XFASTINT (j)) { @@ -225,9 +225,9 @@ Faset (ibase, q, j); Faset (ibase, j, tem); } - else if (CHAR_TABLE_P (q)) + else if (SUB_CHAR_TABLE_P (q)) { - bytes[depth] = i; + bytes[depth] = i - 128; compute_trt_shuffle (bytes, depth + 1, ibase, XCHAR_TABLE (trt->contents[i]), XCHAR_TABLE (inverse->contents[i]));