comparison src/alloc.c @ 17328:e2a6f31ee014

(Fmake_char_table): Adjusted for the new structure of Lisp_Char_Table. (make_sub_char_table): New function.
author Kenichi Handa <handa@m17n.org>
date Mon, 07 Apr 1997 07:12:13 +0000
parents 571d0c136e48
children 4e11e27ce1f1
comparison
equal deleted inserted replaced
17327:0cb065f8702e 17328:e2a6f31ee014
776 register Lisp_Object purpose, init; 776 register Lisp_Object purpose, init;
777 { 777 {
778 Lisp_Object vector; 778 Lisp_Object vector;
779 Lisp_Object n; 779 Lisp_Object n;
780 CHECK_SYMBOL (purpose, 1); 780 CHECK_SYMBOL (purpose, 1);
781 /* For a deeper char-table, PURPOSE can be nil. */ 781 n = Fget (purpose, Qchar_table_extra_slots);
782 n = NILP (purpose) ? 0 : Fget (purpose, Qchar_table_extra_slots);
783 CHECK_NUMBER (n, 0); 782 CHECK_NUMBER (n, 0);
784 if (XINT (n) < 0 || XINT (n) > 10) 783 if (XINT (n) < 0 || XINT (n) > 10)
785 args_out_of_range (n, Qnil); 784 args_out_of_range (n, Qnil);
786 /* Add 2 to the size for the defalt and parent slots. */ 785 /* Add 2 to the size for the defalt and parent slots. */
787 vector = Fmake_vector (make_number (CHAR_TABLE_STANDARD_SLOTS + XINT (n)), 786 vector = Fmake_vector (make_number (CHAR_TABLE_STANDARD_SLOTS + XINT (n)),
788 init); 787 init);
788 XCHAR_TABLE (vector)->top = Qt;
789 XCHAR_TABLE (vector)->parent = Qnil; 789 XCHAR_TABLE (vector)->parent = Qnil;
790 XCHAR_TABLE (vector)->purpose = purpose; 790 XCHAR_TABLE (vector)->purpose = purpose;
791 XSETCHAR_TABLE (vector, XCHAR_TABLE (vector));
792 return vector;
793 }
794
795 /* Return a newly created sub char table with default value DEFALT.
796 Since a sub char table does not appear as a top level Emacs Lisp
797 object, we don't need a Lisp interface to make it. */
798
799 Lisp_Object
800 make_sub_char_table (defalt)
801 Lisp_Object defalt;
802 {
803 Lisp_Object vector
804 = Fmake_vector (make_number (SUB_CHAR_TABLE_STANDARD_SLOTS), Qnil);
805 XCHAR_TABLE (vector)->top = Qnil;
806 XCHAR_TABLE (vector)->defalt = defalt;
791 XSETCHAR_TABLE (vector, XCHAR_TABLE (vector)); 807 XSETCHAR_TABLE (vector, XCHAR_TABLE (vector));
792 return vector; 808 return vector;
793 } 809 }
794 810
795 DEFUN ("vector", Fvector, Svector, 0, MANY, 0, 811 DEFUN ("vector", Fvector, Svector, 0, MANY, 0,