changeset 55649:10e402439453

(GET_OVERLAYS_AT): New macro.
author Kim F. Storm <storm@cua.dk>
date Mon, 17 May 2004 22:46:34 +0000
parents a9c3a4a0ef8f
children c8d69f7304ee
files src/buffer.h
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.h	Mon May 17 22:29:59 2004 +0000
+++ b/src/buffer.h	Mon May 17 22:46:34 2004 +0000
@@ -823,6 +823,25 @@
 extern void fix_overlays_before P_ ((struct buffer *, EMACS_INT, EMACS_INT));
 extern void mmap_set_vars P_ ((int));
 
+/* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements.
+   If NEXTP is non-NULL, return next overlay there.
+   See overlay_at arg CHANGE_REQ for meaning of CHRQ arg.  */
+
+#define GET_OVERLAYS_AT(posn, overlays, noverlays, nextp, chrq)		\
+  do {									\
+    int maxlen = 40;							\
+    overlays = (Lisp_Object *) alloca (maxlen * sizeof (Lisp_Object));	\
+    noverlays = overlays_at (posn, 0, &overlays, &maxlen,		\
+			     nextp, NULL, chrq);				\
+    if (noverlays > maxlen)						\
+      {									\
+	maxlen = noverlays;						\
+	overlays = (Lisp_Object *) alloca (maxlen * sizeof (Lisp_Object)); \
+	noverlays = overlays_at (posn, 0, &overlays, &maxlen,		\
+				 nextp, NULL, chrq);			\
+      }									\
+  } while (0)
+
 EXFUN (Fbuffer_name, 1);
 EXFUN (Fget_file_buffer, 1);
 EXFUN (Fnext_overlay_change, 1);