used in macros DOWNCASE and UPCASE1.
(set_case_table): Setup canonical table correctly. Use
map_char_table instead of compute_trt_inverse.
(set_canon, set_identity, shuffle): New functions given to
map_char_table.
(compute_trt_identity, compute_trt_shuffle, compute_trt_inverse):
Deleted.
(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.
(compute_trt_inverse): Totally rewritten.
Args are now Lisp_Object. Callers changed.
(compute_trt_identity, compute_trt_shuffle): New subroutines.
(init_casetab_once): Use XSETFASTINT to store into case table;
use CHAR_TABLE_SINGLE_BYTE_SLOTS to end the loop.
(set_case_table): Delete obsolete local variable `down'; use `table'
directly where referenced. Fix assignment to `canon' when nil.
Store eqv in extras[2], not extras[0].
(init_casetab_once): Case-tables have 3 extra slots, not 4.
and the case table is stored in the downcase_table slot only.
(Fcurrent_case_table, Fstandard_case_table, set_case_table)
(compute_trt_inverse, init_casetab_once): Use new data format.
return a Lisp_Object. Add static declaration for this
before Fset_case_table and Fset_standard_case_table.
(Fset_case_table, Fset_standard_case_table): Return the return
value of set_case_table, instead of returning garbage.