X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/1011c48763982d02797a7058556d29f639f6efca..e2b6daf4193bcfd81d6dc67eeee3d50888710818:/src/charset.h diff --git a/src/charset.h b/src/charset.h index 8c76aa0607..857dc657da 100644 --- a/src/charset.h +++ b/src/charset.h @@ -1,8 +1,8 @@ /* Header for charset handler. Copyright (C) 2001, 2002, 2003, 2004, 2005, - 2006, 2007 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007 + 2005, 2006, 2007, 2008, 2009 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H14PRO021 @@ -12,10 +12,10 @@ This file is part of GNU Emacs. -GNU Emacs is free software; you can redistribute it and/or modify +GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -23,9 +23,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ +along with GNU Emacs. If not, see . */ #ifndef EMACS_CHARSET_H #define EMACS_CHARSET_H @@ -68,9 +66,9 @@ enum charset_attr_index /* Property list of the charset. */ charset_plist, - /* If the method of the charset is `MAP_DEFERRED', the value is a - mapping vector or a file name that contains mapping vector. - Otherwise, nil. */ + /* If the method of the charset is `MAP', the value is a mapping + vector or a file name that contains mapping vector. Otherwise, + nil. */ charset_map, /* If the method of the charset is `MAP', the value is a vector @@ -102,9 +100,9 @@ enum charset_attr_index (CHARSET-ID . OFFSET) - CHARSET-IDs are ID numbers of parent charsets. OFFSET is an - integer value to add to a code point of the parent charset to - get the corresponding code point of this charset. */ + CHARSET-IDs are ID numbers of parent charsets. OFFSET is an + integer value to add to a code point of the parent charset to + get the corresponding code point of this charset. */ charset_superset, /* The value is a mapping vector or a file name that contains the @@ -136,11 +134,6 @@ enum charset_method conversion. */ CHARSET_METHOD_MAP, - /* Same as above but decoder and encoder are loaded from a file on - demand. Once loaded, the method is changed to - CHARSET_METHOD_MAP. */ - CHARSET_METHOD_MAP_DEFERRED, - /* A charset of this method is a subset of another charset. */ CHARSET_METHOD_SUBSET, @@ -192,13 +185,13 @@ struct charset version. Otherwise, -1. */ int emacs_mule_id; - /* Nonzero iff the charset is compatible with ASCII. */ + /* Nonzero if the charset is compatible with ASCII. */ int ascii_compatible_p; - /* Nonzero iff the charset is supplementary. */ + /* Nonzero if the charset is supplementary. */ int supplementary_p; - /* Nonzero iff all the code points are representable by Lisp_Int. */ + /* Nonzero if all the code points are representable by Lisp_Int. */ int compact_codes_p; /* The method for encoding/decoding characters of the charset. */ @@ -253,6 +246,7 @@ extern struct charset *charset_table; #define CHARSET_FROM_ID(id) (charset_table + (id)) extern Lisp_Object Vcharset_ordered_list; +extern Lisp_Object Vcharset_non_preferred_head; /* Incremented everytime we change the priority of charsets. */ extern unsigned short charset_ordered_list_tick; @@ -263,6 +257,7 @@ extern Lisp_Object Vemacs_mule_charset_list; extern struct charset *emacs_mule_charset[256]; +extern Lisp_Object Vcurrent_iso639_language; /* Macros to access information about charset. */ @@ -332,14 +327,14 @@ extern struct charset *emacs_mule_charset[256]; (CHARSET_ATTR_DEUNIFIER (CHARSET_ATTRIBUTES (charset))) -/* Nonzero iff OBJ is a valid charset symbol. */ +/* Nonzero if OBJ is a valid charset symbol. */ #define CHARSETP(obj) (CHARSET_SYMBOL_HASH_INDEX (obj) >= 0) /* Check if X is a valid charset symbol. If not, signal an error. */ #define CHECK_CHARSET(x) \ do { \ if (! SYMBOLP (x) || CHARSET_SYMBOL_HASH_INDEX (x) < 0) \ - x = wrong_type_argument (Qcharsetp, (x)); \ + wrong_type_argument (Qcharsetp, (x)); \ } while (0) @@ -350,7 +345,7 @@ extern struct charset *emacs_mule_charset[256]; int idx; \ \ if (! SYMBOLP (x) || (idx = CHARSET_SYMBOL_HASH_INDEX (x)) < 0) \ - x = wrong_type_argument (Qcharsetp, (x)); \ + wrong_type_argument (Qcharsetp, (x)); \ id = XINT (AREF (HASH_VALUE (XHASH_TABLE (Vcharset_hash_table), idx), \ charset_id)); \ } while (0) @@ -361,7 +356,7 @@ extern struct charset *emacs_mule_charset[256]; #define CHECK_CHARSET_GET_ATTR(x, attr) \ do { \ if (!SYMBOLP (x) || NILP (attr = CHARSET_SYMBOL_ATTRIBUTES (x))) \ - x = wrong_type_argument (Qcharsetp, (x)); \ + wrong_type_argument (Qcharsetp, (x)); \ } while (0) @@ -373,7 +368,7 @@ extern struct charset *emacs_mule_charset[256]; } while (0) -/* Lookup Vcharset_order_list and return the first charset that +/* Lookup Vcharset_ordered_list and return the first charset that contains the character C. */ #define CHAR_CHARSET(c) \ ((c) < 0x80 ? CHARSET_FROM_ID (charset_ascii) \ @@ -410,9 +405,10 @@ extern Lisp_Object Vchar_charset_set; ? (code) - (charset)->min_code + (charset)->code_offset \ : decode_char ((charset), (code))) \ : (charset)->method == CHARSET_METHOD_MAP \ - ? ((charset)->code_linear_p \ + ? (((charset)->code_linear_p \ + && VECTORP (CHARSET_DECODER (charset))) \ ? XINT (AREF (CHARSET_DECODER (charset), \ - (code) - (charset)->min_code)) \ + (code) - (charset)->min_code)) \ : decode_char ((charset), (code))) \ : decode_char ((charset), (code))) @@ -445,7 +441,8 @@ extern Lisp_Object charset_work; ? (c) - (charset)->code_offset + (charset)->min_code \ : encode_char ((charset), (c))) \ : (charset)->method == CHARSET_METHOD_MAP \ - ? ((charset)->compact_codes_p \ + ? (((charset)->compact_codes_p \ + && CHAR_TABLE_P (CHARSET_ENCODER (charset))) \ ? (charset_work = CHAR_TABLE_REF (CHARSET_ENCODER (charset), (c)), \ (NILP (charset_work) \ ? (charset)->invalid_code \ @@ -479,7 +476,7 @@ extern int iso_charset_table[ISO_MAX_DIMENSION][ISO_MAX_CHARS][ISO_MAX_FINAL]; #define ISO_CHARSET_TABLE(dimension, chars_96, final) \ iso_charset_table[(dimension) - 1][(chars_96)][(final)] -/* Nonzero iff the charset who has FAST_MAP may contain C. */ +/* Nonzero if the charset who has FAST_MAP may contain C. */ #define CHARSET_FAST_MAP_REF(c, fast_map) \ ((c) < 0x10000 \ ? fast_map[(c) >> 10] & (1 << (((c) >> 7) & 7)) \ @@ -495,7 +492,7 @@ extern int iso_charset_table[ISO_MAX_DIMENSION][ISO_MAX_CHARS][ISO_MAX_FINAL]; -/* 1 iff CHARSET may contain the character C. */ +/* 1 if CHARSET may contain the character C. */ #define CHAR_CHARSET_P(c, charset) \ ((ASCII_CHAR_P (c) && (charset)->ascii_compatible_p) \ || ((CHARSET_UNIFIED_P (charset) \ @@ -506,7 +503,8 @@ extern int iso_charset_table[ISO_MAX_DIMENSION][ISO_MAX_CHARS][ISO_MAX_FINAL]; && ((charset)->method == CHARSET_METHOD_OFFSET \ ? (c) >= (charset)->min_char && (c) <= (charset)->max_char \ : ((charset)->method == CHARSET_METHOD_MAP \ - && (charset)->compact_codes_p) \ + && (charset)->compact_codes_p \ + && CHAR_TABLE_P (CHARSET_ENCODER (charset))) \ ? ! NILP (CHAR_TABLE_REF (CHARSET_ENCODER (charset), (c))) \ : encode_char ((charset), (c)) != (charset)->invalid_code)))) @@ -532,12 +530,14 @@ extern int charset_unicode; extern int charset_jisx0201_roman; extern int charset_jisx0208_1978; extern int charset_jisx0208; +extern int charset_ksc5601; extern int charset_unibyte; extern struct charset *char_charset P_ ((int, Lisp_Object, unsigned *)); extern Lisp_Object charset_attributes P_ ((int)); +extern int maybe_unify_char P_ ((int, Lisp_Object)); extern int decode_char P_ ((struct charset *, unsigned)); extern unsigned encode_char P_ ((struct charset *, int)); extern int string_xstring_p P_ ((Lisp_Object));