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;