comparison src/coding.c @ 89429:3c978149859b

(Fdefine_coding_system_internal): Fix for the case that coding_type is Qcharset.
author Kenichi Handa <handa@m17n.org>
date Tue, 20 May 2003 13:05:14 +0000
parents c3e67ce6ee0f
children 7349f4473e7f
comparison
equal deleted inserted replaced
89428:eed327e0bad3 89429:3c978149859b
7833 CHECK_LIST (val); 7833 CHECK_LIST (val);
7834 CODING_ATTR_PLIST (attrs) = val; 7834 CODING_ATTR_PLIST (attrs) = val;
7835 7835
7836 if (EQ (coding_type, Qcharset)) 7836 if (EQ (coding_type, Qcharset))
7837 { 7837 {
7838 Lisp_Object list;
7838 /* Generate a lisp vector of 256 elements. Each element is nil, 7839 /* Generate a lisp vector of 256 elements. Each element is nil,
7839 integer, or a list of charset IDs. 7840 integer, or a list of charset IDs.
7840 7841
7841 If Nth element is nil, the byte code N is invalid in this 7842 If Nth element is nil, the byte code N is invalid in this
7842 coding system. 7843 coding system.
7846 7847
7847 If Nth element is a list of charset IDs, N is the first byte 7848 If Nth element is a list of charset IDs, N is the first byte
7848 of one of them. The list is sorted by dimensions of the 7849 of one of them. The list is sorted by dimensions of the
7849 charsets. A charset of smaller dimension comes firtst. 7850 charsets. A charset of smaller dimension comes firtst.
7850 */ 7851 */
7852 for (list = Qnil, tail = charset_list; CONSP (tail); tail = XCDR (tail))
7853 {
7854 struct charset *charset = CHARSET_FROM_ID (XFASTINT (XCAR (tail)));
7855
7856 if (charset->method == CHARSET_METHOD_SUPERSET)
7857 {
7858 val = CHARSET_SUPERSET (charset);
7859 for (; CONSP (val); val = XCDR (val))
7860 list = Fcons (XCAR (XCAR (val)), list);
7861 }
7862 else
7863 list = Fcons (XCAR (tail), list);
7864 }
7865
7851 val = Fmake_vector (make_number (256), Qnil); 7866 val = Fmake_vector (make_number (256), Qnil);
7852 7867
7853 for (tail = charset_list; CONSP (tail); tail = XCDR (tail)) 7868 for (tail = Fnreverse (list); CONSP (tail); tail = XCDR (tail))
7854 { 7869 {
7855 struct charset *charset = CHARSET_FROM_ID (XFASTINT (XCAR (tail))); 7870 struct charset *charset = CHARSET_FROM_ID (XFASTINT (XCAR (tail)));
7856 int dim = CHARSET_DIMENSION (charset); 7871 int dim = CHARSET_DIMENSION (charset);
7857 int idx = (dim - 1) * 4; 7872 int idx = (dim - 1) * 4;
7858 7873