#ifdef UTF2000
Lisp_Object table;
+ Lisp_Object default_value;
#else
Lisp_Object ascii[NUM_ASCII_CHARS];
INLINE_HEADER Lisp_Object
CHAR_TABLE_VALUE_UNSAFE (Lisp_Char_Table *ct, Emchar ch)
{
- return get_byte_table (get_byte_table
- (get_byte_table
- (get_byte_table
- (ct->table,
- (unsigned char)(ch >> 24)),
- (unsigned char) (ch >> 16)),
- (unsigned char) (ch >> 8)),
- (unsigned char) ch);
+ Lisp_Object val = get_byte_table (get_byte_table
+ (get_byte_table
+ (get_byte_table
+ (ct->table,
+ (unsigned char)(ch >> 24)),
+ (unsigned char) (ch >> 16)),
+ (unsigned char) (ch >> 8)),
+ (unsigned char) ch);
+ if (UNBOUNDP (val))
+ return ct->default_value;
+ else
+ return val;
}
#elif defined(MULE)
enum chartab_range_type
{
CHARTAB_RANGE_ALL,
+#ifdef UTF2000
+ CHARTAB_RANGE_DEFAULT,
+#endif
#ifdef MULE
CHARTAB_RANGE_CHARSET,
CHARTAB_RANGE_ROW,