changeset 99978:bfd3ac81ee0f

(enum charset_method): Delete CHARSET_METHOD_MAP_DEFERRED. (DECODE_CHAR): Check if the decoder vector is ready. (ENCODE_CHAR): Check if the encoder char-table is ready. (maybe_unify_char): Extern it.
author Kenichi Handa <handa@m17n.org>
date Thu, 27 Nov 2008 08:00:43 +0000
parents b9e04d1588d7
children a33d93f0c185
files src/charset.h
diffstat 1 files changed, 9 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/charset.h	Thu Nov 27 08:00:16 2008 +0000
+++ b/src/charset.h	Thu Nov 27 08:00:43 2008 +0000
@@ -66,9 +66,9 @@
     /* 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
@@ -134,11 +134,6 @@
        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,
 
@@ -410,9 +405,10 @@
       ? (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 @@
       ? (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					 \
@@ -538,6 +535,7 @@
 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));