X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fchartab.h;h=7d62ac2100cbabeae466145ae3b1c4a7bdf4d5d2;hb=7dc29a1c9d81ba0db724b28d96232a7aaae91a75;hp=444d41a5b79a490ea6dca871b036deb55407e557;hpb=f605cb3c49256c49ad76f21deed0f58d111a8571;p=chise%2Fxemacs-chise.git- diff --git a/src/chartab.h b/src/chartab.h index 444d41a..7d62ac2 100644 --- a/src/chartab.h +++ b/src/chartab.h @@ -31,6 +31,12 @@ Boston, MA 02111-1307, USA. */ #ifdef UTF2000 +EXFUN (Fmake_char, 3); +EXFUN (Fdecode_char, 3); + +EXFUN (Fput_char_attribute, 3); + + /************************************************************************/ /* Char-ID Tables */ /************************************************************************/ @@ -308,7 +314,23 @@ extern Lisp_Object Vall_syntax_tables; #ifdef UTF2000 -Lisp_Object get_char_id_table (Lisp_Char_Table* cit, Emchar ch); +INLINE_HEADER Lisp_Object get_char_id_table (Lisp_Char_Table* cit, Emchar ch); +INLINE_HEADER Lisp_Object +get_char_id_table (Lisp_Char_Table* cit, Emchar ch) +{ + Lisp_Object val = get_byte_table (get_byte_table + (get_byte_table + (get_byte_table + (cit->table, + (unsigned char)(ch >> 24)), + (unsigned char) (ch >> 16)), + (unsigned char) (ch >> 8)), + (unsigned char) ch); + if (UNBOUNDP (val)) + return cit->default_value; + else + return val; +} INLINE_HEADER void put_char_id_table_0 (Lisp_Char_Table* cit, Emchar code, Lisp_Object value); @@ -328,8 +350,22 @@ put_char_id_table_0 (Lisp_Char_Table* cit, Emchar code, Lisp_Object value) cit->table = put_byte_table (table1, (unsigned char)(code >> 24), table2); } -void put_char_id_table (Lisp_Char_Table* table, - Lisp_Object character, Lisp_Object value); +void +decode_char_table_range (Lisp_Object range, struct chartab_range *outrange); + +INLINE_HEADER void +put_char_id_table (Lisp_Char_Table* table, + Lisp_Object character, Lisp_Object value); +INLINE_HEADER void +put_char_id_table (Lisp_Char_Table* table, + Lisp_Object character, Lisp_Object value) +{ + struct chartab_range range; + + decode_char_table_range (character, &range); + put_char_table (table, &range, value); +} + EXFUN (Fget_char_attribute, 3);