Mercurial > hg > xemacs-beta
comparison src/lisp.h @ 452:3d3049ae1304 r21-2-41
Import from CVS: tag r21-2-41
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:40:21 +0200 |
parents | 1ccc32a20af4 |
children | d7a9135ec789 |
comparison
equal
deleted
inserted
replaced
451:8ad70c5cd5d7 | 452:3d3049ae1304 |
---|---|
68 #define Dynarr_new(type) ((type##_dynarr *) Dynarr_newf (sizeof (type))) | 68 #define Dynarr_new(type) ((type##_dynarr *) Dynarr_newf (sizeof (type))) |
69 #define Dynarr_new2(dynarr_type, type) \ | 69 #define Dynarr_new2(dynarr_type, type) \ |
70 ((dynarr_type *) Dynarr_newf (sizeof (type))) | 70 ((dynarr_type *) Dynarr_newf (sizeof (type))) |
71 #define Dynarr_at(d, pos) ((d)->base[pos]) | 71 #define Dynarr_at(d, pos) ((d)->base[pos]) |
72 #define Dynarr_atp(d, pos) (&Dynarr_at (d, pos)) | 72 #define Dynarr_atp(d, pos) (&Dynarr_at (d, pos)) |
73 #define Dynarr_begin(d) Dynarr_atp (d, 0) | |
74 #define Dynarr_end(d) Dynarr_atp (d, Dynarr_length (d)) | |
75 #define Dynarr_sizeof(d) ((d)->cur * (d)->elsize) | |
73 #define Dynarr_length(d) ((d)->cur) | 76 #define Dynarr_length(d) ((d)->cur) |
74 #define Dynarr_largest(d) ((d)->largest) | 77 #define Dynarr_largest(d) ((d)->largest) |
75 #define Dynarr_reset(d) ((d)->cur = 0) | 78 #define Dynarr_reset(d) ((d)->cur = 0) |
76 #define Dynarr_add_many(d, el, len) Dynarr_insert_many (d, el, len, (d)->cur) | 79 #define Dynarr_add_many(d, el, len) Dynarr_insert_many (d, el, len, (d)->cur) |
77 #define Dynarr_insert_many_at_start(d, el, len) \ | 80 #define Dynarr_insert_many_at_start(d, el, len) \ |
568 typedef struct | 571 typedef struct |
569 { | 572 { |
570 Dynarr_declare (Lisp_Object); | 573 Dynarr_declare (Lisp_Object); |
571 } Lisp_Object_dynarr; | 574 } Lisp_Object_dynarr; |
572 | 575 |
576 typedef struct | |
577 { | |
578 Dynarr_declare (Lisp_Object *); | |
579 } Lisp_Object_ptr_dynarr; | |
580 | |
573 /* Close your eyes now lest you vomit or spontaneously combust ... */ | 581 /* Close your eyes now lest you vomit or spontaneously combust ... */ |
574 | 582 |
575 #define HACKEQ_UNSAFE(obj1, obj2) \ | 583 #define HACKEQ_UNSAFE(obj1, obj2) \ |
576 (EQ (obj1, obj2) || (!POINTER_TYPE_P (XTYPE (obj1)) \ | 584 (EQ (obj1, obj2) || (!POINTER_TYPE_P (XTYPE (obj1)) \ |
577 && !POINTER_TYPE_P (XTYPE (obj2)) \ | 585 && !POINTER_TYPE_P (XTYPE (obj2)) \ |
2095 Lisp_Object ret_nunb_val = (expr); \ | 2103 Lisp_Object ret_nunb_val = (expr); \ |
2096 if (!UNBOUNDP (ret_nunb_val)) \ | 2104 if (!UNBOUNDP (ret_nunb_val)) \ |
2097 RETURN_SANS_WARNINGS ret_nunb_val; \ | 2105 RETURN_SANS_WARNINGS ret_nunb_val; \ |
2098 } while (0) | 2106 } while (0) |
2099 | 2107 |
2108 extern Lisp_Object_ptr_dynarr *staticpros; | |
2109 | |
2100 /* Call staticpro (&var) to protect static variable `var'. */ | 2110 /* Call staticpro (&var) to protect static variable `var'. */ |
2101 void staticpro (Lisp_Object *); | 2111 void staticpro (Lisp_Object *); |
2102 | 2112 |
2103 /* Call staticpro_nodump (&var) to protect static variable `var'. */ | 2113 /* Call staticpro_nodump (&var) to protect static variable `var'. */ |
2104 /* var will not be saved at dump time */ | 2114 /* var will not be saved at dump time */ |
2105 void staticpro_nodump (Lisp_Object *); | 2115 void staticpro_nodump (Lisp_Object *); |
2106 | 2116 |
2107 /* Call dumpstruct(&var, &desc) to dump the structure pointed to by `var'. */ | 2117 /* Call dump_add_root_struct_ptr (&var, &desc) to dump the structure pointed to by `var'. */ |
2108 void dumpstruct (void *, const struct struct_description *); | 2118 #ifdef PDUMP |
2109 | 2119 void dump_add_root_struct_ptr (void *, const struct struct_description *); |
2110 /* Call dumpopaque(&var, size) to dump the opaque static structure `var'. */ | 2120 #else |
2111 void dumpopaque (void *, size_t); | 2121 #define dump_add_root_struct_ptr(varaddr,descaddr) DO_NOTHING |
2112 | 2122 #endif |
2113 /* Call pdump_wire(&var) to ensure that var is properly updated after pdump. */ | 2123 |
2114 void pdump_wire (Lisp_Object *); | 2124 /* Call dump_add_opaque (&var, size) to dump the opaque static structure `var'. */ |
2115 | 2125 #ifdef PDUMP |
2116 /* Call pdump_wire(&var) to ensure that var is properly updated after | 2126 void dump_add_opaque (void *, size_t); |
2117 pdump. var must point to a linked list of objects out of which | 2127 #else |
2128 #define dump_add_opaque(varaddr,size) DO_NOTHING | |
2129 #endif | |
2130 | |
2131 /* Call dump_add_root_object (&var) to ensure that var is properly updated after pdump. */ | |
2132 #ifdef PDUMP | |
2133 void dump_add_root_object (Lisp_Object *); | |
2134 #else | |
2135 #define dump_add_root_object(varaddr) DO_NOTHING | |
2136 #endif | |
2137 | |
2138 /* Call dump_add_root_object (&var) to ensure that var is properly updated after | |
2139 pdump. var must point to a linked list of objects out of which | |
2118 some may not be dumped */ | 2140 some may not be dumped */ |
2119 void pdump_wire_list (Lisp_Object *); | 2141 #ifdef PDUMP |
2142 void dump_add_weak_object_chain (Lisp_Object *); | |
2143 #else | |
2144 #define dump_add_weak_object_chain(varaddr) DO_NOTHING | |
2145 #endif | |
2120 | 2146 |
2121 /* Nonzero means Emacs has already been initialized. | 2147 /* Nonzero means Emacs has already been initialized. |
2122 Used during startup to detect startup of dumped Emacs. */ | 2148 Used during startup to detect startup of dumped Emacs. */ |
2123 extern int initialized; | 2149 extern int initialized; |
2124 | 2150 |