comparison src/lisp.h @ 83507:81f2d90dee68

Merged from Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-188 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-189 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-190 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-191 Undo incorrect merge of etc/images/README from Gnus 5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-192 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-193 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-194 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-195 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-196 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-197 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-198 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-199 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-200 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-201 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-202 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-203 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-204 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-205 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-206 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-73 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-74 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-75 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-76 Update from CVS: README: Addition from 5.10.6 tar ball. * emacs@sv.gnu.org/gnus--rel--5.10--patch-77 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-78 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-79 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-80 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-547
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 10 Apr 2006 14:52:24 +0000
parents 0cdee8b991e1 618ce5655fc3
children 24cf4bf418dc
comparison
equal deleted inserted replaced
83506:9905fc171253 83507:81f2d90dee68
295 emacs.c. */ 295 emacs.c. */
296 PVEC_FLAG = PSEUDOVECTOR_FLAG 296 PVEC_FLAG = PSEUDOVECTOR_FLAG
297 #endif 297 #endif
298 }; 298 };
299 299
300 /* For convenience, we also store the number of elements in these bits. */ 300 /* For convenience, we also store the number of elements in these bits.
301 Note that this size is not necessarily the memory-footprint size, but
302 only the number of Lisp_Object fields (that need to be traced by the GC).
303 The distinction is used e.g. by Lisp_Process which places extra
304 non-Lisp_Object fields at the end of the structure. */
301 #define PSEUDOVECTOR_SIZE_MASK 0x1ff 305 #define PSEUDOVECTOR_SIZE_MASK 0x1ff
302 306
303 /* Number of bits to put in each character in the internal representation 307 /* Number of bits to put in each character in the internal representation
304 of bool vectors. This should not vary across implementations. */ 308 of bool vectors. This should not vary across implementations. */
305 #define BOOL_VECTOR_BITS_PER_CHAR 8 309 #define BOOL_VECTOR_BITS_PER_CHAR 8
700 EMACS_INT size_byte; 704 EMACS_INT size_byte;
701 INTERVAL intervals; /* text properties in this string */ 705 INTERVAL intervals; /* text properties in this string */
702 unsigned char *data; 706 unsigned char *data;
703 }; 707 };
704 708
709 #ifdef offsetof
710 #define OFFSETOF(type,field) offsetof(type,field)
711 #else
712 #define OFFSETOF(type,field) \
713 ((int)((char*)&((type*)0)->field - (char*)0))
714 #endif
715
716 struct Lisp_Vector
717 {
718 EMACS_INT size;
719 struct Lisp_Vector *next;
720 Lisp_Object contents[1];
721 };
722
705 /* If a struct is made to look like a vector, this macro returns the length 723 /* If a struct is made to look like a vector, this macro returns the length
706 of the shortest vector that would hold that struct. */ 724 of the shortest vector that would hold that struct. */
707 #define VECSIZE(type) ((sizeof (type) - (sizeof (struct Lisp_Vector) \ 725 #define VECSIZE(type) ((sizeof (type) - (sizeof (struct Lisp_Vector) \
708 - sizeof (Lisp_Object)) \ 726 - sizeof (Lisp_Object)) \
709 + sizeof(Lisp_Object) - 1) /* round up */ \ 727 + sizeof(Lisp_Object) - 1) /* round up */ \
710 / sizeof (Lisp_Object)) 728 / sizeof (Lisp_Object))
711 729
712 struct Lisp_Vector 730 /* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields
713 { 731 at the end and we need to compute the number of Lisp_Object fields (the
714 EMACS_INT size; 732 ones that the GC needs to trace). */
715 struct Lisp_Vector *next; 733 #define PSEUDOVECSIZE(type, nonlispfield) \
716 Lisp_Object contents[1]; 734 ((OFFSETOF(type, nonlispfield) - OFFSETOF(struct Lisp_Vector, contents[0])) \
717 }; 735 / sizeof (Lisp_Object))
718 736
719 /* A char table is a kind of vectorlike, with contents are like a 737 /* A char table is a kind of vectorlike, with contents are like a
720 vector but with a few other slots. For some purposes, it makes 738 vector but with a few other slots. For some purposes, it makes
721 sense to handle a chartable with type struct Lisp_Vector. An 739 sense to handle a chartable with type struct Lisp_Vector. An
722 element of a char table can be any Lisp objects, but if it is a sub 740 element of a char table can be any Lisp objects, but if it is a sub
2223 EXFUN (Fmake_variable_buffer_local, 1); 2241 EXFUN (Fmake_variable_buffer_local, 1);
2224 2242
2225 extern Lisp_Object indirect_variable P_ ((Lisp_Object)); 2243 extern Lisp_Object indirect_variable P_ ((Lisp_Object));
2226 extern Lisp_Object long_to_cons P_ ((unsigned long)); 2244 extern Lisp_Object long_to_cons P_ ((unsigned long));
2227 extern unsigned long cons_to_long P_ ((Lisp_Object)); 2245 extern unsigned long cons_to_long P_ ((Lisp_Object));
2228 extern void args_out_of_range P_ ((Lisp_Object, Lisp_Object)); 2246 extern void args_out_of_range P_ ((Lisp_Object, Lisp_Object)) NO_RETURN;
2229 extern void args_out_of_range_3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); 2247 extern void args_out_of_range_3 P_ ((Lisp_Object, Lisp_Object,
2248 Lisp_Object)) NO_RETURN;
2230 extern Lisp_Object wrong_type_argument P_ ((Lisp_Object, Lisp_Object)); 2249 extern Lisp_Object wrong_type_argument P_ ((Lisp_Object, Lisp_Object));
2231 extern void store_symval_forwarding P_ ((Lisp_Object, Lisp_Object, 2250 extern void store_symval_forwarding P_ ((Lisp_Object, Lisp_Object,
2232 Lisp_Object, struct buffer *)); 2251 Lisp_Object, struct buffer *));
2233 extern Lisp_Object do_symval_forwarding P_ ((Lisp_Object)); 2252 extern Lisp_Object do_symval_forwarding P_ ((Lisp_Object));
2234 extern Lisp_Object set_internal P_ ((Lisp_Object, Lisp_Object, struct buffer *, int)); 2253 extern Lisp_Object set_internal P_ ((Lisp_Object, Lisp_Object, struct buffer *, int));
2842 EXFUN (Fwrite_region, 7); 2861 EXFUN (Fwrite_region, 7);
2843 EXFUN (Ffile_readable_p, 1); 2862 EXFUN (Ffile_readable_p, 1);
2844 EXFUN (Ffile_executable_p, 1); 2863 EXFUN (Ffile_executable_p, 1);
2845 EXFUN (Fread_file_name, 6); 2864 EXFUN (Fread_file_name, 6);
2846 extern Lisp_Object close_file_unwind P_ ((Lisp_Object)); 2865 extern Lisp_Object close_file_unwind P_ ((Lisp_Object));
2847 extern void report_file_error P_ ((const char *, Lisp_Object)); 2866 extern void report_file_error P_ ((const char *, Lisp_Object)) NO_RETURN;
2848 extern int internal_delete_file P_ ((Lisp_Object)); 2867 extern int internal_delete_file P_ ((Lisp_Object));
2849 extern void syms_of_fileio P_ ((void)); 2868 extern void syms_of_fileio P_ ((void));
2850 extern void init_fileio_once P_ ((void)); 2869 extern void init_fileio_once P_ ((void));
2851 extern Lisp_Object make_temp_name P_ ((Lisp_Object, int)); 2870 extern Lisp_Object make_temp_name P_ ((Lisp_Object, int));
2852 EXFUN (Fmake_symbolic_link, 3); 2871 EXFUN (Fmake_symbolic_link, 3);