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