Mercurial > emacs
comparison src/lisp.h @ 89483:2f877ed80fa6
*** empty log message ***
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 08 Sep 2003 12:53:41 +0000 |
parents | 375f2633d815 bc52ad30b028 |
children | 2c1ad8f1fe6f |
comparison
equal
deleted
inserted
replaced
88123:375f2633d815 | 89483:2f877ed80fa6 |
---|---|
295 PVEC_SUBR = 0x4000, | 295 PVEC_SUBR = 0x4000, |
296 PVEC_CHAR_TABLE = 0x8000, | 296 PVEC_CHAR_TABLE = 0x8000, |
297 PVEC_BOOL_VECTOR = 0x10000, | 297 PVEC_BOOL_VECTOR = 0x10000, |
298 PVEC_BUFFER = 0x20000, | 298 PVEC_BUFFER = 0x20000, |
299 PVEC_HASH_TABLE = 0x40000, | 299 PVEC_HASH_TABLE = 0x40000, |
300 PVEC_TYPE_MASK = 0x7fe00 | 300 PVEC_SUB_CHAR_TABLE = 0x80000, |
301 PVEC_TYPE_MASK = 0x0ffe00 | |
301 | 302 |
302 #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to | 303 #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to |
303 GDB. It doesn't work on OS Alpha. Moved to a variable in | 304 GDB. It doesn't work on OS Alpha. Moved to a variable in |
304 emacs.c. */ | 305 emacs.c. */ |
305 PVEC_FLAG = PSEUDOVECTOR_FLAG | 306 PVEC_FLAG = PSEUDOVECTOR_FLAG |
494 #define XPROCESS(a) (eassert (GC_PROCESSP(a)),(struct Lisp_Process *) XPNTR(a)) | 495 #define XPROCESS(a) (eassert (GC_PROCESSP(a)),(struct Lisp_Process *) XPNTR(a)) |
495 #define XWINDOW(a) (eassert (GC_WINDOWP(a)),(struct window *) XPNTR(a)) | 496 #define XWINDOW(a) (eassert (GC_WINDOWP(a)),(struct window *) XPNTR(a)) |
496 #define XSUBR(a) (eassert (GC_SUBRP(a)),(struct Lisp_Subr *) XPNTR(a)) | 497 #define XSUBR(a) (eassert (GC_SUBRP(a)),(struct Lisp_Subr *) XPNTR(a)) |
497 #define XBUFFER(a) (eassert (GC_BUFFERP(a)),(struct buffer *) XPNTR(a)) | 498 #define XBUFFER(a) (eassert (GC_BUFFERP(a)),(struct buffer *) XPNTR(a)) |
498 #define XCHAR_TABLE(a) ((struct Lisp_Char_Table *) XPNTR(a)) | 499 #define XCHAR_TABLE(a) ((struct Lisp_Char_Table *) XPNTR(a)) |
500 #define XSUB_CHAR_TABLE(a) ((struct Lisp_Sub_Char_Table *) XPNTR(a)) | |
499 #define XBOOL_VECTOR(a) ((struct Lisp_Bool_Vector *) XPNTR(a)) | 501 #define XBOOL_VECTOR(a) ((struct Lisp_Bool_Vector *) XPNTR(a)) |
500 | 502 |
501 /* Construct a Lisp_Object from a value or address. */ | 503 /* Construct a Lisp_Object from a value or address. */ |
502 | 504 |
503 #define XSETINT(a, b) (a) = make_number (b) | 505 #define XSETINT(a, b) (a) = make_number (b) |
523 #define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR)) | 525 #define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR)) |
524 #define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED)) | 526 #define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED)) |
525 #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) | 527 #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) |
526 #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) | 528 #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) |
527 #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) | 529 #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) |
530 #define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE)) | |
528 | 531 |
529 /* Convenience macros for dealing with Lisp arrays. */ | 532 /* Convenience macros for dealing with Lisp arrays. */ |
530 | 533 |
531 #define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] | 534 #define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] |
532 #define ASET(ARRAY, IDX, VAL) (AREF ((ARRAY), (IDX)) = (VAL)) | 535 #define ASET(ARRAY, IDX, VAL) (AREF ((ARRAY), (IDX)) = (VAL)) |
663 EMACS_INT size; | 666 EMACS_INT size; |
664 struct Lisp_Vector *next; | 667 struct Lisp_Vector *next; |
665 Lisp_Object contents[1]; | 668 Lisp_Object contents[1]; |
666 }; | 669 }; |
667 | 670 |
668 /* A char table is a kind of vectorlike, with contents are like a | 671 /* A char-table is a kind of vectorlike, with contents are like a |
669 vector but with a few other slots. For some purposes, it makes | 672 vector but with a few other slots. For some purposes, it makes |
670 sense to handle a chartable with type struct Lisp_Vector. An | 673 sense to handle a char-table with type struct Lisp_Vector. An |
671 element of a char table can be any Lisp objects, but if it is a sub | 674 element of a char table can be any Lisp objects, but if it is a sub |
672 char-table, we treat it a table that contains information of a | 675 char-table, we treat it a table that contains information of a |
673 group of characters of the same charsets or a specific character of | 676 specific range of characters. A sub char-table has the same |
674 a charset. A sub char-table has the same structure as a char table | 677 structure as a vector. A sub char table appears only in an element |
675 except for that the former omits several slots at the tail. A sub | 678 of a char-table, and there's no way to access it directly from |
676 char table appears only in an element of a char table, and there's | 679 Emacs Lisp program. */ |
677 no way to access it directly from Emacs Lisp program. */ | |
678 | |
679 /* This is the number of slots that apply to characters or character | |
680 sets. The first 128 are for ASCII, the next 128 are for 8-bit | |
681 European characters, and the last 128 are for multibyte characters. | |
682 The first 256 are indexed by the code itself, but the last 128 are | |
683 indexed by (charset-id + 128). */ | |
684 #define CHAR_TABLE_ORDINARY_SLOTS 384 | |
685 | |
686 /* This is the number of slots that apply to characters of ASCII and | |
687 8-bit Europeans only. */ | |
688 #define CHAR_TABLE_SINGLE_BYTE_SLOTS 256 | |
689 | 680 |
690 /* This is the number of slots that every char table must have. This | 681 /* This is the number of slots that every char table must have. This |
691 counts the ordinary slots and the top, defalt, parent, and purpose | 682 counts the ordinary slots and the top, defalt, parent, and purpose |
692 slots. */ | 683 slots. */ |
693 #define CHAR_TABLE_STANDARD_SLOTS (CHAR_TABLE_ORDINARY_SLOTS + 4) | 684 #define CHAR_TABLE_STANDARD_SLOTS (VECSIZE (struct Lisp_Char_Table) - 1) |
694 | |
695 /* This is the number of slots that apply to position-code-1 and | |
696 position-code-2 of a multibyte character at the 2nd and 3rd level | |
697 sub char tables respectively. */ | |
698 #define SUB_CHAR_TABLE_ORDINARY_SLOTS 128 | |
699 | |
700 /* This is the number of slots that every sub char table must have. | |
701 This counts the ordinary slots and the top and defalt slot. */ | |
702 #define SUB_CHAR_TABLE_STANDARD_SLOTS (SUB_CHAR_TABLE_ORDINARY_SLOTS + 2) | |
703 | 685 |
704 /* Return the number of "extra" slots in the char table CT. */ | 686 /* Return the number of "extra" slots in the char table CT. */ |
705 | 687 |
706 #define CHAR_TABLE_EXTRA_SLOTS(CT) \ | 688 #define CHAR_TABLE_EXTRA_SLOTS(CT) \ |
707 (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) | 689 (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) |
708 | 690 |
709 /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 691 /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII |
710 and 8-bit Europeans characters. For these characters, do not check | 692 characters. Do not check validity of CT. */ |
711 validity of CT. Do not follow parent. */ | 693 #define CHAR_TABLE_REF(CT, IDX) \ |
712 #define CHAR_TABLE_REF(CT, IDX) \ | 694 ((ASCII_CHAR_P (IDX) \ |
713 ((IDX) >= 0 && (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 695 && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \ |
714 ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | 696 && !NILP (XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX])) \ |
715 ? XCHAR_TABLE (CT)->contents[IDX] \ | 697 ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] \ |
716 : XCHAR_TABLE (CT)->defalt) \ | 698 : char_table_ref ((CT), (IDX))) |
717 : Faref (CT, make_number (IDX))) | |
718 | 699 |
719 /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 700 /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII |
720 and 8-bit Europeans characters. However, if the result is nil, | 701 and 8-bit Europeans characters. However, if the result is nil, |
721 return IDX. | 702 return IDX. |
722 | 703 |
723 For these characters, do not check validity of CT | 704 For these characters, do not check validity of CT |
724 and do not follow parent. */ | 705 and do not follow parent. */ |
725 #define CHAR_TABLE_TRANSLATE(CT, IDX) \ | 706 #define CHAR_TABLE_TRANSLATE(CT, IDX) \ |
726 ((IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 707 char_table_translate (CT, IDX) |
727 ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | |
728 ? XINT (XCHAR_TABLE (CT)->contents[IDX]) \ | |
729 : IDX) \ | |
730 : char_table_translate (CT, IDX)) | |
731 | 708 |
732 /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and | 709 /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and |
733 8-bit Europeans characters. Do not check validity of CT. */ | 710 8-bit European characters. Do not check validity of CT. */ |
734 #define CHAR_TABLE_SET(CT, IDX, VAL) \ | 711 #define CHAR_TABLE_SET(CT, IDX, VAL) \ |
735 do { \ | 712 (((IDX) >= 0 && ASCII_CHAR_P (IDX) \ |
736 if (XFASTINT (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS) \ | 713 && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii)) \ |
737 XCHAR_TABLE (CT)->contents[XFASTINT (IDX)] = VAL; \ | 714 ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] = VAL \ |
738 else \ | 715 : char_table_set (CT, IDX, VAL)) |
739 Faset (CT, IDX, VAL); \ | 716 |
740 } while (0) | 717 #define CHARTAB_SIZE_BITS_0 6 |
718 #define CHARTAB_SIZE_BITS_1 4 | |
719 #define CHARTAB_SIZE_BITS_2 5 | |
720 #define CHARTAB_SIZE_BITS_3 7 | |
721 | |
722 extern const int chartab_size[4]; | |
723 | |
724 struct Lisp_Sub_Char_Table; | |
741 | 725 |
742 struct Lisp_Char_Table | 726 struct Lisp_Char_Table |
743 { | 727 { |
744 /* This is the vector's size field, which also holds the | 728 /* This is the vector's size field, which also holds the |
745 pseudovector type information. It holds the size, too. | 729 pseudovector type information. It holds the size, too. The size |
746 The size counts the top, defalt, purpose, and parent slots. | 730 counts the defalt, parent, purpose, ascii, contents, and extras |
747 The last three are not counted if this is a sub char table. */ | 731 slots. */ |
748 EMACS_INT size; | 732 EMACS_INT size; |
749 struct Lisp_Vector *next; | 733 struct Lisp_Vector *next; |
750 /* This holds a flag to tell if this is a top level char table (t) | 734 |
751 or a sub char table (nil). */ | |
752 Lisp_Object top; | |
753 /* This holds a default value, | 735 /* This holds a default value, |
754 which is used whenever the value for a specific character is nil. */ | 736 which is used whenever the value for a specific character is nil. */ |
755 Lisp_Object defalt; | 737 Lisp_Object defalt; |
756 /* This holds an actual value of each element. A sub char table | 738 |
757 has only SUB_CHAR_TABLE_ORDINARY_SLOTS number of elements. */ | 739 /* This points to another char table, which we inherit from when the |
758 Lisp_Object contents[CHAR_TABLE_ORDINARY_SLOTS]; | 740 value for a specific character is nil. The `defalt' slot takes |
759 | 741 precedence over this. */ |
760 /* A sub char table doesn't has the following slots. */ | |
761 | |
762 /* This points to another char table, which we inherit from | |
763 when the value for a specific character is nil. | |
764 The `defalt' slot takes precedence over this. */ | |
765 Lisp_Object parent; | 742 Lisp_Object parent; |
766 /* This should be a symbol which says what kind of use | 743 |
767 this char-table is meant for. | 744 /* This is a symbol which says what kind of use this char-table is |
768 Typically now the values can be `syntax-table' and `display-table'. */ | 745 meant for. */ |
769 Lisp_Object purpose; | 746 Lisp_Object purpose; |
770 /* These hold additional data. */ | 747 |
748 /* The bottom sub char-table for characters of the range 0..127. It | |
749 is nil if none of ASCII character has a specific value. */ | |
750 Lisp_Object ascii; | |
751 | |
752 Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)]; | |
753 | |
754 /* These hold additional data. It is a vector. */ | |
771 Lisp_Object extras[1]; | 755 Lisp_Object extras[1]; |
756 }; | |
757 | |
758 struct Lisp_Sub_Char_Table | |
759 { | |
760 /* This is the vector's size field, which also holds the | |
761 pseudovector type information. It holds the size, too. */ | |
762 EMACS_INT size; | |
763 struct Lisp_Vector *next; | |
764 | |
765 /* Depth of this sub char-table. It should be 1, 2, or 3. A sub | |
766 char-table of depth 1 contains 16 elments, and each element | |
767 covers 4096 (128*32) characters. A sub char-table of depth 2 | |
768 contains 32 elements, and each element covers 128 characters. A | |
769 sub char-table of depth 3 contains 128 elements, and each element | |
770 is for one character. */ | |
771 Lisp_Object depth; | |
772 | |
773 /* Minimum character covered by the sub char-table. */ | |
774 Lisp_Object min_char; | |
775 | |
776 Lisp_Object contents[1]; | |
772 }; | 777 }; |
773 | 778 |
774 /* A boolvector is a kind of vectorlike, with contents are like a string. */ | 779 /* A boolvector is a kind of vectorlike, with contents are like a string. */ |
775 struct Lisp_Bool_Vector | 780 struct Lisp_Bool_Vector |
776 { | 781 { |
1262 | 1267 |
1263 #define CHAR_MODIFIER_MASK \ | 1268 #define CHAR_MODIFIER_MASK \ |
1264 (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META) | 1269 (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META) |
1265 | 1270 |
1266 | 1271 |
1267 /* Actually, the current Emacs uses 19 bits for the character value | 1272 /* Actually, the current Emacs uses 22 bits for the character value |
1268 itself. */ | 1273 itself. */ |
1269 #define CHARACTERBITS 19 | 1274 #define CHARACTERBITS 2 |
1270 | 1275 |
1271 /* The maximum byte size consumed by push_key_description. | 1276 /* The maximum byte size consumed by push_key_description. |
1272 All callers should assure that at least this size of memory is | 1277 All callers should assure that at least this size of memory is |
1273 allocated at the place pointed by the second argument. | 1278 allocated at the place pointed by the second argument. |
1274 | 1279 |
1320 probably run out of 255 pretty quickly. | 1325 probably run out of 255 pretty quickly. |
1321 This is always -1 for a multibyte character. */ | 1326 This is always -1 for a multibyte character. */ |
1322 #define GLYPH int | 1327 #define GLYPH int |
1323 | 1328 |
1324 /* Mask bits for face. */ | 1329 /* Mask bits for face. */ |
1325 #define GLYPH_MASK_FACE 0x7FF80000 | 1330 #define GLYPH_MASK_FACE 0x7FC00000 |
1326 /* Mask bits for character code. */ | 1331 /* Mask bits for character code. */ |
1327 #define GLYPH_MASK_CHAR 0x0007FFFF /* The lowest 19 bits */ | 1332 #define GLYPH_MASK_CHAR 0x003FFFFF /* The lowest 22 bits */ |
1328 | 1333 |
1329 /* The FAST macros assume that we already know we're in an X window. */ | 1334 /* The FAST macros assume that we already know we're in an X window. */ |
1330 | 1335 |
1331 /* Set a character code and a face ID in a glyph G. */ | 1336 /* Set a character code and a face ID in a glyph G. */ |
1332 #define FAST_MAKE_GLYPH(char, face) ((char) | ((face) << CHARACTERBITS)) | 1337 #define FAST_MAKE_GLYPH(char, face) ((char) | ((face) << CHARACTERBITS)) |
1420 #define COMPILEDP(x) PSEUDOVECTORP (x, PVEC_COMPILED) | 1425 #define COMPILEDP(x) PSEUDOVECTORP (x, PVEC_COMPILED) |
1421 #define GC_COMPILEDP(x) GC_PSEUDOVECTORP (x, PVEC_COMPILED) | 1426 #define GC_COMPILEDP(x) GC_PSEUDOVECTORP (x, PVEC_COMPILED) |
1422 #define BUFFERP(x) PSEUDOVECTORP (x, PVEC_BUFFER) | 1427 #define BUFFERP(x) PSEUDOVECTORP (x, PVEC_BUFFER) |
1423 #define GC_BUFFERP(x) GC_PSEUDOVECTORP (x, PVEC_BUFFER) | 1428 #define GC_BUFFERP(x) GC_PSEUDOVECTORP (x, PVEC_BUFFER) |
1424 #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE) | 1429 #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE) |
1430 #define SUB_CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_SUB_CHAR_TABLE) | |
1431 #define GC_SUB_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_SUB_CHAR_TABLE) | |
1425 #define GC_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_CHAR_TABLE) | 1432 #define GC_CHAR_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_CHAR_TABLE) |
1426 #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) | 1433 #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) |
1427 #define GC_BOOL_VECTOR_P(x) GC_PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) | 1434 #define GC_BOOL_VECTOR_P(x) GC_PSEUDOVECTORP (x, PVEC_BOOL_VECTOR) |
1428 #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME) | 1435 #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME) |
1429 #define GC_FRAMEP(x) GC_PSEUDOVECTORP (x, PVEC_FRAME) | 1436 #define GC_FRAMEP(x) GC_PSEUDOVECTORP (x, PVEC_FRAME) |
1430 | 1437 |
1431 #define SUB_CHAR_TABLE_P(x) (CHAR_TABLE_P (x) && NILP (XCHAR_TABLE (x)->top)) | |
1432 | 1438 |
1433 #define EQ(x, y) (XFASTINT (x) == XFASTINT (y)) | 1439 #define EQ(x, y) (XFASTINT (x) == XFASTINT (y)) |
1434 #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y)) | 1440 #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y)) |
1435 | 1441 |
1436 #define CHECK_LIST(x) \ | 1442 #define CHECK_LIST(x) \ |
1525 | 1531 |
1526 #define CHECK_NUMBER_CDR(x) \ | 1532 #define CHECK_NUMBER_CDR(x) \ |
1527 do { \ | 1533 do { \ |
1528 Lisp_Object tmp = XCDR (x); \ | 1534 Lisp_Object tmp = XCDR (x); \ |
1529 CHECK_NUMBER (tmp); \ | 1535 CHECK_NUMBER (tmp); \ |
1536 XSETCDR ((x), tmp); \ | |
1537 } while (0) | |
1538 | |
1539 #define CHECK_NATNUM_CAR(x) \ | |
1540 do { \ | |
1541 Lisp_Object tmp = XCAR (x); \ | |
1542 CHECK_NATNUM (tmp); \ | |
1543 XSETCAR ((x), tmp); \ | |
1544 } while (0) | |
1545 | |
1546 #define CHECK_NATNUM_CDR(x) \ | |
1547 do { \ | |
1548 Lisp_Object tmp = XCDR (x); \ | |
1549 CHECK_NATNUM (tmp); \ | |
1530 XSETCDR ((x), tmp); \ | 1550 XSETCDR ((x), tmp); \ |
1531 } while (0) | 1551 } while (0) |
1532 | 1552 |
1533 /* Cast pointers to this type to compare them. Some machines want int. */ | 1553 /* Cast pointers to this type to compare them. Some machines want int. */ |
1534 #ifndef PNTR_COMPARISON_TYPE | 1554 #ifndef PNTR_COMPARISON_TYPE |
2130 EXFUN (Fcheck_coding_system, 1); | 2150 EXFUN (Fcheck_coding_system, 1); |
2131 EXFUN (Fread_coding_system, 2); | 2151 EXFUN (Fread_coding_system, 2); |
2132 EXFUN (Fread_non_nil_coding_system, 1); | 2152 EXFUN (Fread_non_nil_coding_system, 1); |
2133 EXFUN (Ffind_operation_coding_system, MANY); | 2153 EXFUN (Ffind_operation_coding_system, MANY); |
2134 EXFUN (Fupdate_coding_systems_internal, 0); | 2154 EXFUN (Fupdate_coding_systems_internal, 0); |
2135 EXFUN (Fencode_coding_string, 3); | 2155 EXFUN (Fencode_coding_string, 4); |
2136 EXFUN (Fdecode_coding_string, 3); | 2156 EXFUN (Fdecode_coding_string, 4); |
2137 extern Lisp_Object detect_coding_system P_ ((const unsigned char *, int, int, | 2157 extern Lisp_Object detect_coding_system P_ ((const unsigned char *, int, int, |
2138 int)); | 2158 int, Lisp_Object)); |
2139 extern void init_coding P_ ((void)); | 2159 extern void init_coding P_ ((void)); |
2140 extern void init_coding_once P_ ((void)); | 2160 extern void init_coding_once P_ ((void)); |
2141 extern void syms_of_coding P_ ((void)); | 2161 extern void syms_of_coding P_ ((void)); |
2142 extern Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object, | 2162 |
2143 int)); | 2163 /* Defined in character.c */ |
2164 extern void init_character_once P_ ((void)); | |
2165 extern void syms_of_character P_ ((void)); | |
2144 | 2166 |
2145 /* Defined in charset.c */ | 2167 /* Defined in charset.c */ |
2146 extern EMACS_INT nonascii_insert_offset; | |
2147 extern Lisp_Object Vnonascii_translation_table; | |
2148 EXFUN (Fchar_bytes, 1); | 2168 EXFUN (Fchar_bytes, 1); |
2149 EXFUN (Fchar_width, 1); | 2169 EXFUN (Fchar_width, 1); |
2150 EXFUN (Fstring, MANY); | 2170 EXFUN (Fstring, MANY); |
2151 extern int chars_in_text P_ ((const unsigned char *, int)); | 2171 extern int chars_in_text P_ ((const unsigned char *, int)); |
2152 extern int multibyte_chars_in_text P_ ((const unsigned char *, int)); | 2172 extern int multibyte_chars_in_text P_ ((const unsigned char *, int)); |
2153 extern int unibyte_char_to_multibyte P_ ((int)); | |
2154 extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); | 2173 extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object)); |
2155 extern Lisp_Object Qcharset; | 2174 extern Lisp_Object Qcharset; |
2175 extern void init_charset P_ ((void)); | |
2156 extern void init_charset_once P_ ((void)); | 2176 extern void init_charset_once P_ ((void)); |
2157 extern void syms_of_charset P_ ((void)); | 2177 extern void syms_of_charset P_ ((void)); |
2178 /* Structure forward declarations. */ | |
2179 struct charset; | |
2180 | |
2181 /* Defined in composite.c */ | |
2182 extern void syms_of_composite P_ ((void)); | |
2158 | 2183 |
2159 /* Defined in syntax.c */ | 2184 /* Defined in syntax.c */ |
2160 EXFUN (Fforward_word, 1); | 2185 EXFUN (Fforward_word, 1); |
2161 EXFUN (Fskip_chars_forward, 2); | 2186 EXFUN (Fskip_chars_forward, 2); |
2162 EXFUN (Fskip_chars_backward, 2); | 2187 EXFUN (Fskip_chars_backward, 2); |
2170 extern int use_dialog_box; | 2195 extern int use_dialog_box; |
2171 extern int next_almost_prime P_ ((int)); | 2196 extern int next_almost_prime P_ ((int)); |
2172 extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); | 2197 extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object)); |
2173 extern void sweep_weak_hash_tables P_ ((void)); | 2198 extern void sweep_weak_hash_tables P_ ((void)); |
2174 extern Lisp_Object Qstring_lessp; | 2199 extern Lisp_Object Qstring_lessp; |
2175 EXFUN (Foptimize_char_table, 1); | |
2176 extern Lisp_Object Vfeatures; | 2200 extern Lisp_Object Vfeatures; |
2177 extern Lisp_Object QCtest, QCweakness, Qequal; | 2201 extern Lisp_Object QCtest, QCweakness, Qequal, Qeq; |
2178 unsigned sxhash P_ ((Lisp_Object, int)); | 2202 unsigned sxhash P_ ((Lisp_Object, int)); |
2179 Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, | 2203 Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object, |
2180 Lisp_Object, Lisp_Object, Lisp_Object, | 2204 Lisp_Object, Lisp_Object, Lisp_Object, |
2181 Lisp_Object)); | 2205 Lisp_Object)); |
2182 Lisp_Object copy_hash_table P_ ((struct Lisp_Hash_Table *)); | 2206 Lisp_Object copy_hash_table P_ ((struct Lisp_Hash_Table *)); |
2187 void hash_clear P_ ((struct Lisp_Hash_Table *)); | 2211 void hash_clear P_ ((struct Lisp_Hash_Table *)); |
2188 void remove_hash_entry P_ ((struct Lisp_Hash_Table *, int)); | 2212 void remove_hash_entry P_ ((struct Lisp_Hash_Table *, int)); |
2189 extern void init_fns P_ ((void)); | 2213 extern void init_fns P_ ((void)); |
2190 EXFUN (Fsxhash, 1); | 2214 EXFUN (Fsxhash, 1); |
2191 EXFUN (Fmake_hash_table, MANY); | 2215 EXFUN (Fmake_hash_table, MANY); |
2216 EXFUN (Fmakehash, 1); | |
2192 EXFUN (Fcopy_hash_table, 1); | 2217 EXFUN (Fcopy_hash_table, 1); |
2193 EXFUN (Fhash_table_count, 1); | 2218 EXFUN (Fhash_table_count, 1); |
2194 EXFUN (Fhash_table_rehash_size, 1); | 2219 EXFUN (Fhash_table_rehash_size, 1); |
2195 EXFUN (Fhash_table_rehash_threshold, 1); | 2220 EXFUN (Fhash_table_rehash_threshold, 1); |
2196 EXFUN (Fhash_table_size, 1); | 2221 EXFUN (Fhash_table_size, 1); |
2253 extern Lisp_Object string_make_unibyte P_ ((Lisp_Object)); | 2278 extern Lisp_Object string_make_unibyte P_ ((Lisp_Object)); |
2254 EXFUN (Fcopy_alist, 1); | 2279 EXFUN (Fcopy_alist, 1); |
2255 EXFUN (Fplist_get, 2); | 2280 EXFUN (Fplist_get, 2); |
2256 EXFUN (Fplist_put, 3); | 2281 EXFUN (Fplist_put, 3); |
2257 EXFUN (Fplist_member, 2); | 2282 EXFUN (Fplist_member, 2); |
2258 EXFUN (Fset_char_table_parent, 2); | |
2259 EXFUN (Fchar_table_extra_slot, 2); | |
2260 EXFUN (Fset_char_table_extra_slot, 3); | |
2261 EXFUN (Frassoc, 2); | 2283 EXFUN (Frassoc, 2); |
2262 EXFUN (Fstring_equal, 2); | 2284 EXFUN (Fstring_equal, 2); |
2263 EXFUN (Fcompare_strings, 7); | 2285 EXFUN (Fcompare_strings, 7); |
2264 EXFUN (Fstring_lessp, 2); | 2286 EXFUN (Fstring_lessp, 2); |
2265 extern int char_table_translate P_ ((Lisp_Object, int)); | |
2266 extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, Lisp_Object), | |
2267 Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, int, | |
2268 Lisp_Object *)); | |
2269 extern Lisp_Object char_table_ref_and_index P_ ((Lisp_Object, int, int *)); | |
2270 extern void syms_of_fns P_ ((void)); | 2287 extern void syms_of_fns P_ ((void)); |
2271 | 2288 |
2272 /* Defined in floatfns.c */ | 2289 /* Defined in floatfns.c */ |
2273 extern double extract_float P_ ((Lisp_Object)); | 2290 extern double extract_float P_ ((Lisp_Object)); |
2274 EXFUN (Ffloat, 1); | 2291 EXFUN (Ffloat, 1); |
2287 extern int count_combining_after P_ ((const unsigned char *, int, int, int)); | 2304 extern int count_combining_after P_ ((const unsigned char *, int, int, int)); |
2288 extern void insert P_ ((const unsigned char *, int)); | 2305 extern void insert P_ ((const unsigned char *, int)); |
2289 extern void insert_and_inherit P_ ((const unsigned char *, int)); | 2306 extern void insert_and_inherit P_ ((const unsigned char *, int)); |
2290 extern void insert_1 P_ ((const unsigned char *, int, int, int, int)); | 2307 extern void insert_1 P_ ((const unsigned char *, int, int, int, int)); |
2291 extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int)); | 2308 extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int)); |
2309 extern void insert_from_gap P_ ((int, int)); | |
2292 extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); | 2310 extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int)); |
2293 extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); | 2311 extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); |
2294 extern void insert_char P_ ((int)); | 2312 extern void insert_char P_ ((int)); |
2295 extern void insert_string P_ ((const char *)); | 2313 extern void insert_string P_ ((const char *)); |
2296 extern void insert_before_markers P_ ((const unsigned char *, int)); | 2314 extern void insert_before_markers P_ ((const unsigned char *, int)); |
2409 extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object)); | 2427 extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object)); |
2410 extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); | 2428 extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); |
2411 EXFUN (Fgarbage_collect, 0); | 2429 EXFUN (Fgarbage_collect, 0); |
2412 EXFUN (Fmake_byte_code, MANY); | 2430 EXFUN (Fmake_byte_code, MANY); |
2413 EXFUN (Fmake_bool_vector, 2); | 2431 EXFUN (Fmake_bool_vector, 2); |
2414 EXFUN (Fmake_char_table, 2); | |
2415 extern Lisp_Object make_sub_char_table P_ ((Lisp_Object)); | |
2416 extern Lisp_Object Qchar_table_extra_slots; | 2432 extern Lisp_Object Qchar_table_extra_slots; |
2417 extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); | 2433 extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); |
2418 extern struct Lisp_Vector *allocate_other_vector P_ ((EMACS_INT)); | 2434 extern struct Lisp_Vector *allocate_other_vector P_ ((EMACS_INT)); |
2419 extern struct Lisp_Hash_Table *allocate_hash_table P_ ((void)); | 2435 extern struct Lisp_Hash_Table *allocate_hash_table P_ ((void)); |
2420 extern struct window *allocate_window P_ ((void)); | 2436 extern struct window *allocate_window P_ ((void)); |
2430 extern void free_cons P_ ((struct Lisp_Cons *)); | 2446 extern void free_cons P_ ((struct Lisp_Cons *)); |
2431 extern void init_alloc_once P_ ((void)); | 2447 extern void init_alloc_once P_ ((void)); |
2432 extern void init_alloc P_ ((void)); | 2448 extern void init_alloc P_ ((void)); |
2433 extern void syms_of_alloc P_ ((void)); | 2449 extern void syms_of_alloc P_ ((void)); |
2434 extern struct buffer * allocate_buffer P_ ((void)); | 2450 extern struct buffer * allocate_buffer P_ ((void)); |
2451 | |
2452 /* Defined in chartab.c */ | |
2453 EXFUN (Fmake_char_table, 2); | |
2454 EXFUN (Fchar_table_parent, 1); | |
2455 EXFUN (Fset_char_table_parent, 2); | |
2456 EXFUN (Fchar_table_extra_slot, 2); | |
2457 EXFUN (Fset_char_table_extra_slot, 3); | |
2458 EXFUN (Fchar_table_range, 2); | |
2459 EXFUN (Fset_char_table_range, 3); | |
2460 EXFUN (Fset_char_table_default, 3); | |
2461 EXFUN (Foptimize_char_table, 1); | |
2462 EXFUN (Fmap_char_table, 2); | |
2463 extern Lisp_Object copy_char_table P_ ((Lisp_Object)); | |
2464 extern Lisp_Object sub_char_table_ref P_ ((Lisp_Object, int)); | |
2465 extern Lisp_Object char_table_ref P_ ((Lisp_Object, int)); | |
2466 extern Lisp_Object char_table_ref_and_range P_ ((Lisp_Object, int, | |
2467 int *, int *)); | |
2468 extern Lisp_Object char_table_set P_ ((Lisp_Object, int, Lisp_Object)); | |
2469 extern Lisp_Object char_table_set_range P_ ((Lisp_Object, int, int, | |
2470 Lisp_Object)); | |
2471 extern int char_table_translate P_ ((Lisp_Object, int)); | |
2472 extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, | |
2473 Lisp_Object), | |
2474 Lisp_Object, Lisp_Object, Lisp_Object)); | |
2475 extern void syms_of_chartab P_ ((void)); | |
2435 | 2476 |
2436 /* Defined in print.c */ | 2477 /* Defined in print.c */ |
2437 extern Lisp_Object Vprin1_to_string_buffer; | 2478 extern Lisp_Object Vprin1_to_string_buffer; |
2438 extern void debug_print P_ ((Lisp_Object)); | 2479 extern void debug_print P_ ((Lisp_Object)); |
2439 EXFUN (Fprin1, 2); | 2480 EXFUN (Fprin1, 2); |
2637 Lisp_Object, Lisp_Object, Lisp_Object)); | 2678 Lisp_Object, Lisp_Object, Lisp_Object)); |
2638 extern int overlay_touches_p P_ ((int)); | 2679 extern int overlay_touches_p P_ ((int)); |
2639 extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; | 2680 extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; |
2640 EXFUN (Fget_buffer, 1); | 2681 EXFUN (Fget_buffer, 1); |
2641 EXFUN (Fget_buffer_create, 1); | 2682 EXFUN (Fget_buffer_create, 1); |
2683 EXFUN (Fgenerate_new_buffer_name, 2); | |
2642 EXFUN (Fset_buffer, 1); | 2684 EXFUN (Fset_buffer, 1); |
2643 EXFUN (set_buffer_if_live, 1); | 2685 EXFUN (set_buffer_if_live, 1); |
2644 EXFUN (Fbarf_if_buffer_read_only, 0); | 2686 EXFUN (Fbarf_if_buffer_read_only, 0); |
2645 EXFUN (Fcurrent_buffer, 0); | 2687 EXFUN (Fcurrent_buffer, 0); |
2646 EXFUN (Fswitch_to_buffer, 2); | 2688 EXFUN (Fswitch_to_buffer, 2); |
2961 extern Lisp_Object Qfont, Qmouse_face; | 3003 extern Lisp_Object Qfont, Qmouse_face; |
2962 extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; | 3004 extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; |
2963 EXFUN (Fnext_single_property_change, 4); | 3005 EXFUN (Fnext_single_property_change, 4); |
2964 EXFUN (Fnext_single_char_property_change, 4); | 3006 EXFUN (Fnext_single_char_property_change, 4); |
2965 EXFUN (Fprevious_single_property_change, 4); | 3007 EXFUN (Fprevious_single_property_change, 4); |
3008 EXFUN (Fget_text_property, 3); | |
2966 EXFUN (Fput_text_property, 5); | 3009 EXFUN (Fput_text_property, 5); |
2967 EXFUN (Fprevious_char_property_change, 2); | 3010 EXFUN (Fprevious_char_property_change, 2); |
2968 EXFUN (Fnext_char_property_change, 2); | 3011 EXFUN (Fnext_char_property_change, 2); |
2969 extern void report_interval_modification P_ ((Lisp_Object, Lisp_Object)); | 3012 extern void report_interval_modification P_ ((Lisp_Object, Lisp_Object)); |
2970 extern Lisp_Object next_single_char_property_change P_ ((Lisp_Object, | 3013 extern Lisp_Object next_single_char_property_change P_ ((Lisp_Object, |
3017 extern void syms_of_sound P_ ((void)); | 3060 extern void syms_of_sound P_ ((void)); |
3018 extern void init_sound P_ ((void)); | 3061 extern void init_sound P_ ((void)); |
3019 | 3062 |
3020 /* Defined in category.c */ | 3063 /* Defined in category.c */ |
3021 extern void init_category_once P_ ((void)); | 3064 extern void init_category_once P_ ((void)); |
3065 extern Lisp_Object char_category_set P_ ((int)); | |
3022 extern void syms_of_category P_ ((void)); | 3066 extern void syms_of_category P_ ((void)); |
3023 | 3067 |
3024 /* Defined in ccl.c */ | 3068 /* Defined in ccl.c */ |
3025 extern void syms_of_ccl P_ ((void)); | 3069 extern void syms_of_ccl P_ ((void)); |
3026 | 3070 |
3033 extern void fatal () NO_RETURN; | 3077 extern void fatal () NO_RETURN; |
3034 | 3078 |
3035 #ifdef HAVE_X_WINDOWS | 3079 #ifdef HAVE_X_WINDOWS |
3036 /* Defined in fontset.c */ | 3080 /* Defined in fontset.c */ |
3037 extern void syms_of_fontset P_ ((void)); | 3081 extern void syms_of_fontset P_ ((void)); |
3038 EXFUN (Fset_fontset_font, 4); | 3082 EXFUN (Fset_fontset_font, 5); |
3083 EXFUN (Fnew_fontset, 2); | |
3039 #endif | 3084 #endif |
3040 | 3085 |
3041 /* Defined in xfaces.c */ | 3086 /* Defined in xfaces.c */ |
3042 extern void syms_of_xfaces P_ ((void)); | 3087 extern void syms_of_xfaces P_ ((void)); |
3043 | 3088 |