changeset 89019:0df387138bce

(_fetch_multibyte_char_len): Extern deleted. (FETCH_MULTIBYTE_CHAR): Don't use _fetch_multibyte_char_len. (BUF_FETCH_MULTIBYTE_CHAR): Likewise. (FETCH_CHAR_AS_MULTIBYTE): New macro.
author Kenichi Handa <handa@m17n.org>
date Tue, 20 Aug 2002 03:59:29 +0000
parents a9f683a73092
children b0277093a5f2
files src/buffer.h
diffstat 1 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.h	Tue Aug 20 03:59:11 2002 +0000
+++ b/src/buffer.h	Tue Aug 20 03:59:29 2002 +0000
@@ -319,7 +319,6 @@
 
 /* Variables used locally in FETCH_MULTIBYTE_CHAR.  */
 extern unsigned char *_fetch_multibyte_char_p;
-extern int _fetch_multibyte_char_len;
 
 /* Return character code of multi-byte form at position POS.  If POS
    doesn't point the head of valid multi-byte form, only the byte at
@@ -328,9 +327,17 @@
 #define FETCH_MULTIBYTE_CHAR(pos)				 	\
   (_fetch_multibyte_char_p = (((pos) >= GPT_BYTE ? GAP_SIZE : 0) 	\
 			       + (pos) + BEG_ADDR - 1),		 	\
-   _fetch_multibyte_char_len						\
-      = ((pos) >= GPT_BYTE ? ZV_BYTE : GPT_BYTE) - (pos),		\
-   STRING_CHAR (_fetch_multibyte_char_p, _fetch_multibyte_char_len))
+   STRING_CHAR (_fetch_multibyte_char_p, 0))
+
+/* Return character at position POS.  If the current buffer is unibyte
+   and the character is not ASCII, make the returning character
+   multibyte.  */
+
+#define FETCH_CHAR_AS_MULTIBYTE(pos)			\
+  (!NILP (current_buffer->enable_multibyte_characters)	\
+   ? FETCH_MULTIBYTE_CHAR ((pos))			\
+   : unibyte_char_to_multibyte (FETCH_BYTE ((pos))))
+
 
 /* Macros for accessing a character or byte,
    or converting between byte positions and addresses,
@@ -379,10 +386,7 @@
   (_fetch_multibyte_char_p						\
      = (((pos) >= BUF_GPT_BYTE (buf) ? BUF_GAP_SIZE (buf) : 0)		\
         + (pos) + BUF_BEG_ADDR (buf) - 1),				\
-   _fetch_multibyte_char_len						\
-     = (((pos) >= BUF_GPT_BYTE (buf) ? BUF_ZV_BYTE (buf) : BUF_GPT_BYTE (buf)) \
-        - (pos)),							\
-   STRING_CHAR (_fetch_multibyte_char_p, _fetch_multibyte_char_len))
+   STRING_CHAR (_fetch_multibyte_char_p, 0))
 
 /* Define the actual buffer data structures.  */