/[emacs]/emacs/src/charset.c
ViewVC logotype

Diff of /emacs/src/charset.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.125.2.26 by fx, Tue Jul 30 11:33:15 2002 UTC revision 1.125.2.27 by handa, Wed Jul 31 07:07:59 2002 UTC
# Line 69  Lisp_Object Qcharsetp; Line 69  Lisp_Object Qcharsetp;
69    
70  /* Special charset symbols.  */  /* Special charset symbols.  */
71  Lisp_Object Qascii;  Lisp_Object Qascii;
72  Lisp_Object Qeight_bit_control;  Lisp_Object Qeight_bit;
 Lisp_Object Qeight_bit_graphic;  
73  Lisp_Object Qiso_8859_1;  Lisp_Object Qiso_8859_1;
74  Lisp_Object Qunicode;  Lisp_Object Qunicode;
75    
76  /* The corresponding charsets.  */  /* The corresponding charsets.  */
77  int charset_ascii;  int charset_ascii;
78  int charset_8_bit_control;  int charset_eight_bit;
 int charset_8_bit_graphic;  
79  int charset_iso_8859_1;  int charset_iso_8859_1;
80  int charset_unicode;  int charset_unicode;
81    
# Line 1016  usage: (define-charset-internal ...)  */ Line 1014  usage: (define-charset-internal ...)  */
1014                                       hash_code);                                       hash_code);
1015        if (charset_table_used == charset_table_size)        if (charset_table_used == charset_table_size)
1016          {          {
1017            charset_table_size += 256;            struct charset *new_table
1018            charset_table              = (struct charset *) xmalloc (sizeof (struct charset)
1019              = ((struct charset *)                                            * (charset_table_size + 16));
1020                 xrealloc (charset_table,            bcopy (charset_table, new_table,
1021                           sizeof (struct charset) * charset_table_size));                   sizeof (struct charset) * charset_table_size);
1022              charset_table_size += 16;
1023              charset_table = new_table;
1024          }          }
1025        id = charset_table_used++;        id = charset_table_used++;
1026        new_definition_p = 1;        new_definition_p = 1;
# Line 1066  usage: (define-charset-internal ...)  */ Line 1066  usage: (define-charset-internal ...)  */
1066    return Qnil;    return Qnil;
1067  }  }
1068    
1069    
1070    /* Same as Fdefine_charset_internal but arguments are more convenient
1071       to call from C (typically in syms_of_charset).  This can define a
1072       charset of `offset' method only.  Return the ID of the new
1073       charset.  */
1074    
1075    static int
1076    define_charset_internal (name, dimension, code_space, min_code, max_code,
1077                             iso_final, iso_revision, emacs_mule_id,
1078                             ascii_compatible, supprementary,
1079                             code_offset)
1080         Lisp_Object name;
1081         int dimension;
1082         unsigned char *code_space;
1083         unsigned min_code, max_code;
1084         int iso_final, iso_revision, emacs_mule_id;
1085         int ascii_compatible, supprementary;
1086         int code_offset;
1087    {
1088      Lisp_Object args[charset_arg_max];
1089      Lisp_Object plist[14];
1090      Lisp_Object val;
1091      int i;
1092    
1093      args[charset_arg_name] = name;
1094      args[charset_arg_dimension] = make_number (dimension);
1095      val = Fmake_vector (make_number (8), make_number (0));
1096      for (i = 0; i < 8; i++)
1097        ASET (val, i, make_number (code_space[i]));
1098      args[charset_arg_code_space] = val;
1099      args[charset_arg_min_code] = make_number (min_code);
1100      args[charset_arg_max_code] = make_number (max_code);
1101      args[charset_arg_iso_final]
1102        = (iso_final < 0 ? Qnil : make_number (iso_final));
1103      args[charset_arg_iso_revision] = make_number (iso_revision);
1104      args[charset_arg_emacs_mule_id]
1105        = (emacs_mule_id < 0 ? Qnil : make_number (emacs_mule_id));
1106      args[charset_arg_ascii_compatible_p] = ascii_compatible ? Qt : Qnil;
1107      args[charset_arg_supplementary_p] = supprementary ? Qt : Qnil;
1108      args[charset_arg_invalid_code] = Qnil;
1109      args[charset_arg_code_offset] = make_number (code_offset);
1110      args[charset_arg_map] = Qnil;
1111      args[charset_arg_subset] = Qnil;
1112      args[charset_arg_superset] = Qnil;
1113      args[charset_arg_unify_map] = Qnil;
1114    
1115      plist[0] = intern (":name");
1116      plist[1] = args[charset_arg_name];
1117      plist[2] = intern (":dimension");
1118      plist[3] = args[charset_arg_dimension];
1119      plist[4] = intern (":code-space");
1120      plist[5] = args[charset_arg_code_space];
1121      plist[6] = intern (":iso-final-char");
1122      plist[7] = args[charset_arg_iso_final];
1123      plist[8] = intern (":emacs-mule-id");
1124      plist[9] = args[charset_arg_emacs_mule_id];
1125      plist[10] = intern (":ascii-compatible-p");
1126      plist[11] = args[charset_arg_ascii_compatible_p];
1127      plist[12] = intern (":code-offset");
1128      plist[13] = args[charset_arg_code_offset];
1129    
1130      args[charset_arg_plist] = Flist (14, plist);
1131      Fdefine_charset_internal (charset_arg_max, args);
1132    
1133      return XINT (CHARSET_SYMBOL_ID (name));
1134    }
1135    
1136    
1137  DEFUN ("define-charset-alias", Fdefine_charset_alias,  DEFUN ("define-charset-alias", Fdefine_charset_alias,
1138         Sdefine_charset_alias, 2, 2, 0,         Sdefine_charset_alias, 2, 2, 0,
1139         doc: /* Define ALIAS as an alias for charset CHARSET.  */)         doc: /* Define ALIAS as an alias for charset CHARSET.  */)
# Line 1984  syms_of_charset () Line 2052  syms_of_charset ()
2052    
2053    DEFSYM (Qascii, "ascii");    DEFSYM (Qascii, "ascii");
2054    DEFSYM (Qunicode, "unicode");    DEFSYM (Qunicode, "unicode");
2055    DEFSYM (Qeight_bit_control, "eight-bit-control");    DEFSYM (Qeight_bit, "eight-bit");
   DEFSYM (Qeight_bit_graphic, "eight-bit-graphic");  
2056    DEFSYM (Qiso_8859_1, "iso-8859-1");    DEFSYM (Qiso_8859_1, "iso-8859-1");
2057    
2058    DEFSYM (Qgl, "gl");    DEFSYM (Qgl, "gl");
# Line 2047  The default value is sub-directory "char Line 2114  The default value is sub-directory "char
2114                 doc: /* List of all charsets ever defined.  */);                 doc: /* List of all charsets ever defined.  */);
2115    Vcharset_list = Qnil;    Vcharset_list = Qnil;
2116    
2117    /* Make the prerequisite charset `ascii' and `unicode'.  */    charset_ascii
2118    {      = define_charset_internal (Qascii, 1, "\x00\x7F\x00\x00\x00\x00",
2119      Lisp_Object args[charset_arg_max];                                 0, 127, 'B', -1, 0, 1, 0, 0);
2120      Lisp_Object plist[14];    charset_unicode
2121      Lisp_Object val;      = define_charset_internal (Qunicode, 3, "\x00\x7F\x00\x7F\x00\x10",
2122                                   0, MAX_UNICODE_CHAR, -1, 0, -1, 1, 0, 0);
2123      plist[0] = intern (":name");    charset_eight_bit
2124      plist[2] = intern (":dimension");      = define_charset_internal (Qeight_bit, 1, "\x80\xFF\x00\x00\x00\x00",
2125      plist[4] = intern (":code-space");                                 128, 255, -1, 0, -1, 0, 0,
2126      plist[6] = intern (":iso-final-char");                                 MAX_5_BYTE_CHAR + 1);
     plist[8] = intern (":emacs-mule-id");  
     plist[10] = intern (":ascii-compatible-p");  
     plist[12] = intern (":code-offset");  
   
     args[charset_arg_name] = Qascii;  
     args[charset_arg_dimension] = make_number (1);  
     val = Fmake_vector (make_number (8), make_number (0));  
     ASET (val, 1, make_number (127));  
     args[charset_arg_code_space] = val;  
     args[charset_arg_min_code] = Qnil;  
     args[charset_arg_max_code] = Qnil;  
     args[charset_arg_iso_final] = make_number ('B');  
     args[charset_arg_iso_revision] = Qnil;  
     args[charset_arg_emacs_mule_id] = make_number (0);  
     args[charset_arg_ascii_compatible_p] = Qt;  
     args[charset_arg_supplementary_p] = Qnil;  
     args[charset_arg_invalid_code] = Qnil;  
     args[charset_arg_code_offset] = make_number (0);  
     args[charset_arg_map] = Qnil;  
     args[charset_arg_subset] = Qnil;  
     args[charset_arg_superset] = Qnil;  
     args[charset_arg_unify_map] = Qnil;  
     /* The actual plist is set by mule-conf.el.  */  
     plist[1] = args[charset_arg_name];  
     plist[3] = args[charset_arg_dimension];  
     plist[5] = args[charset_arg_code_space];  
     plist[7] = args[charset_arg_iso_final];  
     plist[9] = args[charset_arg_emacs_mule_id];  
     plist[11] = args[charset_arg_ascii_compatible_p];  
     plist[13] = args[charset_arg_code_offset];  
     args[charset_arg_plist] = Flist (14, plist);  
     Fdefine_charset_internal (charset_arg_max, args);  
     charset_ascii = XINT (CHARSET_SYMBOL_ID (Qascii));  
   
     args[charset_arg_name] = Qunicode;  
     args[charset_arg_dimension] = make_number (3);  
     val = Fmake_vector (make_number (8), make_number (0));  
     ASET (val, 1, make_number (255));  
     ASET (val, 3, make_number (255));  
     ASET (val, 5, make_number (16));  
     args[charset_arg_code_space] = val;  
     args[charset_arg_min_code] = Qnil;  
     args[charset_arg_max_code] = Qnil;  
     args[charset_arg_iso_final] = Qnil;  
     args[charset_arg_iso_revision] = Qnil;  
     args[charset_arg_emacs_mule_id] = Qnil;  
     args[charset_arg_ascii_compatible_p] = Qt;  
     args[charset_arg_supplementary_p] = Qnil;  
     args[charset_arg_invalid_code] = Qnil;  
     args[charset_arg_code_offset] = make_number (0);  
     args[charset_arg_map] = Qnil;  
     args[charset_arg_subset] = Qnil;  
     args[charset_arg_superset] = Qnil;  
     args[charset_arg_unify_map] = Qnil;  
     /* The actual plist is set by mule-conf.el.  */  
     plist[1] = args[charset_arg_name];  
     plist[3] = args[charset_arg_dimension];  
     plist[5] = args[charset_arg_code_space];  
     plist[7] = args[charset_arg_iso_final];  
     plist[9] = args[charset_arg_emacs_mule_id];  
     plist[11] = args[charset_arg_ascii_compatible_p];  
     plist[13] = args[charset_arg_code_offset];  
     args[charset_arg_plist] = Flist (14, plist);  
     Fdefine_charset_internal (charset_arg_max, args);  
     charset_unicode = XINT (CHARSET_SYMBOL_ID (Qunicode));  
   }  
2127  }  }
2128    
2129  #endif /* emacs */  #endif /* emacs */

Legend:
Removed from v.1.125.2.26  
changed lines
  Added in v.1.125.2.27

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26