diff options
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 339 |
1 files changed, 167 insertions, 172 deletions
diff --git a/src/lisp.h b/src/lisp.h index 5788f15852b..284ee0b2b25 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -349,8 +349,9 @@ enum pvec_type | |||
| 349 | PVEC_BUFFER = 0x20000, | 349 | PVEC_BUFFER = 0x20000, |
| 350 | PVEC_HASH_TABLE = 0x40000, | 350 | PVEC_HASH_TABLE = 0x40000, |
| 351 | PVEC_TERMINAL = 0x80000, | 351 | PVEC_TERMINAL = 0x80000, |
| 352 | PVEC_OTHER = 0x100000, | 352 | PVEC_SUB_CHAR_TABLE = 0x100000, |
| 353 | PVEC_TYPE_MASK = 0x1ffe00 | 353 | PVEC_OTHER = 0x200000, |
| 354 | PVEC_TYPE_MASK = 0x2ffe00 | ||
| 354 | 355 | ||
| 355 | #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to | 356 | #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to |
| 356 | GDB. It doesn't work on OS Alpha. Moved to a variable in | 357 | GDB. It doesn't work on OS Alpha. Moved to a variable in |
| @@ -476,17 +477,6 @@ extern Lisp_Object make_number P_ ((EMACS_INT)); | |||
| 476 | 477 | ||
| 477 | #define EQ(x, y) (XHASH (x) == XHASH (y)) | 478 | #define EQ(x, y) (XHASH (x) == XHASH (y)) |
| 478 | 479 | ||
| 479 | /* During garbage collection, XGCTYPE must be used for extracting types | ||
| 480 | so that the mark bit is ignored. XMARKBIT accesses the markbit. | ||
| 481 | Markbits are used only in particular slots of particular structure types. | ||
| 482 | Other markbits are always zero. | ||
| 483 | Outside of garbage collection, all mark bits are always zero. */ | ||
| 484 | |||
| 485 | #ifndef XGCTYPE | ||
| 486 | /* The distinction does not exist now that the MARKBIT has been eliminated. */ | ||
| 487 | #define XGCTYPE(a) XTYPE (a) | ||
| 488 | #endif | ||
| 489 | |||
| 490 | #ifndef XPNTR | 480 | #ifndef XPNTR |
| 491 | #ifdef HAVE_SHM | 481 | #ifdef HAVE_SHM |
| 492 | /* In this representation, data is found in two widely separated segments. */ | 482 | /* In this representation, data is found in two widely separated segments. */ |
| @@ -528,11 +518,11 @@ extern size_t pure_size; | |||
| 528 | 518 | ||
| 529 | /* Extract a value or address from a Lisp_Object. */ | 519 | /* Extract a value or address from a Lisp_Object. */ |
| 530 | 520 | ||
| 531 | #define XCONS(a) (eassert (GC_CONSP(a)),(struct Lisp_Cons *) XPNTR(a)) | 521 | #define XCONS(a) (eassert (CONSP(a)),(struct Lisp_Cons *) XPNTR(a)) |
| 532 | #define XVECTOR(a) (eassert (GC_VECTORLIKEP(a)),(struct Lisp_Vector *) XPNTR(a)) | 522 | #define XVECTOR(a) (eassert (VECTORLIKEP(a)),(struct Lisp_Vector *) XPNTR(a)) |
| 533 | #define XSTRING(a) (eassert (GC_STRINGP(a)),(struct Lisp_String *) XPNTR(a)) | 523 | #define XSTRING(a) (eassert (STRINGP(a)),(struct Lisp_String *) XPNTR(a)) |
| 534 | #define XSYMBOL(a) (eassert (GC_SYMBOLP(a)),(struct Lisp_Symbol *) XPNTR(a)) | 524 | #define XSYMBOL(a) (eassert (SYMBOLP(a)),(struct Lisp_Symbol *) XPNTR(a)) |
| 535 | #define XFLOAT(a) (eassert (GC_FLOATP(a)),(struct Lisp_Float *) XPNTR(a)) | 525 | #define XFLOAT(a) (eassert (FLOATP(a)),(struct Lisp_Float *) XPNTR(a)) |
| 536 | 526 | ||
| 537 | /* Misc types. */ | 527 | /* Misc types. */ |
| 538 | 528 | ||
| @@ -554,13 +544,14 @@ extern size_t pure_size; | |||
| 554 | 544 | ||
| 555 | /* Pseudovector types. */ | 545 | /* Pseudovector types. */ |
| 556 | 546 | ||
| 557 | #define XPROCESS(a) (eassert (GC_PROCESSP(a)),(struct Lisp_Process *) XPNTR(a)) | 547 | #define XPROCESS(a) (eassert (PROCESSP(a)),(struct Lisp_Process *) XPNTR(a)) |
| 558 | #define XWINDOW(a) (eassert (GC_WINDOWP(a)),(struct window *) XPNTR(a)) | 548 | #define XWINDOW(a) (eassert (WINDOWP(a)),(struct window *) XPNTR(a)) |
| 559 | #define XTERMINAL(a) (eassert (GC_TERMINALP(a)),(struct terminal *) XPNTR(a)) | 549 | #define XTERMINAL(a) (eassert (TERMINALP(a)),(struct terminal *) XPNTR(a)) |
| 560 | #define XSUBR(a) (eassert (GC_SUBRP(a)),(struct Lisp_Subr *) XPNTR(a)) | 550 | #define XSUBR(a) (eassert (SUBRP(a)),(struct Lisp_Subr *) XPNTR(a)) |
| 561 | #define XBUFFER(a) (eassert (GC_BUFFERP(a)),(struct buffer *) XPNTR(a)) | 551 | #define XBUFFER(a) (eassert (BUFFERP(a)),(struct buffer *) XPNTR(a)) |
| 562 | #define XCHAR_TABLE(a) (eassert (GC_CHAR_TABLE_P (a)), (struct Lisp_Char_Table *) XPNTR(a)) | 552 | #define XCHAR_TABLE(a) (eassert (CHAR_TABLE_P (a)), (struct Lisp_Char_Table *) XPNTR(a)) |
| 563 | #define XBOOL_VECTOR(a) (eassert (GC_BOOL_VECTOR_P (a)), (struct Lisp_Bool_Vector *) XPNTR(a)) | 553 | #define XSUB_CHAR_TABLE(a) (eassert (SUB_CHAR_TABLE_P (a)), (struct Lisp_Sub_Char_Table *) XPNTR(a)) |
| 554 | #define XBOOL_VECTOR(a) (eassert (BOOL_VECTOR_P (a)), (struct Lisp_Bool_Vector *) XPNTR(a)) | ||
| 564 | 555 | ||
| 565 | /* Construct a Lisp_Object from a value or address. */ | 556 | /* Construct a Lisp_Object from a value or address. */ |
| 566 | 557 | ||
| @@ -593,6 +584,7 @@ extern size_t pure_size; | |||
| 593 | #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) | 584 | #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) |
| 594 | #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) | 585 | #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) |
| 595 | #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) | 586 | #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) |
| 587 | #define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE)) | ||
| 596 | 588 | ||
| 597 | /* Convenience macros for dealing with Lisp arrays. */ | 589 | /* Convenience macros for dealing with Lisp arrays. */ |
| 598 | 590 | ||
| @@ -773,49 +765,20 @@ struct Lisp_Vector | |||
| 773 | ((OFFSETOF(type, nonlispfield) - OFFSETOF(struct Lisp_Vector, contents[0])) \ | 765 | ((OFFSETOF(type, nonlispfield) - OFFSETOF(struct Lisp_Vector, contents[0])) \ |
| 774 | / sizeof (Lisp_Object)) | 766 | / sizeof (Lisp_Object)) |
| 775 | 767 | ||
| 776 | /* A char table is a kind of vectorlike, with contents are like a | 768 | /* A char-table is a kind of vectorlike, with contents are like a |
| 777 | vector but with a few other slots. For some purposes, it makes | 769 | vector but with a few other slots. For some purposes, it makes |
| 778 | sense to handle a chartable with type struct Lisp_Vector. An | 770 | sense to handle a char-table with type struct Lisp_Vector. An |
| 779 | element of a char table can be any Lisp objects, but if it is a sub | 771 | element of a char table can be any Lisp objects, but if it is a sub |
| 780 | char-table, we treat it a table that contains information of a | 772 | char-table, we treat it a table that contains information of a |
| 781 | group of characters of the same charsets or a specific character of | 773 | specific range of characters. A sub char-table has the same |
| 782 | a charset. A sub char-table has the same structure as a char table | 774 | structure as a vector. A sub char table appears only in an element |
| 783 | except for that the former omits several slots at the tail. A sub | 775 | of a char-table, and there's no way to access it directly from |
| 784 | char table appears only in an element of a char table, and there's | 776 | Emacs Lisp program. */ |
| 785 | no way to access it directly from Emacs Lisp program. */ | ||
| 786 | |||
| 787 | /* This is the number of slots that apply to characters or character | ||
| 788 | sets. The first 128 are for ASCII, the next 128 are for 8-bit | ||
| 789 | European characters, and the last 128 are for multibyte characters. | ||
| 790 | The first 256 are indexed by the code itself, but the last 128 are | ||
| 791 | indexed by (charset-id + 128). */ | ||
| 792 | #define CHAR_TABLE_ORDINARY_SLOTS 384 | ||
| 793 | |||
| 794 | /* These are the slot of the default values for single byte | ||
| 795 | characters. As 0x9A is never be a charset-id, it is safe to use | ||
| 796 | that slot for ASCII. 0x9E and 0x80 are charset-ids of | ||
| 797 | eight-bit-control and eight-bit-graphic respectively. */ | ||
| 798 | #define CHAR_TABLE_DEFAULT_SLOT_ASCII (0x9A + 128) | ||
| 799 | #define CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL (0x9E + 128) | ||
| 800 | #define CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC (0x80 + 128) | ||
| 801 | |||
| 802 | /* This is the number of slots that apply to characters of ASCII and | ||
| 803 | 8-bit Europeans only. */ | ||
| 804 | #define CHAR_TABLE_SINGLE_BYTE_SLOTS 256 | ||
| 805 | 777 | ||
| 806 | /* This is the number of slots that every char table must have. This | 778 | /* This is the number of slots that every char table must have. This |
| 807 | counts the ordinary slots and the top, defalt, parent, and purpose | 779 | counts the ordinary slots and the top, defalt, parent, and purpose |
| 808 | slots. */ | 780 | slots. */ |
| 809 | #define CHAR_TABLE_STANDARD_SLOTS (CHAR_TABLE_ORDINARY_SLOTS + 4) | 781 | #define CHAR_TABLE_STANDARD_SLOTS (VECSIZE (struct Lisp_Char_Table) - 1) |
| 810 | |||
| 811 | /* This is the number of slots that apply to position-code-1 and | ||
| 812 | position-code-2 of a multibyte character at the 2nd and 3rd level | ||
| 813 | sub char tables respectively. */ | ||
| 814 | #define SUB_CHAR_TABLE_ORDINARY_SLOTS 128 | ||
| 815 | |||
| 816 | /* This is the number of slots that every sub char table must have. | ||
| 817 | This counts the ordinary slots and the top and defalt slot. */ | ||
| 818 | #define SUB_CHAR_TABLE_STANDARD_SLOTS (SUB_CHAR_TABLE_ORDINARY_SLOTS + 2) | ||
| 819 | 782 | ||
| 820 | /* Return the number of "extra" slots in the char table CT. */ | 783 | /* Return the number of "extra" slots in the char table CT. */ |
| 821 | 784 | ||
| @@ -823,70 +786,92 @@ struct Lisp_Vector | |||
| 823 | (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) | 786 | (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) |
| 824 | 787 | ||
| 825 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 788 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII |
| 826 | and 8-bit Europeans characters. For these characters, do not check | 789 | characters. Do not check validity of CT. */ |
| 827 | validity of CT. Do not follow parent. */ | 790 | #define CHAR_TABLE_REF(CT, IDX) \ |
| 828 | #define CHAR_TABLE_REF(CT, IDX) \ | 791 | ((ASCII_CHAR_P (IDX) \ |
| 829 | ((IDX) >= 0 && (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 792 | && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \ |
| 830 | ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | 793 | && !NILP (XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX])) \ |
| 831 | ? XCHAR_TABLE (CT)->contents[IDX] \ | 794 | ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] \ |
| 832 | : XCHAR_TABLE (CT)->defalt) \ | 795 | : char_table_ref ((CT), (IDX))) |
| 833 | : Faref (CT, make_number (IDX))) | ||
| 834 | 796 | ||
| 835 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 797 | /* Almost equivalent to Faref (CT, IDX). However, if the result is |
| 836 | and 8-bit Europeans characters. However, if the result is nil, | 798 | not a character, return IDX. |
| 837 | return IDX. | ||
| 838 | 799 | ||
| 839 | For these characters, do not check validity of CT | 800 | For these characters, do not check validity of CT |
| 840 | and do not follow parent. */ | 801 | and do not follow parent. */ |
| 841 | #define CHAR_TABLE_TRANSLATE(CT, IDX) \ | 802 | #define CHAR_TABLE_TRANSLATE(CT, IDX) \ |
| 842 | ((IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 803 | char_table_translate (CT, IDX) |
| 843 | ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | ||
| 844 | ? XINT (XCHAR_TABLE (CT)->contents[IDX]) \ | ||
| 845 | : IDX) \ | ||
| 846 | : char_table_translate (CT, IDX)) | ||
| 847 | 804 | ||
| 848 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and | 805 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and |
| 849 | 8-bit Europeans characters. Do not check validity of CT. */ | 806 | 8-bit European characters. Do not check validity of CT. */ |
| 850 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ | 807 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ |
| 851 | do { \ | 808 | (((IDX) >= 0 && ASCII_CHAR_P (IDX) \ |
| 852 | if (XFASTINT (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS) \ | 809 | && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii)) \ |
| 853 | XCHAR_TABLE (CT)->contents[XFASTINT (IDX)] = VAL; \ | 810 | ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] = VAL \ |
| 854 | else \ | 811 | : char_table_set (CT, IDX, VAL)) |
| 855 | Faset (CT, IDX, VAL); \ | 812 | |
| 856 | } while (0) | 813 | #define CHARTAB_SIZE_BITS_0 6 |
| 814 | #define CHARTAB_SIZE_BITS_1 4 | ||
| 815 | #define CHARTAB_SIZE_BITS_2 5 | ||
| 816 | #define CHARTAB_SIZE_BITS_3 7 | ||
| 817 | |||
| 818 | extern const int chartab_size[4]; | ||
| 819 | |||
| 820 | struct Lisp_Sub_Char_Table; | ||
| 857 | 821 | ||
| 858 | struct Lisp_Char_Table | 822 | struct Lisp_Char_Table |
| 859 | { | 823 | { |
| 860 | /* This is the vector's size field, which also holds the | 824 | /* This is the vector's size field, which also holds the |
| 861 | pseudovector type information. It holds the size, too. | 825 | pseudovector type information. It holds the size, too. |
| 862 | The size counts the top, defalt, purpose, and parent slots. | 826 | The size counts the defalt, parent, purpose, ascii, |
| 863 | The last three are not counted if this is a sub char table. */ | 827 | contents, and extras slots. */ |
| 864 | EMACS_UINT size; | 828 | EMACS_UINT size; |
| 865 | struct Lisp_Vector *next; | 829 | struct Lisp_Vector *next; |
| 866 | /* This holds a flag to tell if this is a top level char table (t) | 830 | |
| 867 | or a sub char table (nil). */ | ||
| 868 | Lisp_Object top; | ||
| 869 | /* This holds a default value, | 831 | /* This holds a default value, |
| 870 | which is used whenever the value for a specific character is nil. */ | 832 | which is used whenever the value for a specific character is nil. */ |
| 871 | Lisp_Object defalt; | 833 | Lisp_Object defalt; |
| 872 | /* This holds an actual value of each element. A sub char table | ||
| 873 | has only SUB_CHAR_TABLE_ORDINARY_SLOTS number of elements. */ | ||
| 874 | Lisp_Object contents[CHAR_TABLE_ORDINARY_SLOTS]; | ||
| 875 | 834 | ||
| 876 | /* A sub char table doesn't has the following slots. */ | 835 | /* This points to another char table, which we inherit from when the |
| 877 | 836 | value for a specific character is nil. The `defalt' slot takes | |
| 878 | /* This points to another char table, which we inherit from | 837 | precedence over this. */ |
| 879 | when the value for a specific character is nil. | ||
| 880 | The `defalt' slot takes precedence over this. */ | ||
| 881 | Lisp_Object parent; | 838 | Lisp_Object parent; |
| 882 | /* This should be a symbol which says what kind of use | 839 | |
| 883 | this char-table is meant for. | 840 | /* This is a symbol which says what kind of use this char-table is |
| 884 | Typically now the values can be `syntax-table' and `display-table'. */ | 841 | meant for. */ |
| 885 | Lisp_Object purpose; | 842 | Lisp_Object purpose; |
| 886 | /* These hold additional data. */ | 843 | |
| 844 | /* The bottom sub char-table for characters of the range 0..127. It | ||
| 845 | is nil if none of ASCII character has a specific value. */ | ||
| 846 | Lisp_Object ascii; | ||
| 847 | |||
| 848 | Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)]; | ||
| 849 | |||
| 850 | /* These hold additional data. It is a vector. */ | ||
| 887 | Lisp_Object extras[1]; | 851 | Lisp_Object extras[1]; |
| 888 | }; | 852 | }; |
| 889 | 853 | ||
| 854 | struct Lisp_Sub_Char_Table | ||
| 855 | { | ||
| 856 | /* This is the vector's size field, which also holds the | ||
| 857 | pseudovector type information. It holds the size, too. */ | ||
| 858 | EMACS_INT size; | ||
| 859 | struct Lisp_Vector *next; | ||
| 860 | |||
| 861 | /* Depth of this sub char-table. It should be 1, 2, or 3. A sub | ||
| 862 | char-table of depth 1 contains 16 elments, and each element | ||
| 863 | covers 4096 (128*32) characters. A sub char-table of depth 2 | ||
| 864 | contains 32 elements, and each element covers 128 characters. A | ||
| 865 | sub char-table of depth 3 contains 128 elements, and each element | ||
| 866 | is for one character. */ | ||
| 867 | Lisp_Object depth; | ||
| 868 | |||
| 869 | /* Minimum character covered by the sub char-table. */ | ||
| 870 | Lisp_Object min_char; | ||
| 871 | |||
| 872 | Lisp_Object contents[1]; | ||
| 873 | }; | ||
| 874 | |||
| 890 | /* A boolvector is a kind of vectorlike, with contents are like a string. */ | 875 | /* A boolvector is a kind of vectorlike, with contents are like a string. */ |
| 891 | struct Lisp_Bool_Vector | 876 | struct Lisp_Bool_Vector |
| 892 | { | 877 | { |
| @@ -1095,7 +1080,6 @@ struct Lisp_Hash_Table | |||
| 1095 | (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE)) | 1080 | (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE)) |
| 1096 | 1081 | ||
| 1097 | #define HASH_TABLE_P(OBJ) PSEUDOVECTORP (OBJ, PVEC_HASH_TABLE) | 1082 | #define HASH_TABLE_P(OBJ) PSEUDOVECTORP (OBJ, PVEC_HASH_TABLE) |
| 1098 | #define GC_HASH_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_HASH_TABLE) | ||
| 1099 | 1083 | ||
| 1100 | #define CHECK_HASH_TABLE(x) \ | 1084 | #define CHECK_HASH_TABLE(x) \ |
| 1101 | CHECK_TYPE (HASH_TABLE_P (x), Qhash_table_p, x) | 1085 | CHECK_TYPE (HASH_TABLE_P (x), Qhash_table_p, x) |
| @@ -1154,7 +1138,11 @@ struct Lisp_Marker | |||
| 1154 | { | 1138 | { |
| 1155 | int type : 16; /* = Lisp_Misc_Marker */ | 1139 | int type : 16; /* = Lisp_Misc_Marker */ |
| 1156 | unsigned gcmarkbit : 1; | 1140 | unsigned gcmarkbit : 1; |
| 1157 | int spacer : 14; | 1141 | int spacer : 13; |
| 1142 | /* This flag is temporarily used in the functions | ||
| 1143 | decode/encode_coding_object to record that the marker position | ||
| 1144 | must be adjusted after the conversion. */ | ||
| 1145 | unsigned int need_adjustment : 1; | ||
| 1158 | /* 1 means normal insertion at the marker's position | 1146 | /* 1 means normal insertion at the marker's position |
| 1159 | leaves the marker after the inserted text. */ | 1147 | leaves the marker after the inserted text. */ |
| 1160 | unsigned int insertion_type : 1; | 1148 | unsigned int insertion_type : 1; |
| @@ -1417,9 +1405,9 @@ typedef unsigned char UCHAR; | |||
| 1417 | (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META) | 1405 | (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META) |
| 1418 | 1406 | ||
| 1419 | 1407 | ||
| 1420 | /* Actually, the current Emacs uses 19 bits for the character value | 1408 | /* Actually, the current Emacs uses 22 bits for the character value |
| 1421 | itself. */ | 1409 | itself. */ |
| 1422 | #define CHARACTERBITS 19 | 1410 | #define CHARACTERBITS 22 |
| 1423 | 1411 | ||
| 1424 | /* The maximum byte size consumed by push_key_description. | 1412 | /* The maximum byte size consumed by push_key_description. |
| 1425 | All callers should assure that at least this size of memory is | 1413 | All callers should assure that at least this size of memory is |
| @@ -1447,9 +1435,9 @@ typedef unsigned char UCHAR; | |||
| 1447 | #define GLYPH int | 1435 | #define GLYPH int |
| 1448 | 1436 | ||
| 1449 | /* Mask bits for face. */ | 1437 | /* Mask bits for face. */ |
| 1450 | #define GLYPH_MASK_FACE 0x7FF80000 | 1438 | #define GLYPH_MASK_FACE 0x7FC00000 |
| 1451 | /* Mask bits for character code. */ | 1439 | /* Mask bits for character code. */ |
| 1452 | #define GLYPH_MASK_CHAR 0x0007FFFF /* The lowest 19 bits */ | 1440 | #define GLYPH_MASK_CHAR 0x003FFFFF /* The lowest 22 bits */ |
| 1453 | 1441 | ||
| 1454 | /* The FAST macros assume that we already know we're in an X window. */ | 1442 | /* The FAST macros assume that we already know we're in an X window. */ |
| 1455 | 1443 | ||
| @@ -1476,46 +1464,28 @@ typedef unsigned char UCHAR; | |||
| 1476 | /* Data type checking */ | 1464 | /* Data type checking */ |
| 1477 | 1465 | ||
| 1478 | #define NILP(x) EQ (x, Qnil) | 1466 | #define NILP(x) EQ (x, Qnil) |
| 1479 | #define GC_NILP(x) GC_EQ (x, Qnil) | ||
| 1480 | 1467 | ||
| 1481 | #define NUMBERP(x) (INTEGERP (x) || FLOATP (x)) | 1468 | #define NUMBERP(x) (INTEGERP (x) || FLOATP (x)) |
| 1482 | #define GC_NUMBERP(x) (GC_INTEGERP (x) || GC_FLOATP (x)) | ||
| 1483 | #define NATNUMP(x) (INTEGERP (x) && XINT (x) >= 0) | 1469 | #define NATNUMP(x) (INTEGERP (x) && XINT (x) >= 0) |
| 1484 | #define GC_NATNUMP(x) (GC_INTEGERP (x) && XINT (x) >= 0) | ||
| 1485 | 1470 | ||
| 1486 | #define INTEGERP(x) (XTYPE ((x)) == Lisp_Int) | 1471 | #define INTEGERP(x) (XTYPE ((x)) == Lisp_Int) |
| 1487 | #define GC_INTEGERP(x) INTEGERP (x) | ||
| 1488 | #define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol) | 1472 | #define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol) |
| 1489 | #define GC_SYMBOLP(x) (XGCTYPE ((x)) == Lisp_Symbol) | ||
| 1490 | #define MISCP(x) (XTYPE ((x)) == Lisp_Misc) | 1473 | #define MISCP(x) (XTYPE ((x)) == Lisp_Misc) |
| 1491 | #define GC_MISCP(x) (XGCTYPE ((x)) == Lisp_Misc) | ||
| 1492 | #define VECTORLIKEP(x) (XTYPE ((x)) == Lisp_Vectorlike) | 1474 | #define VECTORLIKEP(x) (XTYPE ((x)) == Lisp_Vectorlike) |
| 1493 | #define GC_VECTORLIKEP(x) (XGCTYPE ((x)) == Lisp_Vectorlike) | ||
| 1494 | #define STRINGP(x) (XTYPE ((x)) == Lisp_String) | 1475 | #define STRINGP(x) (XTYPE ((x)) == Lisp_String) |
| 1495 | #define GC_STRINGP(x) (XGCTYPE ((x)) == Lisp_String) | ||
| 1496 | #define CONSP(x) (XTYPE ((x)) == Lisp_Cons) | 1476 | #define CONSP(x) (XTYPE ((x)) == Lisp_Cons) |
| 1497 | #define GC_CONSP(x) (XGCTYPE ((x)) == Lisp_Cons) | ||
| 1498 | 1477 | ||
| 1499 | #define FLOATP(x) (XTYPE ((x)) == Lisp_Float) | 1478 | #define FLOATP(x) (XTYPE ((x)) == Lisp_Float) |
| 1500 | #define GC_FLOATP(x) (XGCTYPE ((x)) == Lisp_Float) | 1479 | #define VECTORP(x) (VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) |
| 1501 | #define VECTORP(x) (VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) | ||
| 1502 | #define GC_VECTORP(x) (GC_VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) | ||
| 1503 | #define OVERLAYP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay) | 1480 | #define OVERLAYP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay) |
| 1504 | #define GC_OVERLAYP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay) | ||
| 1505 | #define MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker) | 1481 | #define MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker) |
| 1506 | #define GC_MARKERP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker) | ||
| 1507 | #define INTFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Intfwd) | 1482 | #define INTFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Intfwd) |
| 1508 | #define GC_INTFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Intfwd) | ||
| 1509 | #define BOOLFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Boolfwd) | 1483 | #define BOOLFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Boolfwd) |
| 1510 | #define GC_BOOLFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Boolfwd) | ||
| 1511 | #define OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Objfwd) | 1484 | #define OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Objfwd) |
| 1512 | #define GC_OBJFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Objfwd) | ||
| 1513 | #define BUFFER_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Objfwd) | 1485 | #define BUFFER_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Objfwd) |
| 1514 | #define GC_BUFFER_OBJFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Objfwd) | ||
| 1515 | #define BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Local_Value) | 1486 | #define BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Local_Value) |
| 1516 | #define GC_BUFFER_LOCAL_VALUEP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Local_Value) | 1487 | #define SOME_BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Some_Buffer_Local_Value) |
| 1517 | #define KBOARD_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Kboard_Objfwd) | 1488 | #define KBOARD_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Kboard_Objfwd) |
| 1518 | #define GC_KBOARD_OBJFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Kboard_Objfwd) | ||
| 1519 | #define SAVE_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value) | 1489 | #define SAVE_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value) |
| 1520 | 1490 | ||
| 1521 | 1491 | ||
| @@ -1525,36 +1495,18 @@ typedef unsigned char UCHAR; | |||
| 1525 | && (((XVECTOR (x)->size & (PSEUDOVECTOR_FLAG | (code)))) \ | 1495 | && (((XVECTOR (x)->size & (PSEUDOVECTOR_FLAG | (code)))) \ |
| 1526 | == (PSEUDOVECTOR_FLAG | (code)))) | 1496 | == (PSEUDOVECTOR_FLAG | (code)))) |
| 1527 | 1497 | ||
| 1528 | /* True if object X is a pseudovector whose code is CODE. | ||
| 1529 | This one works during GC. */ | ||
| 1530 | #define GC_PSEUDOVECTORP(x, code) \ | ||
| 1531 | (GC_VECTORLIKEP (x) \ | ||
| 1532 | && (((XVECTOR (x)->size & (PSEUDOVECTOR_FLAG | (code)))) \ | ||
| 1533 | == (PSEUDOVECTOR_FLAG | (code)))) | ||
| 1534 | |||
| 1535 | /* Test for specific pseudovector types. */ | 1498 | /* Test for specific pseudovector types. */ |
| 1536 | #define WINDOW_CONFIGURATIONP(x) PSEUDOVECTORP (x, PVEC_WINDOW_CONFIGURATION) | 1499 | #define WINDOW_CONFIGURATIONP(x) PSEUDOVECTORP (x, PVEC_WINDOW_CONFIGURATION) |
| 1537 | #define GC_WINDOW_CONFIGURATIONP(x) GC_PSEUDOVECTORP (x, PVEC_WINDOW_CONFIGURATION) | ||
| 1538 | #define PROCESSP(x) PSEUDOVECTORP (x, PVEC_PROCESS) | 1500 | #define PROCESSP(x) PSEUDOVECTORP (x, PVEC_PROCESS) |
| 1539 | #define GC_PROCESSP(x) GC_PSEUDOVECTORP (x, PVEC_PROCESS) | ||
| 1540 | #define WINDOWP(x) PSEUDOVECTORP (x, PVEC_WINDOW) | 1501 | #define WINDOWP(x) PSEUDOVECTORP (x, PVEC_WINDOW) |
| 1541 | #define GC_WINDOWP(x) GC_PSEUDOVECTORP (x, PVEC_WINDOW) | ||
| 1542 | #define TERMINALP(x) PSEUDOVECTORP (x, PVEC_TERMINAL) | 1502 | #define TERMINALP(x) PSEUDOVECTORP (x, PVEC_TERMINAL) |
| 1543 | #define GC_TERMINALP(x) GC_PSEUDOVECTORP (x, PVEC_TERMINAL) | ||
| 1544 | #define SUBRP(x) PSEUDOVECTORP (x, PVEC_SUBR) | 1503 | #define SUBRP(x) PSEUDOVECTORP (x, PVEC_SUBR) |
| 1545 | #define GC_SUBRP(x) GC_PSEUDOVECTORP (x, PVEC_SUBR) | ||
| 1546 | #define COMPILEDP(x) PSEUDOVECTORP (x, PVEC_COMPILED) | 1504 | #define COMPILEDP(x) PSEUDOVECTORP (x, PVEC_COMPILED) |
| 1547 | #define GC_COMPILEDP(x) GC_PSEUDOVECTORP (x, PVEC_COMPILED) | ||
| 1548 | #define BUFFERP(x) PSEUDOVECTORP (x, PVEC_BUFFER) | 1505 | #define BUFFERP(x) PSEUDOVECTORP (x, PVEC_BUFFER) |
| 1549 | #define GC_BUFFERP(x) GC_PSEUDOVECTORP (x, PVEC_BUFFER) | ||
| 1550 | #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE) | 1506 | #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE) |
| 1551 | #define GC_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_CHAR_TABLE) | 1507 | #define SUB_CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_SUB_CHAR_TABLE) |
| 1552 | #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) | 1508 | #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) |
| 1553 | #define GC_BOOL_VECTOR_P(x) GC_PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) | ||
| 1554 | #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME) | 1509 | #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME) |
| 1555 | #define GC_FRAMEP(x) GC_PSEUDOVECTORP (x, PVEC_FRAME) | ||
| 1556 | |||
| 1557 | #define SUB_CHAR_TABLE_P(x) (CHAR_TABLE_P (x) && NILP (XCHAR_TABLE (x)->top)) | ||
| 1558 | 1510 | ||
| 1559 | /* Test for image (image . spec) */ | 1511 | /* Test for image (image . spec) */ |
| 1560 | #define IMAGEP(x) (CONSP (x) && EQ (XCAR (x), Qimage)) | 1512 | #define IMAGEP(x) (CONSP (x) && EQ (XCAR (x), Qimage)) |
| @@ -1564,8 +1516,6 @@ typedef unsigned char UCHAR; | |||
| 1564 | #define ARRAYP(x) \ | 1516 | #define ARRAYP(x) \ |
| 1565 | (VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x)) | 1517 | (VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x)) |
| 1566 | 1518 | ||
| 1567 | #define GC_EQ(x, y) EQ (x, y) | ||
| 1568 | |||
| 1569 | #define CHECK_LIST(x) \ | 1519 | #define CHECK_LIST(x) \ |
| 1570 | CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x) | 1520 | CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x) |
| 1571 | 1521 | ||
| @@ -1671,6 +1621,20 @@ typedef unsigned char UCHAR; | |||
| 1671 | XSETCDR ((x), tmp); \ | 1621 | XSETCDR ((x), tmp); \ |
| 1672 | } while (0) | 1622 | } while (0) |
| 1673 | 1623 | ||
| 1624 | #define CHECK_NATNUM_CAR(x) \ | ||
| 1625 | do { \ | ||
| 1626 | Lisp_Object tmp = XCAR (x); \ | ||
| 1627 | CHECK_NATNUM (tmp); \ | ||
| 1628 | XSETCAR ((x), tmp); \ | ||
| 1629 | } while (0) | ||
| 1630 | |||
| 1631 | #define CHECK_NATNUM_CDR(x) \ | ||
| 1632 | do { \ | ||
| 1633 | Lisp_Object tmp = XCDR (x); \ | ||
| 1634 | CHECK_NATNUM (tmp); \ | ||
| 1635 | XSETCDR ((x), tmp); \ | ||
| 1636 | } while (0) | ||
| 1637 | |||
| 1674 | /* Cast pointers to this type to compare them. Some machines want int. */ | 1638 | /* Cast pointers to this type to compare them. Some machines want int. */ |
| 1675 | #ifndef PNTR_COMPARISON_TYPE | 1639 | #ifndef PNTR_COMPARISON_TYPE |
| 1676 | #define PNTR_COMPARISON_TYPE EMACS_UINT | 1640 | #define PNTR_COMPARISON_TYPE EMACS_UINT |
| @@ -2305,34 +2269,44 @@ extern void keys_of_cmds P_ ((void)); | |||
| 2305 | 2269 | ||
| 2306 | /* Defined in coding.c */ | 2270 | /* Defined in coding.c */ |
| 2307 | EXFUN (Fcoding_system_p, 1); | 2271 | EXFUN (Fcoding_system_p, 1); |
| 2272 | EXFUN (Fcoding_system_base, 1); | ||
| 2273 | EXFUN (Fcoding_system_eol_type, 1); | ||
| 2274 | EXFUN (Fcheck_coding_system, 1); | ||
| 2308 | EXFUN (Fcheck_coding_system, 1); | 2275 | EXFUN (Fcheck_coding_system, 1); |
| 2309 | EXFUN (Fread_coding_system, 2); | 2276 | EXFUN (Fread_coding_system, 2); |
| 2310 | EXFUN (Fread_non_nil_coding_system, 1); | 2277 | EXFUN (Fread_non_nil_coding_system, 1); |
| 2311 | EXFUN (Ffind_operation_coding_system, MANY); | 2278 | EXFUN (Ffind_operation_coding_system, MANY); |
| 2312 | EXFUN (Fupdate_coding_systems_internal, 0); | 2279 | EXFUN (Fupdate_coding_systems_internal, 0); |
| 2313 | EXFUN (Fencode_coding_string, 3); | 2280 | EXFUN (Fencode_coding_string, 4); |
| 2314 | EXFUN (Fdecode_coding_string, 3); | 2281 | EXFUN (Fdecode_coding_string, 4); |
| 2315 | extern Lisp_Object detect_coding_system P_ ((const unsigned char *, int, int, | 2282 | extern Lisp_Object detect_coding_system P_ ((const unsigned char *, int, |
| 2316 | int)); | 2283 | int, int, int, Lisp_Object)); |
| 2317 | extern void init_coding P_ ((void)); | 2284 | extern void init_coding P_ ((void)); |
| 2318 | extern void init_coding_once P_ ((void)); | 2285 | extern void init_coding_once P_ ((void)); |
| 2319 | extern void syms_of_coding P_ ((void)); | 2286 | extern void syms_of_coding P_ ((void)); |
| 2320 | extern Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object, | 2287 | |
| 2321 | int)); | 2288 | /* Defined in character.c */ |
| 2289 | extern void init_character_once P_ ((void)); | ||
| 2290 | extern void syms_of_character P_ ((void)); | ||
| 2291 | EXFUN (Funibyte_char_to_multibyte, 1); | ||
| 2322 | 2292 | ||
| 2323 | /* Defined in charset.c */ | 2293 | /* Defined in charset.c */ |
| 2324 | extern EMACS_INT nonascii_insert_offset; | ||
| 2325 | extern Lisp_Object Vnonascii_translation_table; | ||
| 2326 | EXFUN (Fchar_bytes, 1); | 2294 | EXFUN (Fchar_bytes, 1); |
| 2327 | EXFUN (Fchar_width, 1); | 2295 | EXFUN (Fchar_width, 1); |
| 2328 | EXFUN (Fstring, MANY); | 2296 | EXFUN (Fstring, MANY); |
| 2329 | extern int chars_in_text P_ ((const unsigned char *, int)); | 2297 | extern int chars_in_text P_ ((const unsigned char *, int)); |
| 2330 | extern int multibyte_chars_in_text P_ ((const unsigned char *, int)); | 2298 | extern int multibyte_chars_in_text P_ ((const unsigned char *, int)); |
| 2331 | extern int unibyte_char_to_multibyte P_ ((int)); | ||
| 2332 | extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); | 2299 | extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); |
| 2300 | extern int multibyte_char_to_unibyte_safe P_ ((int)); | ||
| 2333 | extern Lisp_Object Qcharset; | 2301 | extern Lisp_Object Qcharset; |
| 2302 | extern void init_charset P_ ((void)); | ||
| 2334 | extern void init_charset_once P_ ((void)); | 2303 | extern void init_charset_once P_ ((void)); |
| 2335 | extern void syms_of_charset P_ ((void)); | 2304 | extern void syms_of_charset P_ ((void)); |
| 2305 | /* Structure forward declarations. */ | ||
| 2306 | struct charset; | ||
| 2307 | |||
| 2308 | /* Defined in composite.c */ | ||
| 2309 | extern void syms_of_composite P_ ((void)); | ||
| 2336 | 2310 | ||
| 2337 | /* Defined in syntax.c */ | 2311 | /* Defined in syntax.c */ |
| 2338 | EXFUN (Fforward_word, 1); | 2312 | EXFUN (Fforward_word, 1); |
| @@ -2350,9 +2324,8 @@ extern int next_almost_prime P_ ((int)); | |||
| 2350 | extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); | 2324 | extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); |
| 2351 | extern void sweep_weak_hash_tables P_ ((void)); | 2325 | extern void sweep_weak_hash_tables P_ ((void)); |
| 2352 | extern Lisp_Object Qstring_lessp; | 2326 | extern Lisp_Object Qstring_lessp; |
| 2353 | EXFUN (Foptimize_char_table, 1); | ||
| 2354 | extern Lisp_Object Vfeatures; | 2327 | extern Lisp_Object Vfeatures; |
| 2355 | extern Lisp_Object QCtest, QCweakness, Qequal; | 2328 | extern Lisp_Object QCtest, QCweakness, Qequal, Qeq; |
| 2356 | unsigned sxhash P_ ((Lisp_Object, int)); | 2329 | unsigned sxhash P_ ((Lisp_Object, int)); |
| 2357 | Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, | 2330 | Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, |
| 2358 | Lisp_Object, Lisp_Object, Lisp_Object, | 2331 | Lisp_Object, Lisp_Object, Lisp_Object, |
| @@ -2367,6 +2340,7 @@ void remove_hash_entry P_ ((struct Lisp_Hash_Table *, int)); | |||
| 2367 | extern void init_fns P_ ((void)); | 2340 | extern void init_fns P_ ((void)); |
| 2368 | EXFUN (Fsxhash, 1); | 2341 | EXFUN (Fsxhash, 1); |
| 2369 | EXFUN (Fmake_hash_table, MANY); | 2342 | EXFUN (Fmake_hash_table, MANY); |
| 2343 | EXFUN (Fmakehash, 1); | ||
| 2370 | EXFUN (Fcopy_hash_table, 1); | 2344 | EXFUN (Fcopy_hash_table, 1); |
| 2371 | EXFUN (Fhash_table_count, 1); | 2345 | EXFUN (Fhash_table_count, 1); |
| 2372 | EXFUN (Fhash_table_rehash_size, 1); | 2346 | EXFUN (Fhash_table_rehash_size, 1); |
| @@ -2425,6 +2399,7 @@ extern Lisp_Object concat2 P_ ((Lisp_Object, Lisp_Object)); | |||
| 2425 | extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); | 2399 | extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); |
| 2426 | extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object)); | 2400 | extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object)); |
| 2427 | extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object)); | 2401 | extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object)); |
| 2402 | extern Lisp_Object assoc_no_quit P_ ((Lisp_Object, Lisp_Object)); | ||
| 2428 | extern void clear_string_char_byte_cache P_ ((void)); | 2403 | extern void clear_string_char_byte_cache P_ ((void)); |
| 2429 | extern int string_char_to_byte P_ ((Lisp_Object, int)); | 2404 | extern int string_char_to_byte P_ ((Lisp_Object, int)); |
| 2430 | extern int string_byte_to_char P_ ((Lisp_Object, int)); | 2405 | extern int string_byte_to_char P_ ((Lisp_Object, int)); |
| @@ -2435,18 +2410,10 @@ EXFUN (Fcopy_alist, 1); | |||
| 2435 | EXFUN (Fplist_get, 2); | 2410 | EXFUN (Fplist_get, 2); |
| 2436 | EXFUN (Fplist_put, 3); | 2411 | EXFUN (Fplist_put, 3); |
| 2437 | EXFUN (Fplist_member, 2); | 2412 | EXFUN (Fplist_member, 2); |
| 2438 | EXFUN (Fset_char_table_parent, 2); | ||
| 2439 | EXFUN (Fchar_table_extra_slot, 2); | ||
| 2440 | EXFUN (Fset_char_table_extra_slot, 3); | ||
| 2441 | EXFUN (Frassoc, 2); | 2413 | EXFUN (Frassoc, 2); |
| 2442 | EXFUN (Fstring_equal, 2); | 2414 | EXFUN (Fstring_equal, 2); |
| 2443 | EXFUN (Fcompare_strings, 7); | 2415 | EXFUN (Fcompare_strings, 7); |
| 2444 | EXFUN (Fstring_lessp, 2); | 2416 | EXFUN (Fstring_lessp, 2); |
| 2445 | extern int char_table_translate P_ ((Lisp_Object, int)); | ||
| 2446 | extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, Lisp_Object), | ||
| 2447 | Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, int, | ||
| 2448 | int *)); | ||
| 2449 | extern Lisp_Object char_table_ref_and_index P_ ((Lisp_Object, int, int *)); | ||
| 2450 | extern void syms_of_fns P_ ((void)); | 2417 | extern void syms_of_fns P_ ((void)); |
| 2451 | 2418 | ||
| 2452 | /* Defined in floatfns.c */ | 2419 | /* Defined in floatfns.c */ |
| @@ -2479,6 +2446,7 @@ extern void insert P_ ((const unsigned char *, int)); | |||
| 2479 | extern void insert_and_inherit P_ ((const unsigned char *, int)); | 2446 | extern void insert_and_inherit P_ ((const unsigned char *, int)); |
| 2480 | extern void insert_1 P_ ((const unsigned char *, int, int, int, int)); | 2447 | extern void insert_1 P_ ((const unsigned char *, int, int, int, int)); |
| 2481 | extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int)); | 2448 | extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int)); |
| 2449 | extern void insert_from_gap P_ ((int, int)); | ||
| 2482 | extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); | 2450 | extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); |
| 2483 | extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); | 2451 | extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); |
| 2484 | extern void insert_char P_ ((int)); | 2452 | extern void insert_char P_ ((int)); |
| @@ -2605,8 +2573,6 @@ extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); | |||
| 2605 | EXFUN (Fgarbage_collect, 0); | 2573 | EXFUN (Fgarbage_collect, 0); |
| 2606 | EXFUN (Fmake_byte_code, MANY); | 2574 | EXFUN (Fmake_byte_code, MANY); |
| 2607 | EXFUN (Fmake_bool_vector, 2); | 2575 | EXFUN (Fmake_bool_vector, 2); |
| 2608 | EXFUN (Fmake_char_table, 2); | ||
| 2609 | extern Lisp_Object make_sub_char_table P_ ((Lisp_Object)); | ||
| 2610 | extern Lisp_Object Qchar_table_extra_slots; | 2576 | extern Lisp_Object Qchar_table_extra_slots; |
| 2611 | extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); | 2577 | extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); |
| 2612 | extern struct Lisp_Vector *allocate_pseudovector P_ ((int memlen, int lisplen, EMACS_INT tag)); | 2578 | extern struct Lisp_Vector *allocate_pseudovector P_ ((int memlen, int lisplen, EMACS_INT tag)); |
| @@ -2634,6 +2600,31 @@ extern void syms_of_alloc P_ ((void)); | |||
| 2634 | extern struct buffer * allocate_buffer P_ ((void)); | 2600 | extern struct buffer * allocate_buffer P_ ((void)); |
| 2635 | extern int valid_lisp_object_p P_ ((Lisp_Object)); | 2601 | extern int valid_lisp_object_p P_ ((Lisp_Object)); |
| 2636 | 2602 | ||
| 2603 | /* Defined in chartab.c */ | ||
| 2604 | EXFUN (Fmake_char_table, 2); | ||
| 2605 | EXFUN (Fchar_table_parent, 1); | ||
| 2606 | EXFUN (Fset_char_table_parent, 2); | ||
| 2607 | EXFUN (Fchar_table_extra_slot, 2); | ||
| 2608 | EXFUN (Fset_char_table_extra_slot, 3); | ||
| 2609 | EXFUN (Fchar_table_range, 2); | ||
| 2610 | EXFUN (Fset_char_table_range, 3); | ||
| 2611 | EXFUN (Fset_char_table_default, 3); | ||
| 2612 | EXFUN (Foptimize_char_table, 1); | ||
| 2613 | EXFUN (Fmap_char_table, 2); | ||
| 2614 | extern Lisp_Object copy_char_table P_ ((Lisp_Object)); | ||
| 2615 | extern Lisp_Object sub_char_table_ref P_ ((Lisp_Object, int)); | ||
| 2616 | extern Lisp_Object char_table_ref P_ ((Lisp_Object, int)); | ||
| 2617 | extern Lisp_Object char_table_ref_and_range P_ ((Lisp_Object, int, | ||
| 2618 | int *, int *)); | ||
| 2619 | extern Lisp_Object char_table_set P_ ((Lisp_Object, int, Lisp_Object)); | ||
| 2620 | extern Lisp_Object char_table_set_range P_ ((Lisp_Object, int, int, | ||
| 2621 | Lisp_Object)); | ||
| 2622 | extern int char_table_translate P_ ((Lisp_Object, int)); | ||
| 2623 | extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, | ||
| 2624 | Lisp_Object), | ||
| 2625 | Lisp_Object, Lisp_Object, Lisp_Object)); | ||
| 2626 | extern void syms_of_chartab P_ ((void)); | ||
| 2627 | |||
| 2637 | /* Defined in print.c */ | 2628 | /* Defined in print.c */ |
| 2638 | extern Lisp_Object Vprin1_to_string_buffer; | 2629 | extern Lisp_Object Vprin1_to_string_buffer; |
| 2639 | extern void debug_print P_ ((Lisp_Object)); | 2630 | extern void debug_print P_ ((Lisp_Object)); |
| @@ -2847,6 +2838,7 @@ extern int overlay_touches_p P_ ((int)); | |||
| 2847 | extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; | 2838 | extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; |
| 2848 | EXFUN (Fget_buffer, 1); | 2839 | EXFUN (Fget_buffer, 1); |
| 2849 | EXFUN (Fget_buffer_create, 1); | 2840 | EXFUN (Fget_buffer_create, 1); |
| 2841 | EXFUN (Fgenerate_new_buffer_name, 2); | ||
| 2850 | EXFUN (Fset_buffer, 1); | 2842 | EXFUN (Fset_buffer, 1); |
| 2851 | EXFUN (set_buffer_if_live, 1); | 2843 | EXFUN (set_buffer_if_live, 1); |
| 2852 | EXFUN (Fbarf_if_buffer_read_only, 0); | 2844 | EXFUN (Fbarf_if_buffer_read_only, 0); |
| @@ -3190,6 +3182,7 @@ extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; | |||
| 3190 | EXFUN (Fnext_single_property_change, 4); | 3182 | EXFUN (Fnext_single_property_change, 4); |
| 3191 | EXFUN (Fnext_single_char_property_change, 4); | 3183 | EXFUN (Fnext_single_char_property_change, 4); |
| 3192 | EXFUN (Fprevious_single_property_change, 4); | 3184 | EXFUN (Fprevious_single_property_change, 4); |
| 3185 | EXFUN (Fget_text_property, 3); | ||
| 3193 | EXFUN (Fput_text_property, 5); | 3186 | EXFUN (Fput_text_property, 5); |
| 3194 | EXFUN (Fget_text_property, 3); | 3187 | EXFUN (Fget_text_property, 3); |
| 3195 | EXFUN (Fprevious_char_property_change, 2); | 3188 | EXFUN (Fprevious_char_property_change, 2); |
| @@ -3251,6 +3244,7 @@ extern void init_sound P_ ((void)); | |||
| 3251 | 3244 | ||
| 3252 | /* Defined in category.c */ | 3245 | /* Defined in category.c */ |
| 3253 | extern void init_category_once P_ ((void)); | 3246 | extern void init_category_once P_ ((void)); |
| 3247 | extern Lisp_Object char_category_set P_ ((int)); | ||
| 3254 | extern void syms_of_category P_ ((void)); | 3248 | extern void syms_of_category P_ ((void)); |
| 3255 | 3249 | ||
| 3256 | /* Defined in ccl.c */ | 3250 | /* Defined in ccl.c */ |
| @@ -3270,7 +3264,8 @@ extern void syms_of_terminal P_ ((void)); | |||
| 3270 | #ifdef HAVE_WINDOW_SYSTEM | 3264 | #ifdef HAVE_WINDOW_SYSTEM |
| 3271 | /* Defined in fontset.c */ | 3265 | /* Defined in fontset.c */ |
| 3272 | extern void syms_of_fontset P_ ((void)); | 3266 | extern void syms_of_fontset P_ ((void)); |
| 3273 | EXFUN (Fset_fontset_font, 4); | 3267 | EXFUN (Fset_fontset_font, 5); |
| 3268 | EXFUN (Fnew_fontset, 2); | ||
| 3274 | 3269 | ||
| 3275 | /* Defined in xfns.c, w32fns.c, or macfns.c */ | 3270 | /* Defined in xfns.c, w32fns.c, or macfns.c */ |
| 3276 | EXFUN (Fxw_display_color_p, 1); | 3271 | EXFUN (Fxw_display_color_p, 1); |