comparison src/lisp.h @ 5140:e5380fdaf8f1

merge
author Ben Wing <ben@xemacs.org>
date Sat, 13 Mar 2010 05:38:34 -0600
parents a48ef26d87ee 7be849cb8828
children 186aebf7f6c6
comparison
equal deleted inserted replaced
5139:a48ef26d87ee 5140:e5380fdaf8f1
2389 { 2389 {
2390 Dynarr_declare (struct face_cachel); 2390 Dynarr_declare (struct face_cachel);
2391 } face_cachel_dynarr; 2391 } face_cachel_dynarr;
2392 2392
2393 #ifdef NEW_GC 2393 #ifdef NEW_GC
2394 DECLARE_LRECORD (face_cachel_dynarr, face_cachel_dynarr); 2394 DECLARE_LISP_OBJECT (face_cachel_dynarr, face_cachel_dynarr);
2395 #define XFACE_CACHEL_DYNARR(x) \ 2395 #define XFACE_CACHEL_DYNARR(x) \
2396 XRECORD (x, face_cachel_dynarr, face_cachel_dynarr) 2396 XRECORD (x, face_cachel_dynarr, face_cachel_dynarr)
2397 #define wrap_face_cachel_dynarr(p) wrap_record (p, face_cachel_dynarr) 2397 #define wrap_face_cachel_dynarr(p) wrap_record (p, face_cachel_dynarr)
2398 #define FACE_CACHEL_DYNARRP(x) RECORDP (x, face_cachel_dynarr) 2398 #define FACE_CACHEL_DYNARRP(x) RECORDP (x, face_cachel_dynarr)
2399 #define CHECK_FACE_CACHEL_DYNARR(x) CHECK_RECORD (x, face_cachel_dynarr) 2399 #define CHECK_FACE_CACHEL_DYNARR(x) CHECK_RECORD (x, face_cachel_dynarr)
2404 { 2404 {
2405 Dynarr_declare (struct glyph_cachel); 2405 Dynarr_declare (struct glyph_cachel);
2406 } glyph_cachel_dynarr; 2406 } glyph_cachel_dynarr;
2407 2407
2408 #ifdef NEW_GC 2408 #ifdef NEW_GC
2409 DECLARE_LRECORD (glyph_cachel_dynarr, glyph_cachel_dynarr); 2409 DECLARE_LISP_OBJECT (glyph_cachel_dynarr, glyph_cachel_dynarr);
2410 #define XGLYPH_CACHEL_DYNARR(x) \ 2410 #define XGLYPH_CACHEL_DYNARR(x) \
2411 XRECORD (x, glyph_cachel_dynarr, glyph_cachel_dynarr) 2411 XRECORD (x, glyph_cachel_dynarr, glyph_cachel_dynarr)
2412 #define wrap_glyph_cachel_dynarr(p) wrap_record (p, glyph_cachel_dynarr) 2412 #define wrap_glyph_cachel_dynarr(p) wrap_record (p, glyph_cachel_dynarr)
2413 #define GLYPH_CACHEL_DYNARRP(x) RECORDP (x, glyph_cachel_dynarr) 2413 #define GLYPH_CACHEL_DYNARRP(x) RECORDP (x, glyph_cachel_dynarr)
2414 #define CHECK_GLYPH_CACHEL_DYNARR(x) CHECK_RECORD (x, glyph_cachel_dynarr) 2414 #define CHECK_GLYPH_CACHEL_DYNARR(x) CHECK_RECORD (x, glyph_cachel_dynarr)
2465 2465
2466 /* In a cons, the markbit of the car is the gc mark bit */ 2466 /* In a cons, the markbit of the car is the gc mark bit */
2467 2467
2468 struct Lisp_Cons 2468 struct Lisp_Cons
2469 { 2469 {
2470 struct lrecord_header lheader; 2470 FROB_BLOCK_LISP_OBJECT_HEADER lheader;
2471 Lisp_Object car_, cdr_; 2471 Lisp_Object car_, cdr_;
2472 }; 2472 };
2473 typedef struct Lisp_Cons Lisp_Cons; 2473 typedef struct Lisp_Cons Lisp_Cons;
2474 2474
2475 #if 0 /* FSFmacs */ 2475 #if 0 /* FSFmacs */
2482 struct buffer *buffer; 2482 struct buffer *buffer;
2483 int charbpos; 2483 int charbpos;
2484 }; 2484 };
2485 #endif 2485 #endif
2486 2486
2487 DECLARE_MODULE_API_LRECORD (cons, Lisp_Cons); 2487 DECLARE_MODULE_API_LISP_OBJECT (cons, Lisp_Cons);
2488 #define XCONS(x) XRECORD (x, cons, Lisp_Cons) 2488 #define XCONS(x) XRECORD (x, cons, Lisp_Cons)
2489 #define wrap_cons(p) wrap_record (p, cons) 2489 #define wrap_cons(p) wrap_record (p, cons)
2490 #define CONSP(x) RECORDP (x, cons) 2490 #define CONSP(x) RECORDP (x, cons)
2491 #define CHECK_CONS(x) CHECK_RECORD (x, cons) 2491 #define CHECK_CONS(x) CHECK_RECORD (x, cons)
2492 #define CONCHECK_CONS(x) CONCHECK_RECORD (x, cons) 2492 #define CONCHECK_CONS(x) CONCHECK_RECORD (x, cons)
3020 /*------------------------------ string --------------------------------*/ 3020 /*------------------------------ string --------------------------------*/
3021 3021
3022 #ifdef NEW_GC 3022 #ifdef NEW_GC
3023 struct Lisp_String_Direct_Data 3023 struct Lisp_String_Direct_Data
3024 { 3024 {
3025 struct lrecord_header header; 3025 NORMAL_LISP_OBJECT_HEADER header;
3026 Bytecount size; 3026 Bytecount size;
3027 Ibyte data[1]; 3027 Ibyte data[1];
3028 }; 3028 };
3029 typedef struct Lisp_String_Direct_Data Lisp_String_Direct_Data; 3029 typedef struct Lisp_String_Direct_Data Lisp_String_Direct_Data;
3030 3030
3031 DECLARE_MODULE_API_LRECORD (string_direct_data, Lisp_String_Direct_Data); 3031 DECLARE_MODULE_API_LISP_OBJECT (string_direct_data, Lisp_String_Direct_Data);
3032 #define XSTRING_DIRECT_DATA(x) \ 3032 #define XSTRING_DIRECT_DATA(x) \
3033 XRECORD (x, string_direct_data, Lisp_String_Direct_Data) 3033 XRECORD (x, string_direct_data, Lisp_String_Direct_Data)
3034 #define wrap_string_direct_data(p) wrap_record (p, string_direct_data) 3034 #define wrap_string_direct_data(p) wrap_record (p, string_direct_data)
3035 #define STRING_DIRECT_DATAP(x) RECORDP (x, string_direct_data) 3035 #define STRING_DIRECT_DATAP(x) RECORDP (x, string_direct_data)
3036 #define CHECK_STRING_DIRECT_DATA(x) CHECK_RECORD (x, string_direct_data) 3036 #define CHECK_STRING_DIRECT_DATA(x) CHECK_RECORD (x, string_direct_data)
3040 #define XSTRING_DIRECT_DATA_DATA(x) XSTRING_DIRECT_DATA (x)->data 3040 #define XSTRING_DIRECT_DATA_DATA(x) XSTRING_DIRECT_DATA (x)->data
3041 3041
3042 3042
3043 struct Lisp_String_Indirect_Data 3043 struct Lisp_String_Indirect_Data
3044 { 3044 {
3045 struct lrecord_header header; 3045 NORMAL_LISP_OBJECT_HEADER header;
3046 Bytecount size; 3046 Bytecount size;
3047 Ibyte *data; 3047 Ibyte *data;
3048 }; 3048 };
3049 typedef struct Lisp_String_Indirect_Data Lisp_String_Indirect_Data; 3049 typedef struct Lisp_String_Indirect_Data Lisp_String_Indirect_Data;
3050 3050
3051 DECLARE_MODULE_API_LRECORD (string_indirect_data, Lisp_String_Indirect_Data); 3051 DECLARE_MODULE_API_LISP_OBJECT (string_indirect_data, Lisp_String_Indirect_Data);
3052 #define XSTRING_INDIRECT_DATA(x) \ 3052 #define XSTRING_INDIRECT_DATA(x) \
3053 XRECORD (x, string_indirect_data, Lisp_String_Indirect_Data) 3053 XRECORD (x, string_indirect_data, Lisp_String_Indirect_Data)
3054 #define wrap_string_indirect_data(p) wrap_record (p, string_indirect_data) 3054 #define wrap_string_indirect_data(p) wrap_record (p, string_indirect_data)
3055 #define STRING_INDIRECT_DATAP(x) RECORDP (x, string_indirect_data) 3055 #define STRING_INDIRECT_DATAP(x) RECORDP (x, string_indirect_data)
3056 #define CHECK_STRING_INDIRECT_DATA(x) CHECK_RECORD (x, string_indirect_data) 3056 #define CHECK_STRING_INDIRECT_DATA(x) CHECK_RECORD (x, string_indirect_data)
3121 #define MAX_STRING_ASCII_BEGIN ((1 << 22) - 1) 3121 #define MAX_STRING_ASCII_BEGIN ((1 << 22) - 1)
3122 #else /* not NEW_GC */ 3122 #else /* not NEW_GC */
3123 #define MAX_STRING_ASCII_BEGIN ((1 << 21) - 1) 3123 #define MAX_STRING_ASCII_BEGIN ((1 << 21) - 1)
3124 #endif /* not NEW_GC */ 3124 #endif /* not NEW_GC */
3125 3125
3126 DECLARE_MODULE_API_LRECORD (string, Lisp_String); 3126 DECLARE_MODULE_API_LISP_OBJECT (string, Lisp_String);
3127 #define XSTRING(x) XRECORD (x, string, Lisp_String) 3127 #define XSTRING(x) XRECORD (x, string, Lisp_String)
3128 #define wrap_string(p) wrap_record (p, string) 3128 #define wrap_string(p) wrap_record (p, string)
3129 #define STRINGP(x) RECORDP (x, string) 3129 #define STRINGP(x) RECORDP (x, string)
3130 #define CHECK_STRING(x) CHECK_RECORD (x, string) 3130 #define CHECK_STRING(x) CHECK_RECORD (x, string)
3131 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) 3131 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string)
3194 3194
3195 /*------------------------------ vector --------------------------------*/ 3195 /*------------------------------ vector --------------------------------*/
3196 3196
3197 struct Lisp_Vector 3197 struct Lisp_Vector
3198 { 3198 {
3199 struct LCRECORD_HEADER header; 3199 NORMAL_LISP_OBJECT_HEADER header;
3200 long size; 3200 long size;
3201 Lisp_Object contents[1]; 3201 Lisp_Object contents[1];
3202 }; 3202 };
3203 typedef struct Lisp_Vector Lisp_Vector; 3203 typedef struct Lisp_Vector Lisp_Vector;
3204 3204
3205 DECLARE_LRECORD (vector, Lisp_Vector); 3205 DECLARE_LISP_OBJECT (vector, Lisp_Vector);
3206 #define XVECTOR(x) XRECORD (x, vector, Lisp_Vector) 3206 #define XVECTOR(x) XRECORD (x, vector, Lisp_Vector)
3207 #define wrap_vector(p) wrap_record (p, vector) 3207 #define wrap_vector(p) wrap_record (p, vector)
3208 #define VECTORP(x) RECORDP (x, vector) 3208 #define VECTORP(x) RECORDP (x, vector)
3209 #define CHECK_VECTOR(x) CHECK_RECORD (x, vector) 3209 #define CHECK_VECTOR(x) CHECK_RECORD (x, vector)
3210 #define CONCHECK_VECTOR(x) CONCHECK_RECORD (x, vector) 3210 #define CONCHECK_VECTOR(x) CONCHECK_RECORD (x, vector)
3231 #error You really have 128-bit integers?! 3231 #error You really have 128-bit integers?!
3232 #endif 3232 #endif
3233 3233
3234 struct Lisp_Bit_Vector 3234 struct Lisp_Bit_Vector
3235 { 3235 {
3236 struct LCRECORD_HEADER lheader; 3236 NORMAL_LISP_OBJECT_HEADER lheader;
3237 Elemcount size; 3237 Elemcount size;
3238 unsigned long bits[1]; 3238 unsigned long bits[1];
3239 }; 3239 };
3240 typedef struct Lisp_Bit_Vector Lisp_Bit_Vector; 3240 typedef struct Lisp_Bit_Vector Lisp_Bit_Vector;
3241 3241
3242 DECLARE_LRECORD (bit_vector, Lisp_Bit_Vector); 3242 DECLARE_LISP_OBJECT (bit_vector, Lisp_Bit_Vector);
3243 #define XBIT_VECTOR(x) XRECORD (x, bit_vector, Lisp_Bit_Vector) 3243 #define XBIT_VECTOR(x) XRECORD (x, bit_vector, Lisp_Bit_Vector)
3244 #define wrap_bit_vector(p) wrap_record (p, bit_vector) 3244 #define wrap_bit_vector(p) wrap_record (p, bit_vector)
3245 #define BIT_VECTORP(x) RECORDP (x, bit_vector) 3245 #define BIT_VECTORP(x) RECORDP (x, bit_vector)
3246 #define CHECK_BIT_VECTOR(x) CHECK_RECORD (x, bit_vector) 3246 #define CHECK_BIT_VECTOR(x) CHECK_RECORD (x, bit_vector)
3247 #define CONCHECK_BIT_VECTOR(x) CONCHECK_RECORD (x, bit_vector) 3247 #define CONCHECK_BIT_VECTOR(x) CONCHECK_RECORD (x, bit_vector)
3285 (((len) + LONGBITS_POWER_OF_2 - 1) >> LONGBITS_LOG2) 3285 (((len) + LONGBITS_POWER_OF_2 - 1) >> LONGBITS_LOG2)
3286 3286
3287 /* For when we want to include a bit vector in another structure, and we 3287 /* For when we want to include a bit vector in another structure, and we
3288 know it's of a fixed size. */ 3288 know it's of a fixed size. */
3289 #define DECLARE_INLINE_LISP_BIT_VECTOR(numbits) struct { \ 3289 #define DECLARE_INLINE_LISP_BIT_VECTOR(numbits) struct { \
3290 struct LCRECORD_HEADER lheader; \ 3290 NORMAL_LISP_OBJECT_HEADER lheader; \
3291 Elemcount size; \ 3291 Elemcount size; \
3292 unsigned long bits[BIT_VECTOR_LONG_STORAGE(numbits)]; \ 3292 unsigned long bits[BIT_VECTOR_LONG_STORAGE(numbits)]; \
3293 } 3293 }
3294 /*---------------------- array, sequence -----------------------------*/ 3294 /*---------------------- array, sequence -----------------------------*/
3295 3295
3320 /*------------------------------ symbol --------------------------------*/ 3320 /*------------------------------ symbol --------------------------------*/
3321 3321
3322 typedef struct Lisp_Symbol Lisp_Symbol; 3322 typedef struct Lisp_Symbol Lisp_Symbol;
3323 struct Lisp_Symbol 3323 struct Lisp_Symbol
3324 { 3324 {
3325 struct lrecord_header lheader; 3325 FROB_BLOCK_LISP_OBJECT_HEADER lheader;
3326 /* next symbol in this obarray bucket */ 3326 /* next symbol in this obarray bucket */
3327 Lisp_Symbol *next; 3327 Lisp_Symbol *next;
3328 Lisp_Object name; 3328 Lisp_Object name;
3329 Lisp_Object value; 3329 Lisp_Object value;
3330 Lisp_Object function; 3330 Lisp_Object function;
3336 && EQ (sym, oblookup (Vobarray, \ 3336 && EQ (sym, oblookup (Vobarray, \
3337 XSTRING_DATA (symbol_name (XSYMBOL (sym))), \ 3337 XSTRING_DATA (symbol_name (XSYMBOL (sym))), \
3338 XSTRING_LENGTH (symbol_name (XSYMBOL (sym)))))) 3338 XSTRING_LENGTH (symbol_name (XSYMBOL (sym))))))
3339 #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj)) 3339 #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj))
3340 3340
3341 DECLARE_MODULE_API_LRECORD (symbol, Lisp_Symbol); 3341 DECLARE_MODULE_API_LISP_OBJECT (symbol, Lisp_Symbol);
3342 #define XSYMBOL(x) XRECORD (x, symbol, Lisp_Symbol) 3342 #define XSYMBOL(x) XRECORD (x, symbol, Lisp_Symbol)
3343 #define wrap_symbol(p) wrap_record (p, symbol) 3343 #define wrap_symbol(p) wrap_record (p, symbol)
3344 #define SYMBOLP(x) RECORDP (x, symbol) 3344 #define SYMBOLP(x) RECORDP (x, symbol)
3345 #define CHECK_SYMBOL(x) CHECK_RECORD (x, symbol) 3345 #define CHECK_SYMBOL(x) CHECK_RECORD (x, symbol)
3346 #define CONCHECK_SYMBOL(x) CONCHECK_RECORD (x, symbol) 3346 #define CONCHECK_SYMBOL(x) CONCHECK_RECORD (x, symbol)
3364 We could define such types for n arguments, if needed. */ 3364 We could define such types for n arguments, if needed. */
3365 typedef Lisp_Object (*lisp_fn_t) (void); 3365 typedef Lisp_Object (*lisp_fn_t) (void);
3366 3366
3367 struct Lisp_Subr 3367 struct Lisp_Subr
3368 { 3368 {
3369 struct lrecord_header lheader; 3369 FROB_BLOCK_LISP_OBJECT_HEADER lheader;
3370 short min_args; 3370 short min_args;
3371 short max_args; 3371 short max_args;
3372 /* #### We should make these const Ascbyte * or const Ibyte *, not const 3372 /* #### We should make these const Ascbyte * or const Ibyte *, not const
3373 char *. */ 3373 char *. */
3374 const char *prompt; 3374 const char *prompt;
3376 const char *name; 3376 const char *name;
3377 lisp_fn_t subr_fn; 3377 lisp_fn_t subr_fn;
3378 }; 3378 };
3379 typedef struct Lisp_Subr Lisp_Subr; 3379 typedef struct Lisp_Subr Lisp_Subr;
3380 3380
3381 DECLARE_LRECORD (subr, Lisp_Subr); 3381 DECLARE_LISP_OBJECT (subr, Lisp_Subr);
3382 #define XSUBR(x) XRECORD (x, subr, Lisp_Subr) 3382 #define XSUBR(x) XRECORD (x, subr, Lisp_Subr)
3383 #define wrap_subr(p) wrap_record (p, subr) 3383 #define wrap_subr(p) wrap_record (p, subr)
3384 #define SUBRP(x) RECORDP (x, subr) 3384 #define SUBRP(x) RECORDP (x, subr)
3385 #define CHECK_SUBR(x) CHECK_RECORD (x, subr) 3385 #define CHECK_SUBR(x) CHECK_RECORD (x, subr)
3386 #define CONCHECK_SUBR(x) CONCHECK_RECORD (x, subr) 3386 #define CONCHECK_SUBR(x) CONCHECK_RECORD (x, subr)
3394 3394
3395 3395
3396 typedef struct Lisp_Marker Lisp_Marker; 3396 typedef struct Lisp_Marker Lisp_Marker;
3397 struct Lisp_Marker 3397 struct Lisp_Marker
3398 { 3398 {
3399 struct lrecord_header lheader; 3399 FROB_BLOCK_LISP_OBJECT_HEADER lheader;
3400 Lisp_Marker *next; 3400 Lisp_Marker *next;
3401 Lisp_Marker *prev; 3401 Lisp_Marker *prev;
3402 struct buffer *buffer; 3402 struct buffer *buffer;
3403 Membpos membpos; 3403 Membpos membpos;
3404 char insertion_type; 3404 char insertion_type;
3405 }; 3405 };
3406 3406
3407 DECLARE_MODULE_API_LRECORD (marker, Lisp_Marker); 3407 DECLARE_MODULE_API_LISP_OBJECT (marker, Lisp_Marker);
3408 #define XMARKER(x) XRECORD (x, marker, Lisp_Marker) 3408 #define XMARKER(x) XRECORD (x, marker, Lisp_Marker)
3409 #define wrap_marker(p) wrap_record (p, marker) 3409 #define wrap_marker(p) wrap_record (p, marker)
3410 #define MARKERP(x) RECORDP (x, marker) 3410 #define MARKERP(x) RECORDP (x, marker)
3411 #define CHECK_MARKER(x) CHECK_RECORD (x, marker) 3411 #define CHECK_MARKER(x) CHECK_RECORD (x, marker)
3412 #define CONCHECK_MARKER(x) CONCHECK_RECORD (x, marker) 3412 #define CONCHECK_MARKER(x) CONCHECK_RECORD (x, marker)
3637 free list. This makes a difference in the unlikely case of 3637 free list. This makes a difference in the unlikely case of
3638 sizeof(double) being smaller than sizeof(void *). */ 3638 sizeof(double) being smaller than sizeof(void *). */
3639 3639
3640 struct Lisp_Float 3640 struct Lisp_Float
3641 { 3641 {
3642 struct lrecord_header lheader; 3642 FROB_BLOCK_LISP_OBJECT_HEADER lheader;
3643 union { double d; struct Lisp_Float *unused_next_; } data; 3643 union { double d; struct Lisp_Float *unused_next_; } data;
3644 }; 3644 };
3645 typedef struct Lisp_Float Lisp_Float; 3645 typedef struct Lisp_Float Lisp_Float;
3646 3646
3647 DECLARE_LRECORD (float, Lisp_Float); 3647 DECLARE_LISP_OBJECT (float, Lisp_Float);
3648 #define XFLOAT(x) XRECORD (x, float, Lisp_Float) 3648 #define XFLOAT(x) XRECORD (x, float, Lisp_Float)
3649 #define wrap_float(p) wrap_record (p, float) 3649 #define wrap_float(p) wrap_record (p, float)
3650 #define FLOATP(x) RECORDP (x, float) 3650 #define FLOATP(x) RECORDP (x, float)
3651 #define CHECK_FLOAT(x) CHECK_RECORD (x, float) 3651 #define CHECK_FLOAT(x) CHECK_RECORD (x, float)
3652 #define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float) 3652 #define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float)
3725 3725
3726 /*---------------------------- weak boxes ------------------------------*/ 3726 /*---------------------------- weak boxes ------------------------------*/
3727 3727
3728 struct weak_box 3728 struct weak_box
3729 { 3729 {
3730 struct LCRECORD_HEADER header; 3730 NORMAL_LISP_OBJECT_HEADER header;
3731 Lisp_Object value; 3731 Lisp_Object value;
3732 3732
3733 Lisp_Object next_weak_box; /* don't mark through this! */ 3733 Lisp_Object next_weak_box; /* don't mark through this! */
3734 }; 3734 };
3735 3735
3736 void prune_weak_boxes (void); 3736 void prune_weak_boxes (void);
3737 Lisp_Object make_weak_box (Lisp_Object value); 3737 Lisp_Object make_weak_box (Lisp_Object value);
3738 Lisp_Object weak_box_ref (Lisp_Object value); 3738 Lisp_Object weak_box_ref (Lisp_Object value);
3739 3739
3740 DECLARE_LRECORD (weak_box, struct weak_box); 3740 DECLARE_LISP_OBJECT (weak_box, struct weak_box);
3741 #define XWEAK_BOX(x) XRECORD (x, weak_box, struct weak_box) 3741 #define XWEAK_BOX(x) XRECORD (x, weak_box, struct weak_box)
3742 #define XSET_WEAK_BOX(x, v) (XWEAK_BOX (x)->value = (v)) 3742 #define XSET_WEAK_BOX(x, v) (XWEAK_BOX (x)->value = (v))
3743 #define wrap_weak_box(p) wrap_record (p, weak_box) 3743 #define wrap_weak_box(p) wrap_record (p, weak_box)
3744 #define WEAK_BOXP(x) RECORDP (x, weak_box) 3744 #define WEAK_BOXP(x) RECORDP (x, weak_box)
3745 #define CHECK_WEAK_BOX(x) CHECK_RECORD (x, weak_box) 3745 #define CHECK_WEAK_BOX(x) CHECK_RECORD (x, weak_box)
3747 3747
3748 /*--------------------------- ephemerons ----------------------------*/ 3748 /*--------------------------- ephemerons ----------------------------*/
3749 3749
3750 struct ephemeron 3750 struct ephemeron
3751 { 3751 {
3752 struct LCRECORD_HEADER header; 3752 NORMAL_LISP_OBJECT_HEADER header;
3753 3753
3754 Lisp_Object key; 3754 Lisp_Object key;
3755 3755
3756 /* This field holds a pair. The cdr of this cons points to the next 3756 /* This field holds a pair. The cdr of this cons points to the next
3757 ephemeron in Vall_ephemerons. The car points to another pair 3757 ephemeron in Vall_ephemerons. The car points to another pair
3772 int continue_marking_ephemerons(void); 3772 int continue_marking_ephemerons(void);
3773 int finish_marking_ephemerons(void); 3773 int finish_marking_ephemerons(void);
3774 Lisp_Object zap_finalize_list(void); 3774 Lisp_Object zap_finalize_list(void);
3775 Lisp_Object make_ephemeron(Lisp_Object key, Lisp_Object value, Lisp_Object finalizer); 3775 Lisp_Object make_ephemeron(Lisp_Object key, Lisp_Object value, Lisp_Object finalizer);
3776 3776
3777 DECLARE_LRECORD(ephemeron, struct ephemeron); 3777 DECLARE_LISP_OBJECT(ephemeron, struct ephemeron);
3778 #define XEPHEMERON(x) XRECORD (x, ephemeron, struct ephemeron) 3778 #define XEPHEMERON(x) XRECORD (x, ephemeron, struct ephemeron)
3779 #define XEPHEMERON_REF(x) (XEPHEMERON (x)->value) 3779 #define XEPHEMERON_REF(x) (XEPHEMERON (x)->value)
3780 #define XEPHEMERON_NEXT(x) (XCDR (XEPHEMERON(x)->cons_chain)) 3780 #define XEPHEMERON_NEXT(x) (XCDR (XEPHEMERON(x)->cons_chain))
3781 #define XEPHEMERON_FINALIZER(x) (XCDR (XCAR (XEPHEMERON (x)->cons_chain))) 3781 #define XEPHEMERON_FINALIZER(x) (XCDR (XCAR (XEPHEMERON (x)->cons_chain)))
3782 #define XSET_EPHEMERON_NEXT(x, n) (XSETCDR (XEPHEMERON(x)->cons_chain, n)) 3782 #define XSET_EPHEMERON_NEXT(x, n) (XSETCDR (XEPHEMERON(x)->cons_chain, n))
3806 WEAK_LIST_FULL_ASSOC 3806 WEAK_LIST_FULL_ASSOC
3807 }; 3807 };
3808 3808
3809 struct weak_list 3809 struct weak_list
3810 { 3810 {
3811 struct LCRECORD_HEADER header; 3811 NORMAL_LISP_OBJECT_HEADER header;
3812 Lisp_Object list; /* don't mark through this! */ 3812 Lisp_Object list; /* don't mark through this! */
3813 enum weak_list_type type; 3813 enum weak_list_type type;
3814 Lisp_Object next_weak; /* don't mark through this! */ 3814 Lisp_Object next_weak; /* don't mark through this! */
3815 }; 3815 };
3816 3816
3817 DECLARE_LRECORD (weak_list, struct weak_list); 3817 DECLARE_LISP_OBJECT (weak_list, struct weak_list);
3818 #define XWEAK_LIST(x) XRECORD (x, weak_list, struct weak_list) 3818 #define XWEAK_LIST(x) XRECORD (x, weak_list, struct weak_list)
3819 #define wrap_weak_list(p) wrap_record (p, weak_list) 3819 #define wrap_weak_list(p) wrap_record (p, weak_list)
3820 #define WEAK_LISTP(x) RECORDP (x, weak_list) 3820 #define WEAK_LISTP(x) RECORDP (x, weak_list)
3821 #define CHECK_WEAK_LIST(x) CHECK_RECORD (x, weak_list) 3821 #define CHECK_WEAK_LIST(x) CHECK_RECORD (x, weak_list)
3822 #define CONCHECK_WEAK_LIST(x) CONCHECK_RECORD (x, weak_list) 3822 #define CONCHECK_WEAK_LIST(x) CONCHECK_RECORD (x, weak_list)
4788 #ifndef NEW_GC 4788 #ifndef NEW_GC
4789 extern EMACS_INT gc_generation_number[1]; 4789 extern EMACS_INT gc_generation_number[1];
4790 #endif /* not NEW_GC */ 4790 #endif /* not NEW_GC */
4791 int c_readonly (Lisp_Object); 4791 int c_readonly (Lisp_Object);
4792 int lisp_readonly (Lisp_Object); 4792 int lisp_readonly (Lisp_Object);
4793 MODULE_API void copy_lisp_object (Lisp_Object dst, Lisp_Object src);
4794 MODULE_API Lisp_Object build_istring (const Ibyte *); 4793 MODULE_API Lisp_Object build_istring (const Ibyte *);
4795 MODULE_API Lisp_Object build_cistring (const CIbyte *); 4794 MODULE_API Lisp_Object build_cistring (const CIbyte *);
4796 MODULE_API Lisp_Object build_ascstring (const Ascbyte *); 4795 MODULE_API Lisp_Object build_ascstring (const Ascbyte *);
4797 MODULE_API Lisp_Object build_extstring (const Extbyte *, Lisp_Object); 4796 MODULE_API Lisp_Object build_extstring (const Extbyte *, Lisp_Object);
4798 MODULE_API Lisp_Object make_string (const Ibyte *, Bytecount); 4797 MODULE_API Lisp_Object make_string (const Ibyte *, Bytecount);
6050 extern int in_debug_print; 6049 extern int in_debug_print;
6051 Lisp_Object internal_with_output_to_temp_buffer (Lisp_Object, 6050 Lisp_Object internal_with_output_to_temp_buffer (Lisp_Object,
6052 Lisp_Object (*) (Lisp_Object), 6051 Lisp_Object (*) (Lisp_Object),
6053 Lisp_Object, Lisp_Object); 6052 Lisp_Object, Lisp_Object);
6054 void float_to_string (char *, double); 6053 void float_to_string (char *, double);
6055 void internal_object_printer (Lisp_Object, Lisp_Object, int); 6054 void internal_object_printer (Lisp_Object obj, Lisp_Object printcharfun,
6055 int UNUSED (escapeflag));
6056 void external_object_printer (Lisp_Object obj, Lisp_Object printcharfun,
6057 int UNUSED (escapeflag));
6056 MODULE_API DECLARE_DOESNT_RETURN (printing_unreadable_object (const CIbyte *, 6058 MODULE_API DECLARE_DOESNT_RETURN (printing_unreadable_object (const CIbyte *,
6057 ...)) 6059 ...))
6058 PRINTF_ARGS (1, 2); 6060 PRINTF_ARGS (1, 2);
6059 DECLARE_DOESNT_RETURN (printing_unreadable_lcrecord (Lisp_Object obj, 6061 DECLARE_DOESNT_RETURN (printing_unreadable_lcrecord (Lisp_Object obj,
6060 const Ibyte *name)); 6062 const Ibyte *name));