comparison src/alloc.c @ 2782:683f4472f1c8

* lisp.h (Lisp_Overlay): New tag. (OVERLAYP): New predicate. (CHECK_OVERLAY): New type-checker. (Qoverlayp): New extern declaration. * buffer.c (Foverlayp): New function. (Qoverlayp): New atom. (overlays_at, recenter_overlay_lists): Abort if we encounter an invalid overlay. (syms_of_buffer): defsubr Soverlayp; initialize Qoverlayp. (Fdelete_overlay): Set the overlay's markers to point nowhere. Use CHECK_OVERLAY instead of signalling a special error. (Fmove_overlay, Foverlay_put): Use CHECK_OVERLAY instead of signalling a special error. (Foverlay_get): Use CHECK_OVERLAY. * fns.c (internal_equal): Define this for overlays. * buffer.h (OVERLAY_VALID): Define in terms of OVERLAYP. * print.c (print): Give overlays their own print syntax. * alloc.c (mark_object): Treat overlays like conses.
author Jim Blandy <jimb@redhat.com>
date Fri, 14 May 1993 14:43:00 +0000
parents 7ba4316ae840
children e94a593c3952
comparison
equal deleted inserted replaced
2781:fde05936aebb 2782:683f4472f1c8
1607 break; 1607 break;
1608 1608
1609 case Lisp_Cons: 1609 case Lisp_Cons:
1610 case Lisp_Buffer_Local_Value: 1610 case Lisp_Buffer_Local_Value:
1611 case Lisp_Some_Buffer_Local_Value: 1611 case Lisp_Some_Buffer_Local_Value:
1612 case Lisp_Overlay:
1612 { 1613 {
1613 register struct Lisp_Cons *ptr = XCONS (obj); 1614 register struct Lisp_Cons *ptr = XCONS (obj);
1614 if (XMARKBIT (ptr->car)) break; 1615 if (XMARKBIT (ptr->car)) break;
1615 XMARK (ptr->car); 1616 XMARK (ptr->car);
1616 /* If the cdr is nil, avoid recursion for the car. */ 1617 /* If the cdr is nil, avoid recursion for the car. */