Mercurial > hg > xemacs-beta
diff src/marker.c @ 398:74fd4e045ea6 r21-2-29
Import from CVS: tag r21-2-29
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:13:30 +0200 |
parents | 8626e4521993 |
children | a86b2b5e0111 |
line wrap: on
line diff
--- a/src/marker.c Mon Aug 13 11:12:06 2007 +0200 +++ b/src/marker.c Mon Aug 13 11:13:30 2007 +0200 @@ -36,9 +36,9 @@ #include "buffer.h" static Lisp_Object -mark_marker (Lisp_Object obj, void (*markobj) (Lisp_Object)) +mark_marker (Lisp_Object obj) { - struct Lisp_Marker *marker = XMARKER (obj); + Lisp_Marker *marker = XMARKER (obj); Lisp_Object buf; /* DO NOT mark through the marker's chain. The buffer's markers chain does not preserve markers from gc; @@ -55,7 +55,7 @@ static void print_marker (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { - struct Lisp_Marker *marker = XMARKER (obj); + Lisp_Marker *marker = XMARKER (obj); char buf[200]; if (print_readably) @@ -66,7 +66,7 @@ write_c_string (GETTEXT ("in no buffer"), printcharfun); else { - sprintf (buf, "at %d in ", marker_position (obj)); + sprintf (buf, "at %ld in ", (long) marker_position (obj)); write_c_string (buf, printcharfun); print_internal (marker->buffer->name, printcharfun, 0); } @@ -77,8 +77,8 @@ static int marker_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) { - struct Lisp_Marker *marker1 = XMARKER (obj1); - struct Lisp_Marker *marker2 = XMARKER (obj2); + Lisp_Marker *marker1 = XMARKER (obj1); + Lisp_Marker *marker2 = XMARKER (obj2); return ((marker1->buffer == marker2->buffer) && (marker1->memind == marker2->memind || @@ -95,10 +95,17 @@ return hash; } +static const struct lrecord_description marker_description[] = { + { XD_LISP_OBJECT, offsetof (Lisp_Marker, next) }, + { XD_LISP_OBJECT, offsetof (Lisp_Marker, prev) }, + { XD_LISP_OBJECT, offsetof (Lisp_Marker, buffer) }, + { XD_END } +}; + DEFINE_BASIC_LRECORD_IMPLEMENTATION ("marker", marker, mark_marker, print_marker, 0, - marker_equal, marker_hash, - struct Lisp_Marker); + marker_equal, marker_hash, marker_description, + Lisp_Marker); /* Operations on markers. */ @@ -135,7 +142,7 @@ static void check_marker_circularities (struct buffer *buf) { - struct Lisp_Marker *tortoise, *hare; + Lisp_Marker *tortoise, *hare; tortoise = BUF_MARKERS (buf); hare = tortoise; @@ -166,7 +173,7 @@ { Bufpos charno; struct buffer *b; - struct Lisp_Marker *m; + Lisp_Marker *m; int point_p; CHECK_MARKER (marker); @@ -282,7 +289,7 @@ void unchain_marker (Lisp_Object m) { - struct Lisp_Marker *marker = XMARKER (m); + Lisp_Marker *marker = XMARKER (m); struct buffer *b = marker->buffer; if (b == 0) @@ -309,7 +316,7 @@ Bytind bi_marker_position (Lisp_Object marker) { - struct Lisp_Marker *m = XMARKER (marker); + Lisp_Marker *m = XMARKER (marker); struct buffer *buf = m->buffer; Bytind pos; @@ -346,7 +353,7 @@ void set_bi_marker_position (Lisp_Object marker, Bytind pos) { - struct Lisp_Marker *m = XMARKER (marker); + Lisp_Marker *m = XMARKER (marker); struct buffer *buf = m->buffer; if (!buf) @@ -453,7 +460,7 @@ */ (position)) { - struct Lisp_Marker *marker; + Lisp_Marker *marker; Memind pos; /* A small optimization trick: convert POS to memind now, rather @@ -482,12 +489,12 @@ int compute_buffer_marker_usage (struct buffer *b, struct overhead_stats *ovstats) { - struct Lisp_Marker *m; + Lisp_Marker *m; int total = 0; int overhead; for (m = BUF_MARKERS (b); m; m = m->next) - total += sizeof (struct Lisp_Marker); + total += sizeof (Lisp_Marker); ovstats->was_requested += total; overhead = fixed_type_block_overhead (total); /* #### claiming this is all malloc overhead is not really right, @@ -533,7 +540,7 @@ { /* Unchain all markers of this buffer and leave them pointing nowhere. */ - REGISTER struct Lisp_Marker *m, *next; + REGISTER Lisp_Marker *m, *next; for (m = BUF_MARKERS (b); m; m = next) { m->buffer = 0;