#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;
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)
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);
}
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 ||
}
static const struct lrecord_description marker_description[] = {
- { XD_LISP_OBJECT, offsetof(struct Lisp_Marker, next), 3 },
+ { 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, marker_description,
- struct Lisp_Marker);
+ Lisp_Marker);
\f
/* Operations on markers. */
static void
check_marker_circularities (struct buffer *buf)
{
- struct Lisp_Marker *tortoise, *hare;
+ Lisp_Marker *tortoise, *hare;
tortoise = BUF_MARKERS (buf);
hare = tortoise;
{
Bufpos charno;
struct buffer *b;
- struct Lisp_Marker *m;
+ Lisp_Marker *m;
int point_p;
CHECK_MARKER (marker);
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)
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;
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)
*/
(position))
{
- struct Lisp_Marker *marker;
+ Lisp_Marker *marker;
Memind pos;
/* A small optimization trick: convert POS to memind now, rather
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,
void
syms_of_marker (void)
{
+ INIT_LRECORD_IMPLEMENTATION (marker);
+
DEFSUBR (Fmarker_position);
DEFSUBR (Fmarker_buffer);
DEFSUBR (Fset_marker);
{
/* 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;