comparison src/lisp.h @ 343:8bec6624d99b r21-1-1

Import from CVS: tag r21-1-1
author cvs
date Mon, 13 Aug 2007 10:52:53 +0200
parents 19dcec799385
children 7c94d56991e1
comparison
equal deleted inserted replaced
342:b036ce23deaa 343:8bec6624d99b
1025 /* next symbol in this obarray bucket */ 1025 /* next symbol in this obarray bucket */
1026 struct Lisp_Symbol *next; 1026 struct Lisp_Symbol *next;
1027 struct Lisp_String *name; 1027 struct Lisp_String *name;
1028 Lisp_Object value; 1028 Lisp_Object value;
1029 Lisp_Object function; 1029 Lisp_Object function;
1030 /* non-nil if the symbol is interned in Vobarray */
1031 Lisp_Object obarray;
1032 Lisp_Object plist; 1030 Lisp_Object plist;
1031 /* Information on obarray status of the symbol. Each symbol can be
1032 interned into one and only one obarray during its life-time. An
1033 interned symbol can be uninterned, but the reverse does not hold
1034 true. We need to know whether the symbol is interned to Vobarray
1035 (for the purposes of printing), and whether the symbol is
1036 interned anywhere at all. We also need to know whether the
1037 symbol is being referenced through a pure structure.
1038
1039 The .obarray_flags field is an integer mask with the following
1040 meanings for bits:
1041
1042 * 1 - symbol is interned somewhere;
1043 * 2 - symbol is interned to Vobarray;
1044 * 4 - symbol is referenced by a pure structure.
1045
1046 All of this is unneeded in 21.2, which does not have pure space in
1047 our sense of the word, thanks to Olivier. */
1048 int obarray_flags;
1033 }; 1049 };
1034 1050
1035 #define SYMBOL_IS_KEYWORD(sym) (string_byte (XSYMBOL(sym)->name, 0) == ':') 1051 #define SYMBOL_IS_KEYWORD(sym) (string_byte (XSYMBOL(sym)->name, 0) == ':')
1036 #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj)) 1052 #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj))
1037 1053
1060 #define symbol_next(s) ((s)->next) 1076 #define symbol_next(s) ((s)->next)
1061 #define symbol_name(s) ((s)->name) 1077 #define symbol_name(s) ((s)->name)
1062 #define symbol_value(s) ((s)->value) 1078 #define symbol_value(s) ((s)->value)
1063 #define symbol_function(s) ((s)->function) 1079 #define symbol_function(s) ((s)->function)
1064 #define symbol_plist(s) ((s)->plist) 1080 #define symbol_plist(s) ((s)->plist)
1081
1082 #define symbol_obarray_flags(s) ((s)->obarray_flags)
1083 #define XSYMBOL_OBARRAY_FLAGS(x) (XSYMBOL (x)->obarray_flags)
1065 1084
1066 /*********** subr ***********/ 1085 /*********** subr ***********/
1067 1086
1068 typedef Lisp_Object (*lisp_fn_t) (void); 1087 typedef Lisp_Object (*lisp_fn_t) (void);
1069 1088
1701 debug_gcpro4 (__FILE__, __LINE__,&nngcpro1,&nngcpro2,&nngcpro3,&nngcpro4,\ 1720 debug_gcpro4 (__FILE__, __LINE__,&nngcpro1,&nngcpro2,&nngcpro3,&nngcpro4,\
1702 &v1,&v2,&v3,&v4) 1721 &v1,&v2,&v3,&v4)
1703 #define NNGCPRO5(v1,v2,v3,v4,v5) \ 1722 #define NNGCPRO5(v1,v2,v3,v4,v5) \
1704 debug_gcpro5 (__FILE__, __LINE__,&nngcpro1,&nngcpro2,&nngcpro3,&nngcpro4,\ 1723 debug_gcpro5 (__FILE__, __LINE__,&nngcpro1,&nngcpro2,&nngcpro3,&nngcpro4,\
1705 &nngcpro5,&v1,&v2,&v3,&v4,&v5) 1724 &nngcpro5,&v1,&v2,&v3,&v4,&v5)
1706 #define NUNNGCPRO \ 1725 #define NNUNGCPRO \
1707 debug_ungcpro(__FILE__, __LINE__,&nngcpro1) 1726 debug_ungcpro(__FILE__, __LINE__,&nngcpro1)
1708 1727
1709 #else /* ! DEBUG_GCPRO */ 1728 #else /* ! DEBUG_GCPRO */
1710 1729
1711 #define GCPRO1(varname) \ 1730 #define GCPRO1(varname) \