/* Functions to handle multilingual characters.
Copyright (C) 1992, 1995 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2011
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2011, 2013, 2016
MORIOKA Tomohiko
This file is part of XEmacs.
}
int
-charset_code_point (Lisp_Object charset, Emchar ch, int defined_only)
+charset_code_point (Lisp_Object charset, Emchar ch, int accepted_mode)
{
- Lisp_Object encoding_table = XCHARSET_ENCODING_TABLE (charset);
Lisp_Object ret;
- if ( CHAR_TABLEP (encoding_table)
- && INTP (ret = get_char_id_table (XCHAR_TABLE(encoding_table),
- ch)) )
- return XINT (ret);
- else
+ if ( accepted_mode >= 0 )
+ {
+ Lisp_Object encoding_table = XCHARSET_ENCODING_TABLE (charset);
+
+ if ( CHAR_TABLEP (encoding_table)
+#ifdef USE_CONCORD_OBJECT_SYSTEM
+ && !UNBOUNDP (ret = get_char_id_table_ce (XCHAR_TABLE
+ (encoding_table),
+ ch))
+#else
+ && !UNBOUNDP (ret = get_char_id_table (XCHAR_TABLE(encoding_table),
+ ch))
+#endif
+ )
+ if ( INTP (ret) )
+ return XINT (ret);
+ else
+ return -1;
+ }
{
Lisp_Object mother = XCHARSET_MOTHER (charset);
int min = XCHARSET_MIN_CODE (charset);
int max = XCHARSET_MAX_CODE (charset);
int code = -1;
- if ( CHARSETP (mother) )
- {
- if (XCHARSET_FINAL (charset) >= '0')
- code = charset_code_point (mother, ch, 1);
- else
- code = charset_code_point (mother, ch, defined_only);
- }
- else if (defined_only)
+ if ( CHARSETP (mother) && ( accepted_mode >= 0)
+ && ( XCHARSET_FINAL (charset) >= '0' )
+ )
+ code = charset_code_point (mother, ch, CHAR_DEFINED_ONLY);
+ else if ( CHARSETP (mother)
+ && ( XCHARSET_FINAL (charset) < '0' )
+ )
+ code = charset_code_point (mother, ch, accepted_mode);
+ else if ( accepted_mode == CHAR_DEFINED_ONLY )
return -1;
else if ( ((max == 0) && CHARSETP (mother)
&& (XCHARSET_FINAL (charset) == 0))
|| ((min <= ch) && (ch <= max)) )
code = ch;
+
if ( ((max == 0) && CHARSETP (mother) && (code >= 0))
|| ((min <= code) && (code <= max)) )
{
exit (-1);
}
}
- else if (defined_only)
+ else if ( accepted_mode == CHAR_DEFINED_ONLY )
return -1;
else if ( ( XCHARSET_FINAL (charset) >= '0' ) &&
( XCHARSET_MIN_CODE (charset) == 0 )
= chise_ds_decode_char (default_chise_data_source,
XSTRING_DATA(Fsymbol_name (XCHARSET_NAME(ccs))),
code_point);
+#if 0
if (char_id >= 0)
decoding_table_put_char (ccs, code_point, make_char (char_id));
else
decoding_table_put_char (ccs, code_point, Qnil);
+#endif
/* chise_ccst_close (dt_ccs); */
return char_id;
build_string ("JIS X0208"),
build_string ("JIS X0208 Common"),
build_string ("JIS X0208 Common part"),
- build_string ("jisx0208\\.1990"),
+ build_string ("jisx0208"),
- LEADING_BYTE_JAPANESE_JISX0208_1978,
Qnil,
MIN_CHAR_JIS_X0208_1990,