comparison src/keymap.c @ 5140:e5380fdaf8f1

merge
author Ben Wing <ben@xemacs.org>
date Sat, 13 Mar 2010 05:38:34 -0600
parents 7be849cb8828
children f965e31a35f0
comparison
equal deleted inserted replaced
5139:a48ef26d87ee 5140:e5380fdaf8f1
146 146
147 */ 147 */
148 148
149 struct Lisp_Keymap 149 struct Lisp_Keymap
150 { 150 {
151 struct LCRECORD_HEADER header; 151 NORMAL_LISP_OBJECT_HEADER header;
152 #define MARKED_SLOT(x) Lisp_Object x; 152 #define MARKED_SLOT(x) Lisp_Object x;
153 #include "keymap-slots.h" 153 #include "keymap-slots.h"
154 }; 154 };
155 155
156 #define MAKE_MODIFIER_HASH_KEY(modifier) make_int (modifier) 156 #define MAKE_MODIFIER_HASH_KEY(modifier) make_int (modifier)
298 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (Lisp_Keymap, x) }, 298 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (Lisp_Keymap, x) },
299 #include "keymap-slots.h" 299 #include "keymap-slots.h"
300 { XD_END } 300 { XD_END }
301 }; 301 };
302 302
303 DEFINE_LRECORD_IMPLEMENTATION ("keymap", keymap, 303 DEFINE_DUMPABLE_LISP_OBJECT ("keymap", keymap,
304 1, /*dumpable-flag*/ 304 mark_keymap, print_keymap, 0,
305 mark_keymap, print_keymap, 0, 305 keymap_equal, keymap_hash,
306 keymap_equal, keymap_hash, 306 keymap_description,
307 keymap_description, 307 Lisp_Keymap);
308 Lisp_Keymap);
309 308
310 /************************************************************************/ 309 /************************************************************************/
311 /* Traversing keymaps and their parents */ 310 /* Traversing keymaps and their parents */
312 /************************************************************************/ 311 /************************************************************************/
313 312
775 /************************************************************************/ 774 /************************************************************************/
776 775
777 static Lisp_Object 776 static Lisp_Object
778 make_keymap (Elemcount size) 777 make_keymap (Elemcount size)
779 { 778 {
780 Lisp_Object result; 779 Lisp_Object obj = ALLOC_NORMAL_LISP_OBJECT (keymap);
781 Lisp_Keymap *keymap = ALLOC_LCRECORD_TYPE (Lisp_Keymap, &lrecord_keymap); 780 Lisp_Keymap *keymap = XKEYMAP (obj);
782
783 result = wrap_keymap (keymap);
784 781
785 #define MARKED_SLOT(x) keymap->x = Qnil; 782 #define MARKED_SLOT(x) keymap->x = Qnil;
786 #include "keymap-slots.h" 783 #include "keymap-slots.h"
787 784
788 if (size != 0) /* hack for copy-keymap */ 785 if (size != 0) /* hack for copy-keymap */
793 If not, it will grow anyway. */ 790 If not, it will grow anyway. */
794 keymap->inverse_table = 791 keymap->inverse_table =
795 make_lisp_hash_table (size * 3 / 4, HASH_TABLE_NON_WEAK, 792 make_lisp_hash_table (size * 3 / 4, HASH_TABLE_NON_WEAK,
796 HASH_TABLE_EQ); 793 HASH_TABLE_EQ);
797 } 794 }
798 return result; 795 return obj;
799 } 796 }
800 797
801 DEFUN ("make-keymap", Fmake_keymap, 0, 1, 0, /* 798 DEFUN ("make-keymap", Fmake_keymap, 0, 1, 0, /*
802 Construct and return a new keymap object. 799 Construct and return a new keymap object.
803 All entries in it are nil, meaning "command undefined". 800 All entries in it are nil, meaning "command undefined".
4293 4290
4294 4291
4295 void 4292 void
4296 syms_of_keymap (void) 4293 syms_of_keymap (void)
4297 { 4294 {
4298 INIT_LRECORD_IMPLEMENTATION (keymap); 4295 INIT_LISP_OBJECT (keymap);
4299 4296
4300 DEFSYMBOL (Qminor_mode_map_alist); 4297 DEFSYMBOL (Qminor_mode_map_alist);
4301 4298
4302 DEFSYMBOL (Qkeymapp); 4299 DEFSYMBOL (Qkeymapp);
4303 4300