Commit 4c0354d7 authored by Stefan Monnier's avatar 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.
parent e5f035d7
2009-10-18 Stefan Monnier <monnier@iro.umontreal.ca>
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 <dann@ics.uci.edu>
......
......@@ -339,7 +339,7 @@ extern unsigned char *_fetch_multibyte_char_p;
#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,
......
......@@ -90,7 +90,7 @@ casify_object (flag, obj)
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);
......
......@@ -86,10 +86,6 @@ Lisp_Object Vscript_representative_chars;
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 @@ DEFUN ("unibyte-char-to-multibyte", Funibyte_char_to_multibyte,
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);
}
......
......@@ -62,6 +62,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* 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 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
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 @@ extern int unibyte_to_multibyte_table[256];
/* 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
......
......@@ -2331,11 +2331,6 @@ init_charset_once ()
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
......
......@@ -503,7 +503,7 @@ internal_self_insert (c, noautofill)
&& 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;
......
......@@ -2698,7 +2698,7 @@ determines whether case is significant or ignored. */)
else
{
c1 = BUF_FETCH_BYTE (bp1, i1);
c1 = unibyte_char_to_multibyte (c1);
MAKE_CHAR_MULTIBYTE (c1);
i1++;
}
......@@ -2711,7 +2711,7 @@ determines whether case is significant or ignored. */)
else
{
c2 = BUF_FETCH_BYTE (bp2, i2);
c2 = unibyte_char_to_multibyte (c2);
MAKE_CHAR_MULTIBYTE (c2);
i2++;
}
......
......@@ -297,7 +297,7 @@ If string STR1 is greater, the value is a positive number N;
else
{
c1 = SREF (str1, i1++);
c1 = unibyte_char_to_multibyte (c1);
MAKE_CHAR_MULTIBYTE (c1);
}
if (STRING_MULTIBYTE (str2))
......@@ -305,7 +305,7 @@ If string STR1 is greater, the value is a positive number N;
else
{
c2 = SREF (str2, i2++);
c2 = unibyte_char_to_multibyte (c2);
MAKE_CHAR_MULTIBYTE (c2);
}
if (c1 == c2)
......@@ -703,10 +703,10 @@ concat (nargs, args, target_type, last_special)
{
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);
}
}
......
......@@ -666,9 +666,9 @@ copy_text (const unsigned char *from_addr, unsigned char *to_addr,
{
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 @@ count_size_as_multibyte (const unsigned char *ptr, EMACS_INT nbytes)
{
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);
}
}
......
......@@ -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)
......
......@@ -2759,7 +2759,7 @@ since only regular expressions have distinguished subexpressions. */)
/* 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 @@ since only regular expressions have distinguished subexpressions. */)
{
c = SREF (newtext, pos_byte++);
if (buf_multibyte)
c = unibyte_char_to_multibyte (c);
MAKE_CHAR_MULTIBYTE (c);
}
if (c == '&')
......
......@@ -1555,14 +1555,14 @@ skip_chars (forwardp, string, lim, handle_iso_classes)
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)
{
......
......@@ -1650,7 +1650,7 @@ produce_glyphs (it)
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)
......
......@@ -5716,7 +5716,7 @@ get_next_display_element (it)
}
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 @@ message_dolog (m, nbytes, nlflag, multibyte)
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 @@ set_message_1 (a1, a2, nbytes, multibyte_p)
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);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment