# HG changeset patch # User Kenichi Handa # Date 1031026031 0 # Node ID 8a6da305ac40cd2d4161f32e1167cc9046e2a712 # Parent 06a2cbbeaee946f11678d27754779eae9cc61470 (unibyte_to_multibyte_table): New variable. (unibyte_char_to_multibyte): Move to character.h and defined as macro. (multibyte_char_to_unibyte): If C is an eight-bit character, convert it to the corresponding byte value. diff -r 06a2cbbeaee9 -r 8a6da305ac40 src/character.c --- a/src/character.c Tue Sep 03 04:06:54 2002 +0000 +++ b/src/character.c Tue Sep 03 04:07:11 2002 +0000 @@ -81,6 +81,8 @@ static Lisp_Object Qchar_script_table; +/* Mapping table from unibyte chars to multibyte chars. */ +int unibyte_to_multibyte_table[256]; @@ -179,21 +181,6 @@ return XINT (ch); } -/* Convert the unibyte character C to the corresponding multibyte - character based on the current value of charset_unibyte. If C - can't be converted, return C. */ - -int -unibyte_char_to_multibyte (c) - int c; -{ - struct charset *charset = CHARSET_FROM_ID (charset_unibyte); - int c1 = DECODE_CHAR (charset, c); - - return ((c1 >= 0) ? c1 : c); -} - - /* Convert the multibyte character C to unibyte 8-bit character based on the current value of charset_unibyte. If dimension of charset_unibyte is more than one, return (C & 0xFF). @@ -206,9 +193,13 @@ int c; Lisp_Object rev_tbl; { - struct charset *charset = CHARSET_FROM_ID (charset_unibyte); - unsigned c1 = ENCODE_CHAR (charset, c); + struct charset *charset; + unsigned c1; + if (CHAR_BYTE8_P (c)) + return CHAR_TO_BYTE8 (c); + charset = CHARSET_FROM_ID (charset_unibyte); + c1 = ENCODE_CHAR (charset, c); return ((c1 != CHARSET_INVALID_CODE (charset)) ? c1 : c & 0xFF); }