aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h339
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
818extern const int chartab_size[4];
819
820struct Lisp_Sub_Char_Table;
857 821
858struct Lisp_Char_Table 822struct 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
854struct 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. */
891struct Lisp_Bool_Vector 876struct 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 */
2307EXFUN (Fcoding_system_p, 1); 2271EXFUN (Fcoding_system_p, 1);
2272EXFUN (Fcoding_system_base, 1);
2273EXFUN (Fcoding_system_eol_type, 1);
2274EXFUN (Fcheck_coding_system, 1);
2308EXFUN (Fcheck_coding_system, 1); 2275EXFUN (Fcheck_coding_system, 1);
2309EXFUN (Fread_coding_system, 2); 2276EXFUN (Fread_coding_system, 2);
2310EXFUN (Fread_non_nil_coding_system, 1); 2277EXFUN (Fread_non_nil_coding_system, 1);
2311EXFUN (Ffind_operation_coding_system, MANY); 2278EXFUN (Ffind_operation_coding_system, MANY);
2312EXFUN (Fupdate_coding_systems_internal, 0); 2279EXFUN (Fupdate_coding_systems_internal, 0);
2313EXFUN (Fencode_coding_string, 3); 2280EXFUN (Fencode_coding_string, 4);
2314EXFUN (Fdecode_coding_string, 3); 2281EXFUN (Fdecode_coding_string, 4);
2315extern Lisp_Object detect_coding_system P_ ((const unsigned char *, int, int, 2282extern Lisp_Object detect_coding_system P_ ((const unsigned char *, int,
2316 int)); 2283 int, int, int, Lisp_Object));
2317extern void init_coding P_ ((void)); 2284extern void init_coding P_ ((void));
2318extern void init_coding_once P_ ((void)); 2285extern void init_coding_once P_ ((void));
2319extern void syms_of_coding P_ ((void)); 2286extern void syms_of_coding P_ ((void));
2320extern Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object, 2287
2321 int)); 2288/* Defined in character.c */
2289extern void init_character_once P_ ((void));
2290extern void syms_of_character P_ ((void));
2291EXFUN (Funibyte_char_to_multibyte, 1);
2322 2292
2323/* Defined in charset.c */ 2293/* Defined in charset.c */
2324extern EMACS_INT nonascii_insert_offset;
2325extern Lisp_Object Vnonascii_translation_table;
2326EXFUN (Fchar_bytes, 1); 2294EXFUN (Fchar_bytes, 1);
2327EXFUN (Fchar_width, 1); 2295EXFUN (Fchar_width, 1);
2328EXFUN (Fstring, MANY); 2296EXFUN (Fstring, MANY);
2329extern int chars_in_text P_ ((const unsigned char *, int)); 2297extern int chars_in_text P_ ((const unsigned char *, int));
2330extern int multibyte_chars_in_text P_ ((const unsigned char *, int)); 2298extern int multibyte_chars_in_text P_ ((const unsigned char *, int));
2331extern int unibyte_char_to_multibyte P_ ((int));
2332extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); 2299extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object));
2300extern int multibyte_char_to_unibyte_safe P_ ((int));
2333extern Lisp_Object Qcharset; 2301extern Lisp_Object Qcharset;
2302extern void init_charset P_ ((void));
2334extern void init_charset_once P_ ((void)); 2303extern void init_charset_once P_ ((void));
2335extern void syms_of_charset P_ ((void)); 2304extern void syms_of_charset P_ ((void));
2305/* Structure forward declarations. */
2306struct charset;
2307
2308/* Defined in composite.c */
2309extern void syms_of_composite P_ ((void));
2336 2310
2337/* Defined in syntax.c */ 2311/* Defined in syntax.c */
2338EXFUN (Fforward_word, 1); 2312EXFUN (Fforward_word, 1);
@@ -2350,9 +2324,8 @@ extern int next_almost_prime P_ ((int));
2350extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); 2324extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object));
2351extern void sweep_weak_hash_tables P_ ((void)); 2325extern void sweep_weak_hash_tables P_ ((void));
2352extern Lisp_Object Qstring_lessp; 2326extern Lisp_Object Qstring_lessp;
2353EXFUN (Foptimize_char_table, 1);
2354extern Lisp_Object Vfeatures; 2327extern Lisp_Object Vfeatures;
2355extern Lisp_Object QCtest, QCweakness, Qequal; 2328extern Lisp_Object QCtest, QCweakness, Qequal, Qeq;
2356unsigned sxhash P_ ((Lisp_Object, int)); 2329unsigned sxhash P_ ((Lisp_Object, int));
2357Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, 2330Lisp_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));
2367extern void init_fns P_ ((void)); 2340extern void init_fns P_ ((void));
2368EXFUN (Fsxhash, 1); 2341EXFUN (Fsxhash, 1);
2369EXFUN (Fmake_hash_table, MANY); 2342EXFUN (Fmake_hash_table, MANY);
2343EXFUN (Fmakehash, 1);
2370EXFUN (Fcopy_hash_table, 1); 2344EXFUN (Fcopy_hash_table, 1);
2371EXFUN (Fhash_table_count, 1); 2345EXFUN (Fhash_table_count, 1);
2372EXFUN (Fhash_table_rehash_size, 1); 2346EXFUN (Fhash_table_rehash_size, 1);
@@ -2425,6 +2399,7 @@ extern Lisp_Object concat2 P_ ((Lisp_Object, Lisp_Object));
2425extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); 2399extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
2426extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object)); 2400extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object));
2427extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object)); 2401extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object));
2402extern Lisp_Object assoc_no_quit P_ ((Lisp_Object, Lisp_Object));
2428extern void clear_string_char_byte_cache P_ ((void)); 2403extern void clear_string_char_byte_cache P_ ((void));
2429extern int string_char_to_byte P_ ((Lisp_Object, int)); 2404extern int string_char_to_byte P_ ((Lisp_Object, int));
2430extern int string_byte_to_char P_ ((Lisp_Object, int)); 2405extern int string_byte_to_char P_ ((Lisp_Object, int));
@@ -2435,18 +2410,10 @@ EXFUN (Fcopy_alist, 1);
2435EXFUN (Fplist_get, 2); 2410EXFUN (Fplist_get, 2);
2436EXFUN (Fplist_put, 3); 2411EXFUN (Fplist_put, 3);
2437EXFUN (Fplist_member, 2); 2412EXFUN (Fplist_member, 2);
2438EXFUN (Fset_char_table_parent, 2);
2439EXFUN (Fchar_table_extra_slot, 2);
2440EXFUN (Fset_char_table_extra_slot, 3);
2441EXFUN (Frassoc, 2); 2413EXFUN (Frassoc, 2);
2442EXFUN (Fstring_equal, 2); 2414EXFUN (Fstring_equal, 2);
2443EXFUN (Fcompare_strings, 7); 2415EXFUN (Fcompare_strings, 7);
2444EXFUN (Fstring_lessp, 2); 2416EXFUN (Fstring_lessp, 2);
2445extern int char_table_translate P_ ((Lisp_Object, int));
2446extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, Lisp_Object),
2447 Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, int,
2448 int *));
2449extern Lisp_Object char_table_ref_and_index P_ ((Lisp_Object, int, int *));
2450extern void syms_of_fns P_ ((void)); 2417extern 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));
2479extern void insert_and_inherit P_ ((const unsigned char *, int)); 2446extern void insert_and_inherit P_ ((const unsigned char *, int));
2480extern void insert_1 P_ ((const unsigned char *, int, int, int, int)); 2447extern void insert_1 P_ ((const unsigned char *, int, int, int, int));
2481extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int)); 2448extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int));
2449extern void insert_from_gap P_ ((int, int));
2482extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); 2450extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int));
2483extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); 2451extern void insert_from_buffer P_ ((struct buffer *, int, int, int));
2484extern void insert_char P_ ((int)); 2452extern void insert_char P_ ((int));
@@ -2605,8 +2573,6 @@ extern Lisp_Object make_pure_vector P_ ((EMACS_INT));
2605EXFUN (Fgarbage_collect, 0); 2573EXFUN (Fgarbage_collect, 0);
2606EXFUN (Fmake_byte_code, MANY); 2574EXFUN (Fmake_byte_code, MANY);
2607EXFUN (Fmake_bool_vector, 2); 2575EXFUN (Fmake_bool_vector, 2);
2608EXFUN (Fmake_char_table, 2);
2609extern Lisp_Object make_sub_char_table P_ ((Lisp_Object));
2610extern Lisp_Object Qchar_table_extra_slots; 2576extern Lisp_Object Qchar_table_extra_slots;
2611extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); 2577extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT));
2612extern struct Lisp_Vector *allocate_pseudovector P_ ((int memlen, int lisplen, EMACS_INT tag)); 2578extern struct Lisp_Vector *allocate_pseudovector P_ ((int memlen, int lisplen, EMACS_INT tag));
@@ -2634,6 +2600,31 @@ extern void syms_of_alloc P_ ((void));
2634extern struct buffer * allocate_buffer P_ ((void)); 2600extern struct buffer * allocate_buffer P_ ((void));
2635extern int valid_lisp_object_p P_ ((Lisp_Object)); 2601extern int valid_lisp_object_p P_ ((Lisp_Object));
2636 2602
2603/* Defined in chartab.c */
2604EXFUN (Fmake_char_table, 2);
2605EXFUN (Fchar_table_parent, 1);
2606EXFUN (Fset_char_table_parent, 2);
2607EXFUN (Fchar_table_extra_slot, 2);
2608EXFUN (Fset_char_table_extra_slot, 3);
2609EXFUN (Fchar_table_range, 2);
2610EXFUN (Fset_char_table_range, 3);
2611EXFUN (Fset_char_table_default, 3);
2612EXFUN (Foptimize_char_table, 1);
2613EXFUN (Fmap_char_table, 2);
2614extern Lisp_Object copy_char_table P_ ((Lisp_Object));
2615extern Lisp_Object sub_char_table_ref P_ ((Lisp_Object, int));
2616extern Lisp_Object char_table_ref P_ ((Lisp_Object, int));
2617extern Lisp_Object char_table_ref_and_range P_ ((Lisp_Object, int,
2618 int *, int *));
2619extern Lisp_Object char_table_set P_ ((Lisp_Object, int, Lisp_Object));
2620extern Lisp_Object char_table_set_range P_ ((Lisp_Object, int, int,
2621 Lisp_Object));
2622extern int char_table_translate P_ ((Lisp_Object, int));
2623extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object,
2624 Lisp_Object),
2625 Lisp_Object, Lisp_Object, Lisp_Object));
2626extern void syms_of_chartab P_ ((void));
2627
2637/* Defined in print.c */ 2628/* Defined in print.c */
2638extern Lisp_Object Vprin1_to_string_buffer; 2629extern Lisp_Object Vprin1_to_string_buffer;
2639extern void debug_print P_ ((Lisp_Object)); 2630extern void debug_print P_ ((Lisp_Object));
@@ -2847,6 +2838,7 @@ extern int overlay_touches_p P_ ((int));
2847extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; 2838extern Lisp_Object Vbuffer_alist, Vinhibit_read_only;
2848EXFUN (Fget_buffer, 1); 2839EXFUN (Fget_buffer, 1);
2849EXFUN (Fget_buffer_create, 1); 2840EXFUN (Fget_buffer_create, 1);
2841EXFUN (Fgenerate_new_buffer_name, 2);
2850EXFUN (Fset_buffer, 1); 2842EXFUN (Fset_buffer, 1);
2851EXFUN (set_buffer_if_live, 1); 2843EXFUN (set_buffer_if_live, 1);
2852EXFUN (Fbarf_if_buffer_read_only, 0); 2844EXFUN (Fbarf_if_buffer_read_only, 0);
@@ -3190,6 +3182,7 @@ extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks;
3190EXFUN (Fnext_single_property_change, 4); 3182EXFUN (Fnext_single_property_change, 4);
3191EXFUN (Fnext_single_char_property_change, 4); 3183EXFUN (Fnext_single_char_property_change, 4);
3192EXFUN (Fprevious_single_property_change, 4); 3184EXFUN (Fprevious_single_property_change, 4);
3185EXFUN (Fget_text_property, 3);
3193EXFUN (Fput_text_property, 5); 3186EXFUN (Fput_text_property, 5);
3194EXFUN (Fget_text_property, 3); 3187EXFUN (Fget_text_property, 3);
3195EXFUN (Fprevious_char_property_change, 2); 3188EXFUN (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 */
3253extern void init_category_once P_ ((void)); 3246extern void init_category_once P_ ((void));
3247extern Lisp_Object char_category_set P_ ((int));
3254extern void syms_of_category P_ ((void)); 3248extern 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 */
3272extern void syms_of_fontset P_ ((void)); 3266extern void syms_of_fontset P_ ((void));
3273EXFUN (Fset_fontset_font, 4); 3267EXFUN (Fset_fontset_font, 5);
3268EXFUN (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 */
3276EXFUN (Fxw_display_color_p, 1); 3271EXFUN (Fxw_display_color_p, 1);