diff src/lisp.h @ 86160:1ede747999c6

* alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h. (allocate_pseudovector): Make non-static. * lisp.h (enum pvec_type): New tag PVEC_OTHER. (allocate_pseudovector): Declare. (ALLOCATE_PSEUDOVECTOR): Move from alloc.c
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 16 Nov 2007 20:36:34 +0000
parents e12efff1fa77
children d28f1d2b83d5
line wrap: on
line diff
--- a/src/lisp.h	Fri Nov 16 18:50:35 2007 +0000
+++ b/src/lisp.h	Fri Nov 16 20:36:34 2007 +0000
@@ -348,7 +348,8 @@
   PVEC_BUFFER = 0x20000,
   PVEC_HASH_TABLE = 0x40000,
   PVEC_TERMINAL = 0x80000,
-  PVEC_TYPE_MASK = 0xffe00
+  PVEC_OTHER = 0x100000,
+  PVEC_TYPE_MASK = 0x1ffe00
 
 #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to
 	 GDB.  It doesn't work on OS Alpha.  Moved to a variable in
@@ -2606,6 +2607,11 @@
 extern Lisp_Object make_sub_char_table P_ ((Lisp_Object));
 extern Lisp_Object Qchar_table_extra_slots;
 extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT));
+extern struct Lisp_Vector *allocate_pseudovector P_ ((int memlen, int lisplen, EMACS_INT tag));
+#define ALLOCATE_PSEUDOVECTOR(typ,field,tag)				\
+  ((typ*)								\
+   allocate_pseudovector						\
+       (VECSIZE (typ), PSEUDOVECSIZE (typ, field), tag))
 extern struct Lisp_Vector *allocate_other_vector P_ ((EMACS_INT));
 extern struct Lisp_Hash_Table *allocate_hash_table P_ ((void));
 extern struct window *allocate_window P_ ((void));