X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/bd358779861f265a7acff31ead40172735af693e..41120e0f595b16387eebfbf731fff70481de1b4b:/src/character.h diff --git a/src/character.h b/src/character.h index b2cdcb7669..18aad5b8f4 100644 --- a/src/character.h +++ b/src/character.h @@ -26,9 +26,6 @@ along with GNU Emacs. If not, see . */ #include INLINE_HEADER_BEGIN -#ifndef CHARACTER_INLINE -# define CHARACTER_INLINE INLINE -#endif /* character code 1st byte byte sequence -------------- -------- ------------- @@ -70,20 +67,15 @@ INLINE_HEADER_BEGIN #define BYTE8_TO_CHAR(byte) ((byte) + 0x3FFF00) #define UNIBYTE_TO_CHAR(byte) \ - (ASCII_BYTE_P (byte) ? (byte) : BYTE8_TO_CHAR (byte)) + (ASCII_CHAR_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) \ - ? (c) - 0x3FFF00 \ - : multibyte_char_to_unibyte (c)) +#define CHAR_TO_BYTE8(c) (CHAR_BYTE8_P (c) ? (c) - 0x3FFF00 : (c & 0xFF)) /* Return the raw 8-bit byte for character C, or -1 if C doesn't correspond to a byte. */ -#define CHAR_TO_BYTE_SAFE(c) \ - (CHAR_BYTE8_P (c) \ - ? (c) - 0x3FFF00 \ - : multibyte_char_to_unibyte_safe (c)) +#define CHAR_TO_BYTE_SAFE(c) \ + (ASCII_CHAR_P (c) ? c : (CHAR_BYTE8_P (c) ? (c) - 0x3FFF00 : -1)) /* Nonzero iff BYTE is the 1st byte of a multibyte form of a character that corresponds to a raw 8-bit byte. */ @@ -94,7 +86,7 @@ INLINE_HEADER_BEGIN do { \ if (! ASCII_CHAR_P (c)) \ c = CHAR_TO_BYTE8 (c); \ - } while (0) + } while (false) /* If C is not ASCII, make it multibyte. Assumes C < 256. */ @@ -104,13 +96,6 @@ INLINE_HEADER_BEGIN /* This is the maximum byte length of multibyte form. */ #define MAX_MULTIBYTE_LENGTH 5 -/* Return a Lisp character whose character code is C. Assumes C is - a valid character code. */ -#define make_char(c) make_number (c) - -/* Nonzero iff C is an ASCII byte. */ -#define ASCII_BYTE_P(c) UNSIGNED_CMP (c, <, 0x80) - /* Nonzero iff X is a character. */ #define CHARACTERP(x) (NATNUMP (x) && XFASTINT (x) <= MAX_CHAR) @@ -126,14 +111,14 @@ INLINE_HEADER_BEGIN Lisp_Object tmp = XCAR (x); \ CHECK_CHARACTER (tmp); \ XSETCAR ((x), tmp); \ - } while (0) + } while (false) #define CHECK_CHARACTER_CDR(x) \ do { \ Lisp_Object tmp = XCDR (x); \ CHECK_CHARACTER (tmp); \ XSETCDR ((x), tmp); \ - } while (0) + } while (false) /* Nonzero iff C is a character of code less than 0x100. */ #define SINGLE_BYTE_CHAR_P(c) UNSIGNED_CMP (c, <, 0x100) @@ -212,7 +197,7 @@ INLINE_HEADER_BEGIN verify (sizeof (c) <= sizeof (unsigned)); \ (p) += char_string (c, p); \ } \ - } while (0) + } while (false) /* Nonzero iff BYTE starts a non-ASCII character in a multibyte @@ -225,7 +210,7 @@ INLINE_HEADER_BEGIN /* Nonzero iff BYTE starts a character in a multibyte form. This is equivalent to: - (ASCII_BYTE_P (byte) || LEADING_CODE_P (byte)) */ + (ASCII_CHAR_P (byte) || LEADING_CODE_P (byte)) */ #define CHAR_HEAD_P(byte) (((byte) & 0xC0) != 0x80) /* How many bytes a character that starts with BYTE occupies in a @@ -277,7 +262,7 @@ INLINE_HEADER_BEGIN do { \ if ((p) < (limit)) \ (p) += BYTES_BY_CHAR_HEAD (*(p)); \ - } while (0) + } while (false) /* If P is after LIMIT, advance P to the previous character boundary. @@ -294,7 +279,7 @@ INLINE_HEADER_BEGIN } while (chp >= limit && ! CHAR_HEAD_P (*chp)); \ (p) = (BYTES_BY_CHAR_HEAD (*chp) == (p) - chp) ? chp : (p) - 1; \ } \ - } while (0) + } while (false) /* Return the character code of character whose multibyte form is at P. Note that this macro unifies CJK characters whose codepoints @@ -385,7 +370,7 @@ INLINE_HEADER_BEGIN BYTEIDX++; \ } \ } \ - while (0) + while (false) /* Like FETCH_STRING_CHAR_ADVANCE, but return a multibyte character even if STRING is unibyte. */ @@ -409,7 +394,7 @@ INLINE_HEADER_BEGIN MAKE_CHAR_MULTIBYTE (OUTPUT); \ } \ } \ - while (0) + while (false) /* Like FETCH_STRING_CHAR_ADVANCE, but assumes STRING is multibyte. */ @@ -424,7 +409,7 @@ INLINE_HEADER_BEGIN BYTEIDX += fetch_len; \ CHARIDX++; \ } \ - while (0) + while (false) /* Like FETCH_STRING_CHAR_ADVANCE, but fetch character from the current @@ -448,7 +433,7 @@ INLINE_HEADER_BEGIN BYTEIDX++; \ } \ } \ - while (0) + while (false) /* Like FETCH_CHAR_ADVANCE, but assumes the current buffer is multibyte. */ @@ -463,7 +448,7 @@ INLINE_HEADER_BEGIN BYTEIDX += chlen; \ CHARIDX++; \ } \ - while (0) + while (false) /* Increment the buffer byte position POS_BYTE of the current buffer to @@ -473,7 +458,7 @@ INLINE_HEADER_BEGIN do { \ unsigned char *chp = BYTE_POS_ADDR (pos_byte); \ pos_byte += BYTES_BY_CHAR_HEAD (*chp); \ - } while (0) + } while (false) /* Decrement the buffer byte position POS_BYTE of the current buffer to @@ -493,7 +478,7 @@ INLINE_HEADER_BEGIN chp--; \ pos_byte--; \ } \ - } while (0) + } while (false) /* Increment both CHARPOS and BYTEPOS, each in the appropriate way. */ @@ -506,7 +491,7 @@ INLINE_HEADER_BEGIN else \ INC_POS ((bytepos)); \ } \ - while (0) + while (false) /* Decrement both CHARPOS and BYTEPOS, each in the appropriate way. */ @@ -520,7 +505,7 @@ INLINE_HEADER_BEGIN else \ DEC_POS ((bytepos)); \ } \ - while (0) + while (false) /* Increment the buffer byte position POS_BYTE of the current buffer to @@ -532,7 +517,7 @@ INLINE_HEADER_BEGIN do { \ unsigned char *chp = BUF_BYTE_ADDRESS (buf, pos_byte); \ pos_byte += BYTES_BY_CHAR_HEAD (*chp); \ - } while (0) + } while (false) /* Decrement the buffer byte position POS_BYTE of the current buffer to @@ -551,14 +536,14 @@ INLINE_HEADER_BEGIN chp--; \ pos_byte--; \ } \ - } while (0) + } while (false) /* Return a non-outlandish value for the tab width. */ #define SANE_TAB_WIDTH(buf) \ sanitize_tab_width (XFASTINT (BVAR (buf, tab_width))) -CHARACTER_INLINE int +INLINE int sanitize_tab_width (EMACS_INT width) { return 0 < width && width <= 1000 ? width : 8; @@ -579,7 +564,7 @@ sanitize_tab_width (EMACS_INT width) /* Return a non-outlandish value for a character width. */ -CHARACTER_INLINE int +INLINE int sanitize_char_width (EMACS_INT width) { return 0 <= width && width <= 1000 ? width : 1000; @@ -605,7 +590,7 @@ sanitize_char_width (EMACS_INT width) : 0) /* If C is a high surrogate, return 1. If C is a low surrogate, - return 0. Otherwise, return 0. */ + return 2. Otherwise, return 0. */ #define CHAR_SURROGATE_PAIR_P(c) \ ((c) < 0xD800 ? 0 \ @@ -616,7 +601,7 @@ sanitize_char_width (EMACS_INT width) /* Data type for Unicode general category. The order of members must be in sync with the 8th element of the - member of unidata-prop-alist (in admin/unidata/unidata-getn.el) for + member of unidata-prop-alist (in admin/unidata/unidata-gen.el) for Unicode character property `general-category'. */ typedef enum { @@ -680,7 +665,7 @@ extern Lisp_Object string_escape_byte8 (Lisp_Object); /* Return a translation table of id number ID. */ #define GET_TRANSLATION_TABLE(id) \ - (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)])) + (XCDR (XVECTOR (Vtranslation_table_vector)->contents[(id)])) INLINE_HEADER_END