diff src/mule-charset.c @ 213:78f53ef88e17 r20-4b5

Import from CVS: tag r20-4b5
author cvs
date Mon, 13 Aug 2007 10:06:47 +0200
parents 3d6bfa290dbd
children f955c73f5258
line wrap: on
line diff
--- a/src/mule-charset.c	Mon Aug 13 10:05:53 2007 +0200
+++ b/src/mule-charset.c	Mon Aug 13 10:06:47 2007 +0200
@@ -436,7 +436,7 @@
 /* Make a new charset. */
 
 static Lisp_Object
-make_charset (Lisp_Object name, Bufbyte leading_byte, unsigned char rep_bytes,
+make_charset (int id, Lisp_Object name, Bufbyte leading_byte, unsigned char rep_bytes,
 	      unsigned char type, unsigned char columns, unsigned char graphic,
 	      Bufbyte final, unsigned char direction, Lisp_Object doc,
 	      Lisp_Object reg)
@@ -447,6 +447,7 @@
   cs = alloc_lcrecord_type (struct Lisp_Charset, lrecord_charset);
   XSETCHARSET (obj, cs);
 
+  CHARSET_ID		(cs) = id;
   CHARSET_NAME		(cs) = name;
   CHARSET_LEADING_BYTE	(cs) = leading_byte;
   CHARSET_REP_BYTES	(cs) = rep_bytes;
@@ -760,7 +761,7 @@
 
   if (columns == -1)
     columns = dimension;
-  charset = make_charset (name, lb, dimension + 2, type, columns, graphic,
+  charset = make_charset (-1, name, lb, dimension + 2, type, columns, graphic,
 			  final, direction, doc_string, registry);
   if (!NILP (ccl_program))
     XCHARSET_CCL_PROGRAM (charset) = ccl_program;
@@ -804,7 +805,7 @@
   doc_string = CHARSET_DOC_STRING (cs);
   registry = CHARSET_REGISTRY (cs);
 
-  new_charset = make_charset (new_name, lb, dimension + 2, type, columns,
+  new_charset = make_charset (-1, new_name, lb, dimension + 2, type, columns,
 			      graphic, final, direction, doc_string, registry);
 
   CHARSET_REVERSE_DIRECTION_CHARSET (cs) = new_charset;
@@ -938,6 +939,14 @@
   return Qnil; /* not reached */
 }
 
+DEFUN ("charset-id", Fcharset_id, 1, 1, 0, /*
+Return charset identification number of CHARSET.
+*/
+	(charset))
+{
+  return make_int(XCHARSET_ID (Fget_charset (charset)));
+}
+
 /* #### We need to figure out which properties we really want to
    allow to be set. */
 
@@ -1149,6 +1158,7 @@
   DEFSUBR (Fcharset_doc_string);
   DEFSUBR (Fcharset_dimension);
   DEFSUBR (Fcharset_property);
+  DEFSUBR (Fcharset_id);
   DEFSUBR (Fset_charset_ccl_program);
   DEFSUBR (Fset_charset_registry);
 
@@ -1231,73 +1241,73 @@
      ease of access. */
 
   Vcharset_ascii =
-    make_charset (Qascii, LEADING_BYTE_ASCII, 1,
+    make_charset (0, Qascii, LEADING_BYTE_ASCII, 1,
 		  CHARSET_TYPE_94, 1, 0, 'B',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ASCII (ISO 646 IRV)"),
 		  build_string ("iso8859-1"));
   Vcharset_control_1 =
-    make_charset (Qcontrol_1, LEADING_BYTE_CONTROL_1, 2,
+    make_charset (-1, Qcontrol_1, LEADING_BYTE_CONTROL_1, 2,
 		  CHARSET_TYPE_94, 1, 0, 0,
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("Control characters"),
 		  build_string (""));
   Vcharset_latin_iso8859_1 =
-    make_charset (Qlatin_iso8859_1, LEADING_BYTE_LATIN_ISO8859_1, 2,
+    make_charset (129, Qlatin_iso8859_1, LEADING_BYTE_LATIN_ISO8859_1, 2,
 		  CHARSET_TYPE_96, 1, 1, 'A',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-1 (Latin-1)"),
 		  build_string ("iso8859-1"));
   Vcharset_latin_iso8859_2 =
-    make_charset (Qlatin_iso8859_2, LEADING_BYTE_LATIN_ISO8859_2, 2,
+    make_charset (130, Qlatin_iso8859_2, LEADING_BYTE_LATIN_ISO8859_2, 2,
 		  CHARSET_TYPE_96, 1, 1, 'B',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-2 (Latin-2)"),
 		  build_string ("iso8859-2"));
   Vcharset_latin_iso8859_3 =
-    make_charset (Qlatin_iso8859_3, LEADING_BYTE_LATIN_ISO8859_3, 2,
+    make_charset (131, Qlatin_iso8859_3, LEADING_BYTE_LATIN_ISO8859_3, 2,
 		  CHARSET_TYPE_96, 1, 1, 'C',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-3 (Latin-3)"),
 		  build_string ("iso8859-3"));
   Vcharset_latin_iso8859_4 =
-    make_charset (Qlatin_iso8859_4, LEADING_BYTE_LATIN_ISO8859_4, 2,
+    make_charset (132, Qlatin_iso8859_4, LEADING_BYTE_LATIN_ISO8859_4, 2,
 		  CHARSET_TYPE_96, 1, 1, 'D',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-4 (Latin-4)"),
 		  build_string ("iso8859-4"));
   Vcharset_cyrillic_iso8859_5 =
-    make_charset (Qcyrillic_iso8859_5, LEADING_BYTE_CYRILLIC_ISO8859_5, 2,
+    make_charset (140, Qcyrillic_iso8859_5, LEADING_BYTE_CYRILLIC_ISO8859_5, 2,
 		  CHARSET_TYPE_96, 1, 1, 'L',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-5 (Cyrillic)"),
 		  build_string ("iso8859-5"));
   Vcharset_arabic_iso8859_6 =
-    make_charset (Qarabic_iso8859_6, LEADING_BYTE_ARABIC_ISO8859_6, 2,
+    make_charset (135, Qarabic_iso8859_6, LEADING_BYTE_ARABIC_ISO8859_6, 2,
 		  CHARSET_TYPE_96, 1, 1, 'G',
 		  CHARSET_RIGHT_TO_LEFT,
 		  build_string ("ISO 8859-6 (Arabic)"),
 		  build_string ("iso8859-6"));
   Vcharset_greek_iso8859_7 =
-    make_charset (Qgreek_iso8859_7, LEADING_BYTE_GREEK_ISO8859_7, 2,
+    make_charset (134, Qgreek_iso8859_7, LEADING_BYTE_GREEK_ISO8859_7, 2,
 		  CHARSET_TYPE_96, 1, 1, 'F',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-7 (Greek)"),
 		  build_string ("iso8859-7"));
   Vcharset_hebrew_iso8859_8 =
-    make_charset (Qhebrew_iso8859_8, LEADING_BYTE_HEBREW_ISO8859_8, 2,
+    make_charset (136, Qhebrew_iso8859_8, LEADING_BYTE_HEBREW_ISO8859_8, 2,
 		  CHARSET_TYPE_96, 1, 1, 'H',
 		  CHARSET_RIGHT_TO_LEFT,
 		  build_string ("ISO 8859-8 (Hebrew)"),
 		  build_string ("iso8859-8"));
   Vcharset_latin_iso8859_9 =
-    make_charset (Qlatin_iso8859_9, LEADING_BYTE_LATIN_ISO8859_9, 2,
+    make_charset (141, Qlatin_iso8859_9, LEADING_BYTE_LATIN_ISO8859_9, 2,
 		  CHARSET_TYPE_96, 1, 1, 'M',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("ISO 8859-9 (Latin-5)"),
 		  build_string ("iso8859-9"));
   Vcharset_thai_tis620 =
-    make_charset (Qthai_tis620, LEADING_BYTE_THAI_TIS620, 2,
+    make_charset (133, Qthai_tis620, LEADING_BYTE_THAI_TIS620, 2,
 		  CHARSET_TYPE_96, 1, 1, 'T',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("TIS 620.2529 (Thai)"),
@@ -1305,21 +1315,21 @@
 
   /* Japanese */
   Vcharset_katakana_jisx0201 =
-    make_charset (Qkatakana_jisx0201,
+    make_charset (137, Qkatakana_jisx0201,
 		  LEADING_BYTE_KATAKANA_JISX0201, 2,
 		  CHARSET_TYPE_94, 1, 1, 'I',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("JIS X0201-Katakana"),
 		  build_string ("jisx0201.1976"));
   Vcharset_latin_jisx0201 =
-    make_charset (Qlatin_jisx0201,
+    make_charset (138, Qlatin_jisx0201,
 		  LEADING_BYTE_LATIN_JISX0201, 2,
 		  CHARSET_TYPE_94, 1, 0, 'J',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("JIS X0201-Latin"),
 		  build_string ("jisx0201.1976"));
   Vcharset_japanese_jisx0208_1978 =
-    make_charset (Qjapanese_jisx0208_1978,
+    make_charset (144, Qjapanese_jisx0208_1978,
 		  LEADING_BYTE_JAPANESE_JISX0208_1978, 3,
 		  CHARSET_TYPE_94X94, 2, 0, '@',
 		  CHARSET_LEFT_TO_RIGHT,
@@ -1327,14 +1337,14 @@
 		  ("JIS X0208-1978 (Japanese Kanji; Old Version)"),
 		  build_string ("\\(jisx0208\\|jisc6226\\).19"));
   Vcharset_japanese_jisx0208 =
-    make_charset (Qjapanese_jisx0208,
+    make_charset (146, Qjapanese_jisx0208,
 		  LEADING_BYTE_JAPANESE_JISX0208, 3,
 		  CHARSET_TYPE_94X94, 2, 0, 'B',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("JIS X0208-1983 (Japanese Kanji)"),
 		  build_string ("jisx0208.19\\(83\\|90\\)"));
   Vcharset_japanese_jisx0212 =
-    make_charset (Qjapanese_jisx0212,
+    make_charset (148, Qjapanese_jisx0212,
 		  LEADING_BYTE_JAPANESE_JISX0212, 3,
 		  CHARSET_TYPE_94X94, 2, 0, 'D',
 		  CHARSET_LEFT_TO_RIGHT,
@@ -1343,14 +1353,14 @@
 
   /* Chinese */
   Vcharset_chinese_gb2312 =
-    make_charset (Qchinese_gb2312, LEADING_BYTE_CHINESE_GB2312, 3,
+    make_charset (145, Qchinese_gb2312, LEADING_BYTE_CHINESE_GB2312, 3,
 		  CHARSET_TYPE_94X94, 2, 0, 'A',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("GB 2312 (Simplified Chinese)"),
 		  build_string ("gb2312"));
 #define CHINESE_CNS_PLANE_RE(n) "cns11643[.-]\\(.*[.-]\\)?" n "$"
   Vcharset_chinese_cns11643_1 =
-    make_charset (Qchinese_cns11643_1,
+    make_charset (149, Qchinese_cns11643_1,
 		  LEADING_BYTE_CHINESE_CNS11643_1, 3,
 		  CHARSET_TYPE_94X94, 2, 0, 'G',
 		  CHARSET_LEFT_TO_RIGHT,
@@ -1358,7 +1368,7 @@
 		  ("CNS 11643 Plane 1 (Traditional Chinese for daily use)"),
 		  build_string (CHINESE_CNS_PLANE_RE("1")));
   Vcharset_chinese_cns11643_2 =
-    make_charset (Qchinese_cns11643_2,
+    make_charset (150, Qchinese_cns11643_2,
 		  LEADING_BYTE_CHINESE_CNS11643_2, 3,
 		  CHARSET_TYPE_94X94, 2, 0, 'H',
 		  CHARSET_LEFT_TO_RIGHT,
@@ -1366,14 +1376,14 @@
 		  ("CNS 11643 Plane 2 (Traditional Chinese for daily use)"),
 		  build_string (CHINESE_CNS_PLANE_RE("2")));
   Vcharset_chinese_big5_1 =
-    make_charset (Qchinese_big5_1, LEADING_BYTE_CHINESE_BIG5_1, 3,
+    make_charset (152, Qchinese_big5_1, LEADING_BYTE_CHINESE_BIG5_1, 3,
 		  CHARSET_TYPE_94X94, 2, 0, '0',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string
 		  ("Big5 Level 1 (Traditional Chinese for daily use)"),
 		  build_string ("big5"));
   Vcharset_chinese_big5_2 =
-    make_charset (Qchinese_big5_2, LEADING_BYTE_CHINESE_BIG5_2, 3,
+    make_charset (153, Qchinese_big5_2, LEADING_BYTE_CHINESE_BIG5_2, 3,
 		  CHARSET_TYPE_94X94, 2, 0, '1',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string
@@ -1381,7 +1391,7 @@
 		  build_string ("big5"));
 
   Vcharset_korean_ksc5601 =
-    make_charset (Qkorean_ksc5601, LEADING_BYTE_KOREAN_KSC5601, 3,
+    make_charset (147, Qkorean_ksc5601, LEADING_BYTE_KOREAN_KSC5601, 3,
 		  CHARSET_TYPE_94X94, 2, 0, 'C',
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("KS C5601 (Hangul and Korean Hanja)"),
@@ -1390,7 +1400,7 @@
      This is going to lead to problems because you can run out of
      room, esp. as we don't yet recycle numbers. */
   Vcharset_composite =
-    make_charset (Qcomposite, LEADING_BYTE_COMPOSITE, 3,
+    make_charset (-1, Qcomposite, LEADING_BYTE_COMPOSITE, 3,
 		  CHARSET_TYPE_96X96, 2, 0, 0,
 		  CHARSET_LEFT_TO_RIGHT,
 		  build_string ("Composite characters"),