diff src/symeval.h @ 272:c5d627a313b1 r21-0b34

Import from CVS: tag r21-0b34
author cvs
date Mon, 13 Aug 2007 10:28:48 +0200
parents 78478c60bfcd
children 8626e4521993
line wrap: on
line diff
--- a/src/symeval.h	Mon Aug 13 10:27:41 2007 +0200
+++ b/src/symeval.h	Mon Aug 13 10:28:48 2007 +0200
@@ -81,7 +81,7 @@
 #define XSYMBOL_VALUE_MAGIC_TYPE(v) \
 	(((struct symbol_value_magic *) XPNTR (v))->type)
 #define XSETSYMBOL_VALUE_MAGIC(s, p) XSETOBJ (s, Lisp_Type_Record, p)
-extern void print_symbol_value_magic (Lisp_Object, Lisp_Object, int);
+void print_symbol_value_magic (Lisp_Object, Lisp_Object, int);
 
 /********** The various different symbol-value-magic types ***********/
 
@@ -96,8 +96,6 @@
    whose CURRENT-VALUE field then contains a symbol-value-forward.
  */
 
-extern CONST_IF_NOT_DEBUG struct lrecord_implementation
-  lrecord_symbol_value_forward[];
 struct symbol_value_forward
 {
   struct symbol_value_magic magic;
@@ -141,15 +139,14 @@
   int (*magicfun) (Lisp_Object sym, Lisp_Object *val, Lisp_Object in_object,
 		   int flags);
 };
-#define XSYMBOL_VALUE_FORWARD(v) \
-	((CONST struct symbol_value_forward *) XPNTR(v))
+DECLARE_LRECORD (symbol_value_forward, struct symbol_value_forward);
+#define XSYMBOL_VALUE_FORWARD(x) \
+	XRECORD (x, symbol_value_forward, struct symbol_value_forward)
 #define symbol_value_forward_forward(m) ((void *)((m)->magic.lcheader.next))
 #define symbol_value_forward_magicfun(m) ((m)->magicfun)
 
 /* 2. symbol-value-buffer-local */
 
-extern CONST_IF_NOT_DEBUG struct lrecord_implementation
-  lrecord_symbol_value_buffer_local[];
 struct symbol_value_buffer_local
 {
   struct symbol_value_magic magic;
@@ -184,7 +181,7 @@
      setting a value, there will always be an entry in the buffer's
      local_var_alist to set.)
 
-     However, these operation is potentially slow.  To speed it up,
+     However, this operation is potentially slow.  To speed it up,
      we cache the value in one buffer in this structure.
 
      NOTE: This is *not* a write-through cache.  I.e. when setting
@@ -229,17 +226,13 @@
   Lisp_Object current_buffer;
   Lisp_Object current_alist_element;
 };
-#define XSYMBOL_VALUE_BUFFER_LOCAL(v) \
-	((struct symbol_value_buffer_local *) XPNTR(v))
-#define SYMBOL_VALUE_BUFFER_LOCAL_P(v)			\
-  (SYMBOL_VALUE_MAGIC_P (v) &&				\
-   (XSYMBOL_VALUE_MAGIC_TYPE (v) == SYMVAL_BUFFER_LOCAL \
-    || XSYMBOL_VALUE_MAGIC_TYPE (v) == SYMVAL_SOME_BUFFER_LOCAL))
+DECLARE_LRECORD (symbol_value_buffer_local, struct symbol_value_buffer_local);
+#define XSYMBOL_VALUE_BUFFER_LOCAL(x) \
+	XRECORD (x, symbol_value_buffer_local, struct symbol_value_buffer_local)
+#define SYMBOL_VALUE_BUFFER_LOCAL_P(x) RECORDP (x, symbol_value_buffer_local)
 
 /* 3. symbol-value-lisp-magic */
 
-extern CONST_IF_NOT_DEBUG struct lrecord_implementation
-  lrecord_symbol_value_lisp_magic[];
 enum lisp_magic_handler
 {
   MAGIC_HANDLER_GET_VALUE,
@@ -258,47 +251,42 @@
   Lisp_Object harg[MAGIC_HANDLER_MAX];
   Lisp_Object shadowed;
 };
-#define XSYMBOL_VALUE_LISP_MAGIC(v)			\
-	((struct symbol_value_lisp_magic *) XPNTR (v))
-#define SYMBOL_VALUE_LISP_MAGIC_P(v)			\
-  (SYMBOL_VALUE_MAGIC_P (v) &&				\
-   XSYMBOL_VALUE_MAGIC_TYPE (v) == SYMVAL_LISP_MAGIC)
+DECLARE_LRECORD (symbol_value_lisp_magic, struct symbol_value_lisp_magic);
+#define XSYMBOL_VALUE_LISP_MAGIC(x) \
+	XRECORD (x, symbol_value_lisp_magic, struct symbol_value_lisp_magic)
+#define SYMBOL_VALUE_LISP_MAGIC_P(x) RECORDP (x, symbol_value_lisp_magic)
 
 /* 4. symbol-value-varalias */
 
-extern CONST_IF_NOT_DEBUG struct lrecord_implementation
-  lrecord_symbol_value_varalias[];
 struct symbol_value_varalias
 {
   struct symbol_value_magic magic;
   Lisp_Object aliasee;
   Lisp_Object shadowed;
 };
-#define XSYMBOL_VALUE_VARALIAS(v)			\
-	((struct symbol_value_varalias *) XPNTR (v))
-#define SYMBOL_VALUE_VARALIAS_P(v)			\
-  (SYMBOL_VALUE_MAGIC_P (v) &&				\
-   XSYMBOL_VALUE_MAGIC_TYPE (v) == SYMVAL_VARALIAS)
+DECLARE_LRECORD (symbol_value_varalias,	struct symbol_value_varalias);
+#define XSYMBOL_VALUE_VARALIAS(x) \
+	XRECORD (x, symbol_value_varalias, struct symbol_value_varalias)
+#define SYMBOL_VALUE_VARALIAS_P(x) RECORDP (x, symbol_value_varalias)
 #define symbol_value_varalias_aliasee(m) ((m)->aliasee)
 #define symbol_value_varalias_shadowed(m) ((m)->shadowed)
 
 /* DEFSUBR (Fname);
  is how we define the symbol for function `Fname' at start-up time. */
 #define DEFSUBR(Fname) defsubr (&S##Fname)
-extern void defsubr (struct Lisp_Subr *);
+void defsubr (struct Lisp_Subr *);
 
-extern void defsymbol (Lisp_Object *location, CONST char *name);
+void defsymbol (Lisp_Object *location, CONST char *name);
 
-extern void defkeyword (Lisp_Object *location, CONST char *name);
+void defkeyword (Lisp_Object *location, CONST char *name);
 
-extern void deferror (Lisp_Object *symbol, CONST char *name,
-		      CONST char *message, Lisp_Object inherits_from);
+void deferror (Lisp_Object *symbol, CONST char *name,
+	       CONST char *message, Lisp_Object inherits_from);
 
 /* Macros we use to define forwarded Lisp variables.
    These are used in the syms_of_FILENAME functions.  */
 
-extern void defvar_mumble (CONST char *names,
-                           CONST void *magic, int sizeof_magic);
+void defvar_mumble (CONST char *names, CONST void *magic, size_t sizeof_magic);
 
 #ifdef USE_INDEXED_LRECORD_IMPLEMENTATION
 # define symbol_value_forward_lheader_initializer { 1, 0, 0 }
@@ -307,13 +295,8 @@
    { lrecord_symbol_value_forward }
 #endif
 
-#define DEFVAR_HEADER(lname, c_location, forward_type) do {	\
-  static CONST struct symbol_value_forward I_hate_C		\
-   = { { { symbol_value_forward_lheader_initializer,		\
-	   (struct lcrecord_header *) (c_location), 69 },	\
-         forward_type }, 0 };					\
-  defvar_mumble ((lname), &I_hate_C, sizeof (I_hate_C));	\
-} while (0)
+#define DEFVAR_HEADER(lname, c_location, forward_type) \
+     	DEFVAR_MAGIC_HEADER (lname, c_location, forward_type, 0)
 
 #define DEFVAR_MAGIC_HEADER(lname, c_location, forward_type, magicfun) do {	\
   static CONST struct symbol_value_forward I_hate_C				\
@@ -323,9 +306,6 @@
   defvar_mumble ((lname), &I_hate_C, sizeof (I_hate_C));			\
 } while (0)
 
-/* These discard their DOC arg because it is snarfed by make-docfile
- *  and stored in an external file. */
-
 #define DEFVAR_HEADER_GCPRO(lname, c_location, symbol_value_type) do {	\
   DEFVAR_HEADER (lname, c_location, symbol_value_type);			\
   staticpro (c_location);						\