Mercurial > hg > xemacs-beta
comparison src/lisp.h @ 430:a5df635868b2 r21-2-23
Import from CVS: tag r21-2-23
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:29:08 +0200 |
parents | 3ecd8885ac67 |
children | 9d177e8d4150 |
comparison
equal
deleted
inserted
replaced
429:8305706cbb93 | 430:a5df635868b2 |
---|---|
132 to a malloced array of TYPE objects (or possibly a NULL pointer, | 132 to a malloced array of TYPE objects (or possibly a NULL pointer, |
133 if SIZEVAR is 0), with the total size stored in SIZEVAR. This | 133 if SIZEVAR is 0), with the total size stored in SIZEVAR. This |
134 macro will realloc BASEVAR as necessary so that it can hold at | 134 macro will realloc BASEVAR as necessary so that it can hold at |
135 least NEEDED_SIZE objects. The reallocing is done by doubling, | 135 least NEEDED_SIZE objects. The reallocing is done by doubling, |
136 which ensures constant amortized time per element. */ | 136 which ensures constant amortized time per element. */ |
137 #define DO_REALLOC(basevar, sizevar, needed_size, type) do \ | 137 #define DO_REALLOC(basevar, sizevar, needed_size, type) do { \ |
138 { \ | |
139 /* Avoid side-effectualness. */ \ | |
140 /* Dammit! Macros suffer from dynamic scope! */ \ | |
141 /* We demand inline functions! */ \ | |
142 size_t do_realloc_needed_size = (needed_size); \ | 138 size_t do_realloc_needed_size = (needed_size); \ |
143 size_t do_realloc_newsize = 0; \ | 139 if ((sizevar) < do_realloc_needed_size) \ |
144 while ((sizevar) < (do_realloc_needed_size)) { \ | 140 { \ |
145 do_realloc_newsize = 2*(sizevar); \ | 141 if ((sizevar) < 32) \ |
146 if (do_realloc_newsize < 32) \ | 142 (sizevar) = 32; \ |
147 do_realloc_newsize = 32; \ | 143 while ((sizevar) < do_realloc_needed_size) \ |
148 (sizevar) = do_realloc_newsize; \ | 144 (sizevar) *= 2; \ |
149 } \ | 145 XREALLOC_ARRAY (basevar, type, (sizevar)); \ |
150 if (do_realloc_newsize) \ | 146 } \ |
151 XREALLOC_ARRAY (basevar, type, do_realloc_newsize); \ | |
152 } while (0) | 147 } while (0) |
153 | 148 |
154 #ifdef ERROR_CHECK_MALLOC | 149 #ifdef ERROR_CHECK_MALLOC |
155 void xfree_1 (void *); | 150 void xfree_1 (void *); |
156 #define xfree(lvalue) do \ | 151 #define xfree(lvalue) do \ |
2862 extern Lisp_Object Qprint_string_length, Qprocess, Qprogn, Qprovide, Qquit; | 2857 extern Lisp_Object Qprint_string_length, Qprocess, Qprogn, Qprovide, Qquit; |
2863 extern Lisp_Object Qquote, Qrange_error, Qrassoc, Qrassq, Qread_char; | 2858 extern Lisp_Object Qquote, Qrange_error, Qrassoc, Qrassq, Qread_char; |
2864 extern Lisp_Object Qread_from_minibuffer, Qreally_early_error_handler; | 2859 extern Lisp_Object Qread_from_minibuffer, Qreally_early_error_handler; |
2865 extern Lisp_Object Qregion_beginning, Qregion_end, Qrequire, Qresource; | 2860 extern Lisp_Object Qregion_beginning, Qregion_end, Qrequire, Qresource; |
2866 extern Lisp_Object Qreturn, Qreverse, Qright, Qrun_hooks, Qsans_modifiers; | 2861 extern Lisp_Object Qreturn, Qreverse, Qright, Qrun_hooks, Qsans_modifiers; |
2867 extern Lisp_Object Qsave_buffers_kill_emacs, Qsearch, Qselected, Qself_insert_command; | 2862 extern Lisp_Object Qsave_buffers_kill_emacs, Qsearch, Qselected; |
2863 extern Lisp_Object Qself_insert_command, Qself_insert_defer_undo; | |
2868 extern Lisp_Object Qsequencep, Qsetting_constant, Qseven, Qshift_jis, Qshort; | 2864 extern Lisp_Object Qsequencep, Qsetting_constant, Qseven, Qshift_jis, Qshort; |
2869 extern Lisp_Object Qsignal, Qsimple, Qsingularity_error, Qsize, Qspace; | 2865 extern Lisp_Object Qsignal, Qsimple, Qsingularity_error, Qsize, Qspace; |
2870 extern Lisp_Object Qspecifier, Qstandard_input, Qstandard_output, Qstart_open; | 2866 extern Lisp_Object Qspecifier, Qstandard_input, Qstandard_output, Qstart_open; |
2871 extern Lisp_Object Qstream, Qstring, Qstring_lessp, Qsubwindow; | 2867 extern Lisp_Object Qstream, Qstring, Qstring_lessp, Qsubwindow; |
2872 extern Lisp_Object Qsubwindow_image_instance_p, Qsymbol, Qsyntax, Qt, Qtest; | 2868 extern Lisp_Object Qsubwindow_image_instance_p, Qsymbol, Qsyntax, Qt, Qtest; |