diff options
| author | Kenichi Handa | 2002-03-01 01:44:13 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2002-03-01 01:44:13 +0000 |
| commit | 1842abb2bf55038f92160f01d26a3649b25d63e9 (patch) | |
| tree | 5fc97ef904451eedfdbd31800b263608abee5053 /src | |
| parent | dd4acaa57fef06912786795ac50137ec23509f92 (diff) | |
| download | emacs-1842abb2bf55038f92160f01d26a3649b25d63e9.tar.gz emacs-1842abb2bf55038f92160f01d26a3649b25d63e9.zip | |
(enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
(XSUB_CHAR_TABLE, XSETSUB_CHAR_TABLE): New macros.
(CHAR_TABLE_ORDINARY_SLOTS, CHAR_TABLE_SINGLE_BYTE_SLOTS,
SUB_CHAR_TABLE_ORDINARY_SLOTS, SUB_CHAR_TABLE_STANDARD_SLOTS):
Deleted.
(CHAR_TABLE_REF, CHAR_TABLE_SET): Adjusted for the new char table
structure.
(CHAR_TABLE_TRANSLATE): Just call char_table_translate.
(CHARTAB_SIZE_BITS_0, CHARTAB_SIZE_BITS_1, CHARTAB_SIZE_BITS_2,
CHARTAB_SIZE_BITS_3): New macros.
(chartab_size): Extern it.
(struct Lisp_Char_Table): Re-designed.
(struct Lisp_Sub_Char_Table): New structure.
(HASH_KEY, HASH_VALUE): Moved from fns.c.
(CHARACTERBITS): Defined as 22.
(GLYPH_MASK_FACE, GLYPH_MASK_CHAR): Adjusted for the above change.
(SUB_CHAR_TABLE_P): Check PVEC_CHAR_TABLE.
(GC_SUB_CHAR_TABLE_P): New macro.
(Fencode_coding_string, Fdecode_coding_string): EXFUN Updated.
(code_convert_string_norecord): Extern deleted.
(init_character_once, syms_of_character, init_charset,
syms_of_composite, Qeq, Fmakehash, insert_from_gap): Extern them.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lisp.h | 248 |
1 files changed, 145 insertions, 103 deletions
diff --git a/src/lisp.h b/src/lisp.h index 4b73c019054..0cb6df0a854 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -298,7 +298,8 @@ enum pvec_type | |||
| 298 | PVEC_BOOL_VECTOR = 0x10000, | 298 | PVEC_BOOL_VECTOR = 0x10000, |
| 299 | PVEC_BUFFER = 0x20000, | 299 | PVEC_BUFFER = 0x20000, |
| 300 | PVEC_HASH_TABLE = 0x40000, | 300 | PVEC_HASH_TABLE = 0x40000, |
| 301 | PVEC_TYPE_MASK = 0x7fe00 | 301 | PVEC_SUB_CHAR_TABLE = 0x80000, |
| 302 | PVEC_TYPE_MASK = 0x0ffe00 | ||
| 302 | 303 | ||
| 303 | #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to | 304 | #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to |
| 304 | GDB. It doesn't work on OS Alpha. Moved to a variable in | 305 | GDB. It doesn't work on OS Alpha. Moved to a variable in |
| @@ -499,6 +500,7 @@ extern Lisp_Object make_number (); | |||
| 499 | #define XSUBR(a) (eassert (GC_SUBRP(a)),(struct Lisp_Subr *) XPNTR(a)) | 500 | #define XSUBR(a) (eassert (GC_SUBRP(a)),(struct Lisp_Subr *) XPNTR(a)) |
| 500 | #define XBUFFER(a) (eassert (GC_BUFFERP(a)),(struct buffer *) XPNTR(a)) | 501 | #define XBUFFER(a) (eassert (GC_BUFFERP(a)),(struct buffer *) XPNTR(a)) |
| 501 | #define XCHAR_TABLE(a) ((struct Lisp_Char_Table *) XPNTR(a)) | 502 | #define XCHAR_TABLE(a) ((struct Lisp_Char_Table *) XPNTR(a)) |
| 503 | #define XSUB_CHAR_TABLE(a) ((struct Lisp_Sub_Char_Table *) XPNTR(a)) | ||
| 502 | #define XBOOL_VECTOR(a) ((struct Lisp_Bool_Vector *) XPNTR(a)) | 504 | #define XBOOL_VECTOR(a) ((struct Lisp_Bool_Vector *) XPNTR(a)) |
| 503 | 505 | ||
| 504 | /* Construct a Lisp_Object from a value or address. */ | 506 | /* Construct a Lisp_Object from a value or address. */ |
| @@ -528,6 +530,7 @@ extern Lisp_Object make_number (); | |||
| 528 | #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) | 530 | #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) |
| 529 | #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) | 531 | #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) |
| 530 | #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) | 532 | #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) |
| 533 | #define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE)) | ||
| 531 | 534 | ||
| 532 | /* Convenience macros for dealing with Lisp arrays. */ | 535 | /* Convenience macros for dealing with Lisp arrays. */ |
| 533 | 536 | ||
| @@ -701,41 +704,20 @@ struct Lisp_Vector | |||
| 701 | Lisp_Object contents[1]; | 704 | Lisp_Object contents[1]; |
| 702 | }; | 705 | }; |
| 703 | 706 | ||
| 704 | /* A char table is a kind of vectorlike, with contents are like a | 707 | /* A char-table is a kind of vectorlike, with contents are like a |
| 705 | vector but with a few other slots. For some purposes, it makes | 708 | vector but with a few other slots. For some purposes, it makes |
| 706 | sense to handle a chartable with type struct Lisp_Vector. An | 709 | sense to handle a char-table with type struct Lisp_Vector. An |
| 707 | element of a char table can be any Lisp objects, but if it is a sub | 710 | element of a char table can be any Lisp objects, but if it is a sub |
| 708 | char-table, we treat it a table that contains information of a | 711 | char-table, we treat it a table that contains information of a |
| 709 | group of characters of the same charsets or a specific character of | 712 | specific range of characters. A sub char-table has the same |
| 710 | a charset. A sub char-table has the same structure as a char table | 713 | structure as a vector. A sub char table appears only in an element |
| 711 | except for that the former omits several slots at the tail. A sub | 714 | of a char-table, and there's no way to access it directly from |
| 712 | char table appears only in an element of a char table, and there's | 715 | Emacs Lisp program. */ |
| 713 | no way to access it directly from Emacs Lisp program. */ | ||
| 714 | |||
| 715 | /* This is the number of slots that apply to characters or character | ||
| 716 | sets. The first 128 are for ASCII, the next 128 are for 8-bit | ||
| 717 | European characters, and the last 128 are for multibyte characters. | ||
| 718 | The first 256 are indexed by the code itself, but the last 128 are | ||
| 719 | indexed by (charset-id + 128). */ | ||
| 720 | #define CHAR_TABLE_ORDINARY_SLOTS 384 | ||
| 721 | |||
| 722 | /* This is the number of slots that apply to characters of ASCII and | ||
| 723 | 8-bit Europeans only. */ | ||
| 724 | #define CHAR_TABLE_SINGLE_BYTE_SLOTS 256 | ||
| 725 | 716 | ||
| 726 | /* This is the number of slots that every char table must have. This | 717 | /* This is the number of slots that every char table must have. This |
| 727 | counts the ordinary slots and the top, defalt, parent, and purpose | 718 | counts the ordinary slots and the top, defalt, parent, and purpose |
| 728 | slots. */ | 719 | slots. */ |
| 729 | #define CHAR_TABLE_STANDARD_SLOTS (CHAR_TABLE_ORDINARY_SLOTS + 4) | 720 | #define CHAR_TABLE_STANDARD_SLOTS (VECSIZE (struct Lisp_Char_Table) - 1) |
| 730 | |||
| 731 | /* This is the number of slots that apply to position-code-1 and | ||
| 732 | position-code-2 of a multibyte character at the 2nd and 3rd level | ||
| 733 | sub char tables respectively. */ | ||
| 734 | #define SUB_CHAR_TABLE_ORDINARY_SLOTS 128 | ||
| 735 | |||
| 736 | /* This is the number of slots that every sub char table must have. | ||
| 737 | This counts the ordinary slots and the top and defalt slot. */ | ||
| 738 | #define SUB_CHAR_TABLE_STANDARD_SLOTS (SUB_CHAR_TABLE_ORDINARY_SLOTS + 2) | ||
| 739 | 721 | ||
| 740 | /* Return the number of "extra" slots in the char table CT. */ | 722 | /* Return the number of "extra" slots in the char table CT. */ |
| 741 | 723 | ||
| @@ -743,14 +725,13 @@ struct Lisp_Vector | |||
| 743 | (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) | 725 | (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) |
| 744 | 726 | ||
| 745 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 727 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII |
| 746 | and 8-bit Europeans characters. For these characters, do not check | 728 | characters. Do not check validity of CT. */ |
| 747 | validity of CT. Do not follow parent. */ | 729 | #define CHAR_TABLE_REF(CT, IDX) \ |
| 748 | #define CHAR_TABLE_REF(CT, IDX) \ | 730 | (((IDX) >= 0 && ASCII_CHAR_P (IDX) \ |
| 749 | ((IDX) >= 0 && (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 731 | && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \ |
| 750 | ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | 732 | && !NILP (XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX])) \ |
| 751 | ? XCHAR_TABLE (CT)->contents[IDX] \ | 733 | ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] \ |
| 752 | : XCHAR_TABLE (CT)->defalt) \ | 734 | : char_table_ref ((CT), (IDX))) |
| 753 | : Faref (CT, make_number (IDX))) | ||
| 754 | 735 | ||
| 755 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 736 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII |
| 756 | and 8-bit Europeans characters. However, if the result is nil, | 737 | and 8-bit Europeans characters. However, if the result is nil, |
| @@ -758,54 +739,79 @@ struct Lisp_Vector | |||
| 758 | 739 | ||
| 759 | For these characters, do not check validity of CT | 740 | For these characters, do not check validity of CT |
| 760 | and do not follow parent. */ | 741 | and do not follow parent. */ |
| 761 | #define CHAR_TABLE_TRANSLATE(CT, IDX) \ | 742 | #define CHAR_TABLE_TRANSLATE(CT, IDX) \ |
| 762 | ((IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 743 | char_table_translate (CT, IDX) |
| 763 | ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | ||
| 764 | ? XINT (XCHAR_TABLE (CT)->contents[IDX]) \ | ||
| 765 | : IDX) \ | ||
| 766 | : char_table_translate (CT, IDX)) | ||
| 767 | 744 | ||
| 768 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and | 745 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and |
| 769 | 8-bit Europeans characters. Do not check validity of CT. */ | 746 | 8-bit Europeans characters. Do not check validity of CT. */ |
| 770 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ | 747 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ |
| 771 | do { \ | 748 | (((IDX) >= 0 && ASCII_CHAR_P (IDX) \ |
| 772 | if (XFASTINT (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS) \ | 749 | && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii)) \ |
| 773 | XCHAR_TABLE (CT)->contents[XFASTINT (IDX)] = VAL; \ | 750 | ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] = VAL \ |
| 774 | else \ | 751 | : char_table_set (CT, IDX, VAL)) |
| 775 | Faset (CT, IDX, VAL); \ | 752 | |
| 776 | } while (0) | 753 | |
| 754 | #define CHARTAB_SIZE_BITS_0 6 | ||
| 755 | #define CHARTAB_SIZE_BITS_1 4 | ||
| 756 | #define CHARTAB_SIZE_BITS_2 5 | ||
| 757 | #define CHARTAB_SIZE_BITS_3 7 | ||
| 758 | |||
| 759 | extern const int chartab_size[4]; | ||
| 760 | |||
| 761 | struct Lisp_Sub_Char_Table; | ||
| 777 | 762 | ||
| 778 | struct Lisp_Char_Table | 763 | struct Lisp_Char_Table |
| 779 | { | 764 | { |
| 780 | /* This is the vector's size field, which also holds the | 765 | /* This is the vector's size field, which also holds the |
| 781 | pseudovector type information. It holds the size, too. | 766 | pseudovector type information. It holds the size, too. The size |
| 782 | The size counts the top, defalt, purpose, and parent slots. | 767 | counts the defalt, parent, purpose, ascii, contents, and extras |
| 783 | The last three are not counted if this is a sub char table. */ | 768 | slots. */ |
| 784 | EMACS_INT size; | 769 | EMACS_INT size; |
| 785 | struct Lisp_Vector *next; | 770 | struct Lisp_Vector *next; |
| 786 | /* This holds a flag to tell if this is a top level char table (t) | 771 | |
| 787 | or a sub char table (nil). */ | 772 | /* This holds a default value, |
| 788 | Lisp_Object top; | 773 | which is used whenever the value for a specific character is nil. */ |
| 789 | /* This holds a default value, | 774 | Lisp_Object defalt; |
| 790 | which is used whenever the value for a specific character is nil. */ | 775 | |
| 791 | Lisp_Object defalt; | 776 | /* This points to another char table, which we inherit from when the |
| 792 | /* This holds an actual value of each element. A sub char table | 777 | value for a specific character is nil. The `defalt' slot takes |
| 793 | has only SUB_CHAR_TABLE_ORDINARY_SLOTS number of elements. */ | 778 | precedence over this. */ |
| 794 | Lisp_Object contents[CHAR_TABLE_ORDINARY_SLOTS]; | 779 | Lisp_Object parent; |
| 795 | 780 | ||
| 796 | /* A sub char table doesn't has the following slots. */ | 781 | /* This is a symbol which says what kind of use this char-table is |
| 797 | 782 | meant for. */ | |
| 798 | /* This points to another char table, which we inherit from | 783 | Lisp_Object purpose; |
| 799 | when the value for a specific character is nil. | 784 | |
| 800 | The `defalt' slot takes precedence over this. */ | 785 | /* The bottom sub char-table for characters of the range 0..127. It |
| 801 | Lisp_Object parent; | 786 | is nil if none of ASCII character has a specific value. */ |
| 802 | /* This should be a symbol which says what kind of use | 787 | Lisp_Object ascii; |
| 803 | this char-table is meant for. | 788 | |
| 804 | Typically now the values can be `syntax-table' and `display-table'. */ | 789 | Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)]; |
| 805 | Lisp_Object purpose; | 790 | |
| 806 | /* These hold additional data. */ | 791 | /* These hold additional data. It is a vector. */ |
| 807 | Lisp_Object extras[1]; | 792 | Lisp_Object extras[1]; |
| 808 | }; | 793 | }; |
| 794 | |||
| 795 | struct Lisp_Sub_Char_Table | ||
| 796 | { | ||
| 797 | /* This is the vector's size field, which also holds the | ||
| 798 | pseudovector type information. It holds the size, too. */ | ||
| 799 | EMACS_INT size; | ||
| 800 | struct Lisp_Vector *next; | ||
| 801 | |||
| 802 | /* Depth of this sub char-table. It should be 1, 2, or 3. A sub | ||
| 803 | char-table of depth 1 contains 16 elments, and each element | ||
| 804 | covers 4096 (128*32) characters. A sub char-table of depth 2 | ||
| 805 | contains 32 elements, and each element covers 128 characters. A | ||
| 806 | sub char-table of depth 3 contains 128 elements, and each element | ||
| 807 | is for one character. */ | ||
| 808 | Lisp_Object depth; | ||
| 809 | |||
| 810 | /* Minimum character covered by the sub char-table. */ | ||
| 811 | Lisp_Object min_char; | ||
| 812 | |||
| 813 | Lisp_Object contents[1]; | ||
| 814 | }; | ||
| 809 | 815 | ||
| 810 | /* A boolvector is a kind of vectorlike, with contents are like a string. */ | 816 | /* A boolvector is a kind of vectorlike, with contents are like a string. */ |
| 811 | struct Lisp_Bool_Vector | 817 | struct Lisp_Bool_Vector |
| @@ -1025,6 +1031,14 @@ struct Lisp_Hash_Table | |||
| 1025 | 1031 | ||
| 1026 | #define DEFAULT_REHASH_SIZE 1.5 | 1032 | #define DEFAULT_REHASH_SIZE 1.5 |
| 1027 | 1033 | ||
| 1034 | /* Value is the key part of entry IDX in hash table H. */ | ||
| 1035 | |||
| 1036 | #define HASH_KEY(H, IDX) AREF ((H)->key_and_value, 2 * (IDX)) | ||
| 1037 | |||
| 1038 | /* Value is the value part of entry IDX in hash table H. */ | ||
| 1039 | |||
| 1040 | #define HASH_VALUE(H, IDX) AREF ((H)->key_and_value, 2 * (IDX) + 1) | ||
| 1041 | |||
| 1028 | 1042 | ||
| 1029 | /* These structures are used for various misc types. */ | 1043 | /* These structures are used for various misc types. */ |
| 1030 | 1044 | ||
| @@ -1247,9 +1261,9 @@ typedef unsigned char UCHAR; | |||
| 1247 | (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META) | 1261 | (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META) |
| 1248 | 1262 | ||
| 1249 | 1263 | ||
| 1250 | /* Actually, the current Emacs uses 19 bits for the character value | 1264 | /* Actually, the current Emacs uses 22 bits for the character value |
| 1251 | itself. */ | 1265 | itself. */ |
| 1252 | #define CHARACTERBITS 19 | 1266 | #define CHARACTERBITS 22 |
| 1253 | 1267 | ||
| 1254 | /* The maximum byte size consumed by push_key_description. | 1268 | /* The maximum byte size consumed by push_key_description. |
| 1255 | All callers should assure that at least this size of memory is | 1269 | All callers should assure that at least this size of memory is |
| @@ -1305,9 +1319,9 @@ typedef unsigned char UCHAR; | |||
| 1305 | #define GLYPH int | 1319 | #define GLYPH int |
| 1306 | 1320 | ||
| 1307 | /* Mask bits for face. */ | 1321 | /* Mask bits for face. */ |
| 1308 | #define GLYPH_MASK_FACE 0x7FF80000 | 1322 | #define GLYPH_MASK_FACE 0x7FC00000 |
| 1309 | /* Mask bits for character code. */ | 1323 | /* Mask bits for character code. */ |
| 1310 | #define GLYPH_MASK_CHAR 0x0007FFFF /* The lowest 19 bits */ | 1324 | #define GLYPH_MASK_CHAR 0x003FFFFF /* The lowest 19 bits */ |
| 1311 | 1325 | ||
| 1312 | /* The FAST macros assume that we already know we're in an X window. */ | 1326 | /* The FAST macros assume that we already know we're in an X window. */ |
| 1313 | 1327 | ||
| @@ -1406,12 +1420,13 @@ typedef unsigned char UCHAR; | |||
| 1406 | #define GC_BUFFERP(x) GC_PSEUDOVECTORP (x, PVEC_BUFFER) | 1420 | #define GC_BUFFERP(x) GC_PSEUDOVECTORP (x, PVEC_BUFFER) |
| 1407 | #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE) | 1421 | #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE) |
| 1408 | #define GC_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_CHAR_TABLE) | 1422 | #define GC_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_CHAR_TABLE) |
| 1423 | #define SUB_CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_SUB_CHAR_TABLE) | ||
| 1424 | #define GC_SUB_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_SUB_CHAR_TABLE) | ||
| 1409 | #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) | 1425 | #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) |
| 1410 | #define GC_BOOL_VECTOR_P(x) GC_PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) | 1426 | #define GC_BOOL_VECTOR_P(x) GC_PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) |
| 1411 | #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME) | 1427 | #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME) |
| 1412 | #define GC_FRAMEP(x) GC_PSEUDOVECTORP (x, PVEC_FRAME) | 1428 | #define GC_FRAMEP(x) GC_PSEUDOVECTORP (x, PVEC_FRAME) |
| 1413 | 1429 | ||
| 1414 | #define SUB_CHAR_TABLE_P(x) (CHAR_TABLE_P (x) && NILP (XCHAR_TABLE (x)->top)) | ||
| 1415 | 1430 | ||
| 1416 | #define EQ(x, y) (XFASTINT (x) == XFASTINT (y)) | 1431 | #define EQ(x, y) (XFASTINT (x) == XFASTINT (y)) |
| 1417 | #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y)) | 1432 | #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y)) |
| @@ -2088,15 +2103,17 @@ EXFUN (Fread_coding_system, 2); | |||
| 2088 | EXFUN (Fread_non_nil_coding_system, 1); | 2103 | EXFUN (Fread_non_nil_coding_system, 1); |
| 2089 | EXFUN (Ffind_operation_coding_system, MANY); | 2104 | EXFUN (Ffind_operation_coding_system, MANY); |
| 2090 | EXFUN (Fupdate_coding_systems_internal, 0); | 2105 | EXFUN (Fupdate_coding_systems_internal, 0); |
| 2091 | EXFUN (Fencode_coding_string, 3); | 2106 | EXFUN (Fencode_coding_string, 4); |
| 2092 | EXFUN (Fdecode_coding_string, 3); | 2107 | EXFUN (Fdecode_coding_string, 4); |
| 2093 | extern Lisp_Object detect_coding_system P_ ((unsigned char *, int, int, int)); | 2108 | extern Lisp_Object detect_coding_system P_ ((unsigned char *, int, int, int, |
| 2094 | Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object, int)); | 2109 | Lisp_Object)); |
| 2095 | extern void init_coding P_ ((void)); | 2110 | extern void init_coding P_ ((void)); |
| 2096 | extern void init_coding_once P_ ((void)); | 2111 | extern void init_coding_once P_ ((void)); |
| 2097 | extern void syms_of_coding P_ ((void)); | 2112 | extern void syms_of_coding P_ ((void)); |
| 2098 | extern Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object, | 2113 | |
| 2099 | int)); | 2114 | /* Defined in character.c */ |
| 2115 | extern void init_character_once P_ ((void)); | ||
| 2116 | extern void syms_of_character P_ ((void)); | ||
| 2100 | 2117 | ||
| 2101 | /* Defined in charset.c */ | 2118 | /* Defined in charset.c */ |
| 2102 | extern int nonascii_insert_offset; | 2119 | extern int nonascii_insert_offset; |
| @@ -2109,9 +2126,13 @@ extern int multibyte_chars_in_text P_ ((unsigned char *, int)); | |||
| 2109 | extern int unibyte_char_to_multibyte P_ ((int)); | 2126 | extern int unibyte_char_to_multibyte P_ ((int)); |
| 2110 | extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); | 2127 | extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); |
| 2111 | extern Lisp_Object Qcharset; | 2128 | extern Lisp_Object Qcharset; |
| 2129 | extern void init_charset P_ ((void)); | ||
| 2112 | extern void init_charset_once P_ ((void)); | 2130 | extern void init_charset_once P_ ((void)); |
| 2113 | extern void syms_of_charset P_ ((void)); | 2131 | extern void syms_of_charset P_ ((void)); |
| 2114 | 2132 | ||
| 2133 | /* Defined in composite.c */ | ||
| 2134 | extern void syms_of_composite P_ ((void)); | ||
| 2135 | |||
| 2115 | /* Defined in syntax.c */ | 2136 | /* Defined in syntax.c */ |
| 2116 | EXFUN (Fforward_word, 1); | 2137 | EXFUN (Fforward_word, 1); |
| 2117 | EXFUN (Fskip_chars_forward, 2); | 2138 | EXFUN (Fskip_chars_forward, 2); |
| @@ -2128,9 +2149,8 @@ extern int next_almost_prime P_ ((int)); | |||
| 2128 | extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); | 2149 | extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); |
| 2129 | extern void sweep_weak_hash_tables P_ ((void)); | 2150 | extern void sweep_weak_hash_tables P_ ((void)); |
| 2130 | extern Lisp_Object Qstring_lessp; | 2151 | extern Lisp_Object Qstring_lessp; |
| 2131 | EXFUN (Foptimize_char_table, 1); | ||
| 2132 | extern Lisp_Object Vfeatures; | 2152 | extern Lisp_Object Vfeatures; |
| 2133 | extern Lisp_Object QCtest, QCweakness, Qequal; | 2153 | extern Lisp_Object QCtest, QCweakness, Qequal, Qeq; |
| 2134 | unsigned sxhash P_ ((Lisp_Object, int)); | 2154 | unsigned sxhash P_ ((Lisp_Object, int)); |
| 2135 | Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, | 2155 | Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, |
| 2136 | Lisp_Object, Lisp_Object, Lisp_Object, | 2156 | Lisp_Object, Lisp_Object, Lisp_Object, |
| @@ -2145,6 +2165,7 @@ void remove_hash_entry P_ ((struct Lisp_Hash_Table *, int)); | |||
| 2145 | extern void init_fns P_ ((void)); | 2165 | extern void init_fns P_ ((void)); |
| 2146 | EXFUN (Fsxhash, 1); | 2166 | EXFUN (Fsxhash, 1); |
| 2147 | EXFUN (Fmake_hash_table, MANY); | 2167 | EXFUN (Fmake_hash_table, MANY); |
| 2168 | EXFUN (Fmakehash, 1); | ||
| 2148 | EXFUN (Fcopy_hash_table, 1); | 2169 | EXFUN (Fcopy_hash_table, 1); |
| 2149 | EXFUN (Fhash_table_count, 1); | 2170 | EXFUN (Fhash_table_count, 1); |
| 2150 | EXFUN (Fhash_table_rehash_size, 1); | 2171 | EXFUN (Fhash_table_rehash_size, 1); |
| @@ -2209,18 +2230,10 @@ extern Lisp_Object string_make_unibyte P_ ((Lisp_Object)); | |||
| 2209 | EXFUN (Fcopy_alist, 1); | 2230 | EXFUN (Fcopy_alist, 1); |
| 2210 | EXFUN (Fplist_get, 2); | 2231 | EXFUN (Fplist_get, 2); |
| 2211 | EXFUN (Fplist_put, 3); | 2232 | EXFUN (Fplist_put, 3); |
| 2212 | EXFUN (Fset_char_table_parent, 2); | ||
| 2213 | EXFUN (Fchar_table_extra_slot, 2); | ||
| 2214 | EXFUN (Fset_char_table_extra_slot, 3); | ||
| 2215 | EXFUN (Frassoc, 2); | 2233 | EXFUN (Frassoc, 2); |
| 2216 | EXFUN (Fstring_equal, 2); | 2234 | EXFUN (Fstring_equal, 2); |
| 2217 | EXFUN (Fcompare_strings, 7); | 2235 | EXFUN (Fcompare_strings, 7); |
| 2218 | EXFUN (Fstring_lessp, 2); | 2236 | EXFUN (Fstring_lessp, 2); |
| 2219 | extern int char_table_translate P_ ((Lisp_Object, int)); | ||
| 2220 | extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, Lisp_Object), | ||
| 2221 | Lisp_Object, Lisp_Object, Lisp_Object, int, | ||
| 2222 | Lisp_Object *)); | ||
| 2223 | extern Lisp_Object char_table_ref_and_index P_ ((Lisp_Object, int, int *)); | ||
| 2224 | extern void syms_of_fns P_ ((void)); | 2237 | extern void syms_of_fns P_ ((void)); |
| 2225 | 2238 | ||
| 2226 | /* Defined in floatfns.c */ | 2239 | /* Defined in floatfns.c */ |
| @@ -2243,6 +2256,7 @@ extern void insert P_ ((unsigned char *, int)); | |||
| 2243 | extern void insert_and_inherit P_ ((unsigned char *, int)); | 2256 | extern void insert_and_inherit P_ ((unsigned char *, int)); |
| 2244 | extern void insert_1 P_ ((unsigned char *, int, int, int, int)); | 2257 | extern void insert_1 P_ ((unsigned char *, int, int, int, int)); |
| 2245 | extern void insert_1_both P_ ((unsigned char *, int, int, int, int, int)); | 2258 | extern void insert_1_both P_ ((unsigned char *, int, int, int, int, int)); |
| 2259 | extern void insert_from_gap P_ ((int, int)); | ||
| 2246 | extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); | 2260 | extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); |
| 2247 | extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); | 2261 | extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); |
| 2248 | extern void insert_char P_ ((int)); | 2262 | extern void insert_char P_ ((int)); |
| @@ -2361,8 +2375,6 @@ extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); | |||
| 2361 | EXFUN (Fgarbage_collect, 0); | 2375 | EXFUN (Fgarbage_collect, 0); |
| 2362 | EXFUN (Fmake_byte_code, MANY); | 2376 | EXFUN (Fmake_byte_code, MANY); |
| 2363 | EXFUN (Fmake_bool_vector, 2); | 2377 | EXFUN (Fmake_bool_vector, 2); |
| 2364 | EXFUN (Fmake_char_table, 2); | ||
| 2365 | extern Lisp_Object make_sub_char_table P_ ((Lisp_Object)); | ||
| 2366 | extern Lisp_Object Qchar_table_extra_slots; | 2378 | extern Lisp_Object Qchar_table_extra_slots; |
| 2367 | extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); | 2379 | extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); |
| 2368 | extern struct Lisp_Vector *allocate_other_vector P_ ((EMACS_INT)); | 2380 | extern struct Lisp_Vector *allocate_other_vector P_ ((EMACS_INT)); |
| @@ -2381,6 +2393,35 @@ extern void init_alloc P_ ((void)); | |||
| 2381 | extern void syms_of_alloc P_ ((void)); | 2393 | extern void syms_of_alloc P_ ((void)); |
| 2382 | extern struct buffer * allocate_buffer P_ ((void)); | 2394 | extern struct buffer * allocate_buffer P_ ((void)); |
| 2383 | 2395 | ||
| 2396 | /* Defined in chartab.c */ | ||
| 2397 | EXFUN (Fmake_char_table, 2); | ||
| 2398 | EXFUN (Fchar_table_parent, 1); | ||
| 2399 | EXFUN (Fset_char_table_parent, 2); | ||
| 2400 | EXFUN (Fchar_table_extra_slot, 2); | ||
| 2401 | EXFUN (Fset_char_table_extra_slot, 3); | ||
| 2402 | EXFUN (Fchar_table_range, 2); | ||
| 2403 | EXFUN (Fset_char_table_range, 3); | ||
| 2404 | EXFUN (Fset_char_table_default, 3); | ||
| 2405 | EXFUN (Foptimize_char_table, 1); | ||
| 2406 | EXFUN (Fmap_char_table, 2); | ||
| 2407 | extern Lisp_Object copy_char_table P_ ((Lisp_Object)); | ||
| 2408 | extern Lisp_Object sub_char_table_ref P_ ((Lisp_Object, int)); | ||
| 2409 | extern Lisp_Object char_table_ref P_ ((Lisp_Object, int)); | ||
| 2410 | extern Lisp_Object char_table_ref_and_range P_ ((Lisp_Object, int, | ||
| 2411 | int *, int *)); | ||
| 2412 | extern Lisp_Object char_table_set P_ ((Lisp_Object, int, Lisp_Object)); | ||
| 2413 | extern Lisp_Object char_table_set_range P_ ((Lisp_Object, int, int, | ||
| 2414 | Lisp_Object)); | ||
| 2415 | extern int char_table_translate P_ ((Lisp_Object, int)); | ||
| 2416 | extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, | ||
| 2417 | Lisp_Object), | ||
| 2418 | Lisp_Object, Lisp_Object, Lisp_Object, int, | ||
| 2419 | Lisp_Object *)); | ||
| 2420 | extern void map_charset_chars P_ ((void (*) (Lisp_Object, Lisp_Object, | ||
| 2421 | Lisp_Object), | ||
| 2422 | Lisp_Object, Lisp_Object, Lisp_Object)); | ||
| 2423 | extern void syms_of_chartab P_ ((void)); | ||
| 2424 | |||
| 2384 | /* Defined in print.c */ | 2425 | /* Defined in print.c */ |
| 2385 | extern Lisp_Object Vprin1_to_string_buffer; | 2426 | extern Lisp_Object Vprin1_to_string_buffer; |
| 2386 | extern void debug_print P_ ((Lisp_Object)); | 2427 | extern void debug_print P_ ((Lisp_Object)); |
| @@ -3006,6 +3047,7 @@ extern void init_sound P_ ((void)); | |||
| 3006 | 3047 | ||
| 3007 | /* Defined in category.c */ | 3048 | /* Defined in category.c */ |
| 3008 | extern void init_category_once P_ ((void)); | 3049 | extern void init_category_once P_ ((void)); |
| 3050 | extern Lisp_Object char_category_set P_ ((int)); | ||
| 3009 | extern void syms_of_category P_ ((void)); | 3051 | extern void syms_of_category P_ ((void)); |
| 3010 | 3052 | ||
| 3011 | /* Defined in ccl.c */ | 3053 | /* Defined in ccl.c */ |