comparison src/symeval.h @ 211:78478c60bfcd r20-4b4

Import from CVS: tag r20-4b4
author cvs
date Mon, 13 Aug 2007 10:05:51 +0200
parents 3d6bfa290dbd
children c5d627a313b1
comparison
equal deleted inserted replaced
210:49f55ca3ba57 211:78478c60bfcd
74 struct lcrecord_header lcheader; 74 struct lcrecord_header lcheader;
75 enum symbol_value_type type; 75 enum symbol_value_type type;
76 }; 76 };
77 #define SYMBOL_VALUE_MAGIC_P(x) \ 77 #define SYMBOL_VALUE_MAGIC_P(x) \
78 (LRECORDP (x) \ 78 (LRECORDP (x) \
79 && (XRECORD_LHEADER (x)->implementation->printer \ 79 && (XRECORD_LHEADER_IMPLEMENTATION (x)->printer \
80 == print_symbol_value_magic)) 80 == print_symbol_value_magic))
81 #define XSYMBOL_VALUE_MAGIC_TYPE(v) \ 81 #define XSYMBOL_VALUE_MAGIC_TYPE(v) \
82 (((struct symbol_value_magic *) XPNTR (v))->type) 82 (((struct symbol_value_magic *) XPNTR (v))->type)
83 #define XSETSYMBOL_VALUE_MAGIC(s, p) XSETOBJ (s, Lisp_Type_Record, p) 83 #define XSETSYMBOL_VALUE_MAGIC(s, p) XSETOBJ (s, Lisp_Type_Record, p)
84 extern void print_symbol_value_magic (Lisp_Object, Lisp_Object, int); 84 extern void print_symbol_value_magic (Lisp_Object, Lisp_Object, int);
298 These are used in the syms_of_FILENAME functions. */ 298 These are used in the syms_of_FILENAME functions. */
299 299
300 extern void defvar_mumble (CONST char *names, 300 extern void defvar_mumble (CONST char *names,
301 CONST void *magic, int sizeof_magic); 301 CONST void *magic, int sizeof_magic);
302 302
303 #ifdef USE_INDEXED_LRECORD_IMPLEMENTATION
304 # define symbol_value_forward_lheader_initializer { 1, 0, 0 }
305 #else
306 # define symbol_value_forward_lheader_initializer \
307 { lrecord_symbol_value_forward }
308 #endif
309
303 #define DEFVAR_HEADER(lname, c_location, forward_type) do { \ 310 #define DEFVAR_HEADER(lname, c_location, forward_type) do { \
304 static CONST struct symbol_value_forward I_hate_C \ 311 static CONST struct symbol_value_forward I_hate_C \
305 = { { { { lrecord_symbol_value_forward }, \ 312 = { { { symbol_value_forward_lheader_initializer, \
306 (struct lcrecord_header *) (c_location), 69 }, \ 313 (struct lcrecord_header *) (c_location), 69 }, \
307 forward_type }, 0 }; \ 314 forward_type }, 0 }; \
308 defvar_mumble ((lname), &I_hate_C, sizeof (I_hate_C)); \ 315 defvar_mumble ((lname), &I_hate_C, sizeof (I_hate_C)); \
309 } while (0) 316 } while (0)
310 317
311 #define DEFVAR_MAGIC_HEADER(lname, c_location, forward_type, magicfun) do { \ 318 #define DEFVAR_MAGIC_HEADER(lname, c_location, forward_type, magicfun) do { \
312 static CONST struct symbol_value_forward I_hate_C \ 319 static CONST struct symbol_value_forward I_hate_C \
313 = { { { { lrecord_symbol_value_forward }, \ 320 = { { { symbol_value_forward_lheader_initializer, \
314 (struct lcrecord_header *) (c_location), 69 }, \ 321 (struct lcrecord_header *) (c_location), 69 }, \
315 forward_type }, magicfun }; \ 322 forward_type }, magicfun }; \
316 defvar_mumble ((lname), &I_hate_C, sizeof (I_hate_C)); \ 323 defvar_mumble ((lname), &I_hate_C, sizeof (I_hate_C)); \
317 } while (0) 324 } while (0)
318 325