X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/fd67a7000ee9e118b426df6ad779f3c86d4fe320..bbcd0949d9cd085b6838c03f3d89171f967372fa:/src/character.h diff --git a/src/character.h b/src/character.h index 41f47e4b17..d29ab41557 100644 --- a/src/character.h +++ b/src/character.h @@ -1,7 +1,7 @@ /* Header for multibyte character handler. Copyright (C) 1995, 1997, 1998 Electrotechnical Laboratory, JAPAN. Licensed to the Free Software Foundation. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H13PRO009 @@ -221,10 +221,6 @@ along with GNU Emacs. If not, see . */ (ASCII_BYTE_P (byte) || LEADING_CODE_P (byte)) */ #define CHAR_HEAD_P(byte) (((byte) & 0xC0) != 0x80) -/* Kept for backward compatibility. This macro will be removed in the - future. */ -#define BASE_LEADING_CODE_P LEADING_CODE_P - /* How many bytes a character that starts with BYTE occupies in a multibyte form. */ #define BYTES_BY_CHAR_HEAD(byte) \ @@ -235,23 +231,6 @@ along with GNU Emacs. If not, see . */ : 5) -/* Return the length of the multi-byte form at string STR of length - LEN while assuming that STR points a valid multi-byte form. As - this macro isn't necessary anymore, all callers will be changed to - use BYTES_BY_CHAR_HEAD directly in the future. */ - -#define MULTIBYTE_FORM_LENGTH(str, len) \ - BYTES_BY_CHAR_HEAD (*(str)) - -/* Parse multibyte string STR of length LENGTH and set BYTES to the - byte length of a character at STR while assuming that STR points a - valid multibyte form. As this macro isn't necessary anymore, all - callers will be changed to use BYTES_BY_CHAR_HEAD directly in the - future. */ - -#define PARSE_MULTIBYTE_SEQ(str, length, bytes) \ - (bytes) = BYTES_BY_CHAR_HEAD (*(str)) - /* The byte length of multibyte form at unibyte string P ending at PEND. If STR doesn't point to a valid multibyte form, return 0. */ @@ -285,7 +264,7 @@ along with GNU Emacs. If not, see . */ /* If P is before LIMIT, advance P to the next character boundary. Assumes that P is already at a character boundary of the same - mulitbyte form whose end address is LIMIT. */ + multibyte form whose end address is LIMIT. */ #define NEXT_CHAR_BOUNDARY(p, limit) \ do { \ @@ -377,11 +356,11 @@ along with GNU Emacs. If not, see . */ CHARIDX++; \ if (STRING_MULTIBYTE (STRING)) \ { \ - unsigned char *ptr = &SDATA (STRING)[BYTEIDX]; \ - int len; \ + unsigned char *string_ptr = &SDATA (STRING)[BYTEIDX]; \ + int string_len; \ \ - OUTPUT = STRING_CHAR_AND_LENGTH (ptr, len); \ - BYTEIDX += len; \ + OUTPUT = STRING_CHAR_AND_LENGTH (string_ptr, string_len); \ + BYTEIDX += string_len; \ } \ else \ { \ @@ -438,7 +417,7 @@ along with GNU Emacs. If not, see . */ do \ { \ CHARIDX++; \ - if (!NILP (current_buffer->enable_multibyte_characters)) \ + if (!NILP (BVAR (current_buffer, enable_multibyte_characters))) \ { \ unsigned char *ptr = BYTE_POS_ADDR (BYTEIDX); \ int len; \ @@ -505,7 +484,7 @@ along with GNU Emacs. If not, see . */ do \ { \ (charpos)++; \ - if (NILP (current_buffer->enable_multibyte_characters)) \ + if (NILP (BVAR (current_buffer, enable_multibyte_characters))) \ (bytepos)++; \ else \ INC_POS ((bytepos)); \ @@ -519,7 +498,7 @@ along with GNU Emacs. If not, see . */ do \ { \ (charpos)--; \ - if (NILP (current_buffer->enable_multibyte_characters)) \ + if (NILP (BVAR (current_buffer, enable_multibyte_characters))) \ (bytepos)--; \ else \ DEC_POS ((bytepos)); \ @@ -582,11 +561,11 @@ along with GNU Emacs. If not, see . */ #define ASCII_CHAR_WIDTH(c) \ (c < 0x20 \ ? (c == '\t' \ - ? XFASTINT (current_buffer->tab_width) \ - : (c == '\n' ? 0 : (NILP (current_buffer->ctl_arrow) ? 4 : 2))) \ + ? XFASTINT (BVAR (current_buffer, tab_width)) \ + : (c == '\n' ? 0 : (NILP (BVAR (current_buffer, ctl_arrow)) ? 4 : 2))) \ : (c < 0x7f \ ? 1 \ - : ((NILP (current_buffer->ctl_arrow) ? 4 : 2)))) + : ((NILP (BVAR (current_buffer, ctl_arrow)) ? 4 : 2)))) /* Return the width of character C. The width is measured by how many columns C will occupy on the screen when displayed in the current @@ -608,7 +587,7 @@ along with GNU Emacs. If not, see . */ : 0) /* If C is a high surrogate, return 1. If C is a low surrogate, - return 0. Otherwise, return 0. */ + return 0. Otherwise, return 0. */ #define CHAR_SURROGATE_PAIR_P(c) \ ((c) < 0xD800 ? 0 \ @@ -617,62 +596,37 @@ along with GNU Emacs. If not, see . */ : 0) -extern int char_resolve_modifier_mask P_ ((int)); -extern int char_string P_ ((unsigned, unsigned char *)); -extern int string_char P_ ((const unsigned char *, - const unsigned char **, int *)); - -extern int translate_char P_ ((Lisp_Object, int c)); -extern int char_printable_p P_ ((int c)); -extern void parse_str_as_multibyte P_ ((const unsigned char *, int, int *, - int *)); -extern int parse_str_to_multibyte P_ ((unsigned char *, int)); -extern int str_as_multibyte P_ ((unsigned char *, int, int, int *)); -extern int str_to_multibyte P_ ((unsigned char *, int, int)); -extern int str_as_unibyte P_ ((unsigned char *, int)); -extern EMACS_INT str_to_unibyte P_ ((const unsigned char *, unsigned char *, - EMACS_INT, int)); -extern int strwidth P_ ((unsigned char *, int)); -extern int c_string_width P_ ((const unsigned char *, int, int, int *, int *)); -extern int lisp_string_width P_ ((Lisp_Object, int, int *, int *)); - -extern Lisp_Object Vprintable_chars; +extern int char_resolve_modifier_mask (int); +extern int char_string (unsigned, unsigned char *); +extern int string_char (const unsigned char *, + const unsigned char **, int *); + +extern int translate_char (Lisp_Object, int c); +extern int char_printable_p (int c); +extern void parse_str_as_multibyte (const unsigned char *, + EMACS_INT, EMACS_INT *, EMACS_INT *); +extern EMACS_INT parse_str_to_multibyte (const unsigned char *, EMACS_INT); +extern EMACS_INT str_as_multibyte (unsigned char *, EMACS_INT, EMACS_INT, + EMACS_INT *); +extern EMACS_INT str_to_multibyte (unsigned char *, EMACS_INT, EMACS_INT); +extern EMACS_INT str_as_unibyte (unsigned char *, EMACS_INT); +extern EMACS_INT str_to_unibyte (const unsigned char *, unsigned char *, + EMACS_INT, int); +extern EMACS_INT strwidth (const char *, EMACS_INT); +extern EMACS_INT c_string_width (const unsigned char *, EMACS_INT, int, + EMACS_INT *, EMACS_INT *); +extern EMACS_INT lisp_string_width (Lisp_Object, int, + EMACS_INT *, EMACS_INT *); extern Lisp_Object Qcharacterp, Qauto_fill_chars; -extern Lisp_Object Vtranslation_table_vector; -extern Lisp_Object Vchar_width_table; -extern Lisp_Object Vchar_direction_table; extern Lisp_Object Vchar_unify_table; -extern Lisp_Object Vunicode_category_table; - -extern Lisp_Object string_escape_byte8 P_ ((Lisp_Object)); +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)])) -/* A char-table for characters which may invoke auto-filling. */ -extern Lisp_Object Vauto_fill_chars; - -extern Lisp_Object Vchar_script_table; -extern Lisp_Object Vscript_representative_chars; - -/* Copy LEN bytes from FROM to TO. This macro should be used only - when a caller knows that LEN is short and the obvious copy loop is - faster than calling bcopy which has some overhead. Copying a - multibyte sequence of a character is the typical case. */ - -#define BCOPY_SHORT(from, to, len) \ - do { \ - int i = len; \ - unsigned char *from_p = from, *to_p = to; \ - while (i--) *to_p++ = *from_p++; \ - } while (0) - #define DEFSYM(sym, name) \ do { (sym) = intern_c_string ((name)); staticpro (&(sym)); } while (0) #endif /* EMACS_CHARACTER_H */ - -/* arch-tag: 4ef86004-2eff-4073-8cea-cfcbcf7188ac - (do not change this comment) */