# HG changeset patch # User Stefan Monnier # Date 1255835312 0 # Node ID bac26aa40069dbbd5a329964cce01d4612031d8c # Parent c79f335459cf3c0d6565a14f4d924b074f170a19 Remove leftover table unibyte_to_multibyte_table. * character.c (unibyte_to_multibyte_table): Remove. (Funibyte_char_to_multibyte): Use MAKE_CHAR_MULTIBYTE. * charset.c (init_charset_once): Don't init unibyte_to_multibyte_table. * character.h (UNIBYTE_TO_CHAR): New macro. (MAKE_CHAR_MULTIBYTE): Use it. (unibyte_to_multibyte_table, unibyte_char_to_multibyte): Remove. * xdisp.c (get_next_display_element): USE ASCII_CHAR_P. (message_dolog, set_message_1): * search.c (Freplace_match): * editfns.c (Fcompare_buffer_substrings): * fns.c (Fcompare_strings): Use MAKE_CHAR_MULTIBYTE. (concat): * insdel.c (copy_text, count_size_as_multibyte): Use ASCII_CHAR_P and BYTE8_TO_CHAR. * term.c (produce_glyphs): * syntax.c (skip_chars): Use BYTE8_TO_CHAR. * regex.c (RE_CHAR_TO_MULTIBYTE): * cmds.c (internal_self_insert): * buffer.h (FETCH_CHAR_AS_MULTIBYTE): Use UNIBYTE_TO_CHAR. diff -r c79f335459cf -r bac26aa40069 src/ChangeLog --- a/src/ChangeLog Sun Oct 18 02:17:57 2009 +0000 +++ b/src/ChangeLog Sun Oct 18 03:08:32 2009 +0000 @@ -1,5 +1,27 @@ 2009-10-18 Stefan Monnier + Remove leftover table unibyte_to_multibyte_table. + * character.c (unibyte_to_multibyte_table): Remove. + (Funibyte_char_to_multibyte): Use MAKE_CHAR_MULTIBYTE. + * charset.c (init_charset_once): Don't init unibyte_to_multibyte_table. + * character.h (UNIBYTE_TO_CHAR): New macro. + (MAKE_CHAR_MULTIBYTE): Use it. + (unibyte_to_multibyte_table, unibyte_char_to_multibyte): Remove. + * xdisp.c (get_next_display_element): USE ASCII_CHAR_P. + (message_dolog, set_message_1): + * search.c (Freplace_match): + * editfns.c (Fcompare_buffer_substrings): + * fns.c (Fcompare_strings): Use MAKE_CHAR_MULTIBYTE. + (concat): + * insdel.c (copy_text, count_size_as_multibyte): + Use ASCII_CHAR_P and BYTE8_TO_CHAR. + * term.c (produce_glyphs): + * syntax.c (skip_chars): Use BYTE8_TO_CHAR. + * regex.c (RE_CHAR_TO_MULTIBYTE): + * cmds.c (internal_self_insert): + * buffer.h (FETCH_CHAR_AS_MULTIBYTE): Use UNIBYTE_TO_CHAR. + + * cmds.c (internal_self_insert): `c' is already in "multibyte" form. 2009-10-17 Dan Nicolaescu diff -r c79f335459cf -r bac26aa40069 src/buffer.h --- a/src/buffer.h Sun Oct 18 02:17:57 2009 +0000 +++ b/src/buffer.h Sun Oct 18 03:08:32 2009 +0000 @@ -339,7 +339,7 @@ #define FETCH_CHAR_AS_MULTIBYTE(pos) \ (!NILP (current_buffer->enable_multibyte_characters) \ ? FETCH_MULTIBYTE_CHAR ((pos)) \ - : unibyte_to_multibyte_table[(FETCH_BYTE ((pos)))]) + : UNIBYTE_TO_CHAR (FETCH_BYTE ((pos)))) /* Macros for accessing a character or byte, diff -r c79f335459cf -r bac26aa40069 src/casefiddle.c --- a/src/casefiddle.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/casefiddle.c Sun Oct 18 03:08:32 2009 +0000 @@ -90,7 +90,7 @@ for (i = 0; i < size; i++) { c = SREF (obj, i); - MAKE_CHAR_MULTIBYTE (c); + MAKE_CHAR_MULTIBYTE (c); c1 = c; if (inword && flag != CASE_CAPITALIZE_UP) c = DOWNCASE (c); diff -r c79f335459cf -r bac26aa40069 src/character.c --- a/src/character.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/character.c Sun Oct 18 03:08:32 2009 +0000 @@ -86,10 +86,6 @@ static Lisp_Object Qchar_script_table; Lisp_Object Vunicode_category_table; - -/* Mapping table from unibyte chars to multibyte chars. */ -int unibyte_to_multibyte_table[256]; - /* If character code C has modifier masks, reflect them to the @@ -325,8 +321,7 @@ c = XFASTINT (ch); if (c >= 0x100) error ("Not a unibyte character: %d", c); - if (c >= 0x80) - c = BYTE8_TO_CHAR (c); + MAKE_CHAR_MULTIBYTE (c); return make_number (c); } diff -r c79f335459cf -r bac26aa40069 src/character.h --- a/src/character.h Sun Oct 18 02:17:57 2009 +0000 +++ b/src/character.h Sun Oct 18 03:08:32 2009 +0000 @@ -62,6 +62,9 @@ /* Return the character code for raw 8-bit byte BYTE. */ #define BYTE8_TO_CHAR(byte) ((byte) + 0x3FFF00) +#define UNIBYTE_TO_CHAR(byte) \ + (ASCII_BYTE_P (byte) ? (byte) : BYTE8_TO_CHAR (byte)) + /* Return the raw 8-bit byte for character C. */ #define CHAR_TO_BYTE8(c) \ (CHAR_BYTE8_P (c) \ @@ -79,14 +82,6 @@ that corresponds to a raw 8-bit byte. */ #define CHAR_BYTE8_HEAD_P(byte) ((byte) == 0xC0 || (byte) == 0xC1) -/* Mapping table from unibyte chars to multibyte chars. */ -extern int unibyte_to_multibyte_table[256]; - -/* Convert the unibyte character C to the corresponding multibyte - character. If C can't be converted, return C. */ -#define unibyte_char_to_multibyte(c) \ - ((c) < 256 ? unibyte_to_multibyte_table[(c)] : (c)) - /* If C is not ASCII, make it unibyte. */ #define MAKE_CHAR_UNIBYTE(c) \ do { \ @@ -97,7 +92,7 @@ /* If C is not ASCII, make it multibyte. Assumes C < 256. */ #define MAKE_CHAR_MULTIBYTE(c) \ - (eassert ((c) >= 0 && (c) < 256), (c) = unibyte_to_multibyte_table[(c)]) + (eassert ((c) >= 0 && (c) < 256), (c) = UNIBYTE_TO_CHAR (c)) /* This is the maximum byte length of multibyte form. */ #define MAX_MULTIBYTE_LENGTH 5 diff -r c79f335459cf -r bac26aa40069 src/charset.c --- a/src/charset.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/charset.c Sun Oct 18 03:08:32 2009 +0000 @@ -2331,11 +2331,6 @@ charset_jisx0208_1978 = -1; charset_jisx0208 = -1; charset_ksc5601 = -1; - - for (i = 0; i < 128; i++) - unibyte_to_multibyte_table[i] = i; - for (; i < 256; i++) - unibyte_to_multibyte_table[i] = BYTE8_TO_CHAR (i); } #ifdef emacs diff -r c79f335459cf -r bac26aa40069 src/cmds.c --- a/src/cmds.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/cmds.c Sun Oct 18 03:08:32 2009 +0000 @@ -503,7 +503,7 @@ && PT > BEGV && (!NILP (current_buffer->enable_multibyte_characters) ? SYNTAX (XFASTINT (Fprevious_char ())) == Sword - : (SYNTAX (unibyte_char_to_multibyte (XFASTINT (Fprevious_char ()))) + : (SYNTAX (UNIBYTE_TO_CHAR (XFASTINT (Fprevious_char ()))) == Sword))) { int modiff = MODIFF; diff -r c79f335459cf -r bac26aa40069 src/editfns.c --- a/src/editfns.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/editfns.c Sun Oct 18 03:08:32 2009 +0000 @@ -2698,7 +2698,7 @@ else { c1 = BUF_FETCH_BYTE (bp1, i1); - c1 = unibyte_char_to_multibyte (c1); + MAKE_CHAR_MULTIBYTE (c1); i1++; } @@ -2711,7 +2711,7 @@ else { c2 = BUF_FETCH_BYTE (bp2, i2); - c2 = unibyte_char_to_multibyte (c2); + MAKE_CHAR_MULTIBYTE (c2); i2++; } diff -r c79f335459cf -r bac26aa40069 src/fns.c --- a/src/fns.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/fns.c Sun Oct 18 03:08:32 2009 +0000 @@ -297,7 +297,7 @@ else { c1 = SREF (str1, i1++); - c1 = unibyte_char_to_multibyte (c1); + MAKE_CHAR_MULTIBYTE (c1); } if (STRING_MULTIBYTE (str2)) @@ -305,7 +305,7 @@ else { c2 = SREF (str2, i2++); - c2 = unibyte_char_to_multibyte (c2); + MAKE_CHAR_MULTIBYTE (c2); } if (c1 == c2) @@ -703,10 +703,10 @@ { XSETFASTINT (elt, SREF (this, thisindex)); thisindex++; if (some_multibyte - && XINT (elt) >= 0200 + && !ASCII_CHAR_P (XINT (elt)) && XINT (elt) < 0400) { - c = unibyte_char_to_multibyte (XINT (elt)); + c = BYTE8_TO_CHAR (XINT (elt)); XSETINT (elt, c); } } diff -r c79f335459cf -r bac26aa40069 src/insdel.c --- a/src/insdel.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/insdel.c Sun Oct 18 03:08:32 2009 +0000 @@ -666,9 +666,9 @@ { int c = *from_addr++; - if (c >= 0200) + if (!ASCII_CHAR_P (c)) { - c = unibyte_char_to_multibyte (c); + c = BYTE8_TO_CHAR (c); to_addr += CHAR_STRING (c, to_addr); nbytes--; } @@ -694,11 +694,11 @@ { unsigned int c = *ptr++; - if (c < 0200) + if (ASCII_CHAR_P (c)) outgoing_nbytes++; else { - c = unibyte_char_to_multibyte (c); + c = BYTE8_TO_CHAR (c); outgoing_nbytes += CHAR_BYTES (c); } } diff -r c79f335459cf -r bac26aa40069 src/regex.c --- a/src/regex.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/regex.c Sun Oct 18 03:08:32 2009 +0000 @@ -151,7 +151,7 @@ # define RE_STRING_CHAR_AND_LENGTH(p, s, len, multibyte) \ (multibyte ? (STRING_CHAR_AND_LENGTH (p, s, len)) : ((len) = 1, *(p))) -# define RE_CHAR_TO_MULTIBYTE(c) unibyte_to_multibyte_table[(c)] +# define RE_CHAR_TO_MULTIBYTE(c) UNIBYTE_TO_CHAR (c) # define RE_CHAR_TO_UNIBYTE(c) CHAR_TO_BYTE_SAFE (c) diff -r c79f335459cf -r bac26aa40069 src/search.c --- a/src/search.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/search.c Sun Oct 18 03:08:32 2009 +0000 @@ -2759,7 +2759,7 @@ /* Note that we don't have to increment POS. */ c = SREF (newtext, pos_byte++); if (buf_multibyte) - c = unibyte_char_to_multibyte (c); + MAKE_CHAR_MULTIBYTE (c); } /* Either set ADD_STUFF and ADD_LEN to the text to put in SUBSTED, @@ -2781,7 +2781,7 @@ { c = SREF (newtext, pos_byte++); if (buf_multibyte) - c = unibyte_char_to_multibyte (c); + MAKE_CHAR_MULTIBYTE (c); } if (c == '&') diff -r c79f335459cf -r bac26aa40069 src/syntax.c --- a/src/syntax.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/syntax.c Sun Oct 18 03:08:32 2009 +0000 @@ -1555,14 +1555,14 @@ bzero (fastmap + 0200, 0200); /* We are sure that this loop stops. */ for (i = 0200; ! fastmap2[i]; i++); - c = unibyte_char_to_multibyte (i); + c = BYTE8_TO_CHAR (i); fastmap[CHAR_LEADING_CODE (c)] = 1; range_start_byte = i; range_start_char = c; char_ranges = (int *) alloca (sizeof (int) * 128 * 2); for (i = 129; i < 0400; i++) { - c = unibyte_char_to_multibyte (i); + c = BYTE8_TO_CHAR (i); fastmap[CHAR_LEADING_CODE (c)] = 1; if (i - range_start_byte != c - range_start_char) { diff -r c79f335459cf -r bac26aa40069 src/term.c --- a/src/term.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/term.c Sun Oct 18 03:08:32 2009 +0000 @@ -1650,7 +1650,7 @@ if (unibyte_display_via_language_environment && (it->c >= 0240)) { - it->char_to_display = unibyte_char_to_multibyte (it->c); + it->char_to_display = BYTE8_TO_CHAR (it->c); it->pixel_width = CHAR_WIDTH (it->char_to_display); it->nglyphs = it->pixel_width; if (it->glyph_row) diff -r c79f335459cf -r bac26aa40069 src/xdisp.c --- a/src/xdisp.c Sun Oct 18 02:17:57 2009 +0000 +++ b/src/xdisp.c Sun Oct 18 03:08:32 2009 +0000 @@ -5716,7 +5716,7 @@ } if (unibyte_display_via_language_environment - && it->c >= 0x80) + && !ASCII_CHAR_P (it->c)) decoded = DECODE_CHAR (unibyte, it->c); if (it->c >= 0x80 && ! NILP (Vnobreak_char_display)) @@ -7773,7 +7773,7 @@ for (i = 0; i < nbytes; i++) { c = msg[i]; - c = unibyte_char_to_multibyte (c); + MAKE_CHAR_MULTIBYTE (c); char_bytes = CHAR_STRING (c, str); insert_1_both (str, 1, char_bytes, 1, 0, 0); } @@ -9079,7 +9079,7 @@ for (i = 0; i < nbytes; i++) { c = msg[i]; - c = unibyte_char_to_multibyte (c); + MAKE_CHAR_MULTIBYTE (c); n = CHAR_STRING (c, str); insert_1_both (str, 1, n, 1, 0, 0); }