119304Speter/*-
219304Speter * Copyright (c) 1992, 1993, 1994
319304Speter *	The Regents of the University of California.  All rights reserved.
419304Speter * Copyright (c) 1992, 1993, 1994, 1995, 1996
519304Speter *	Keith Bostic.  All rights reserved.
619304Speter *
719304Speter * See the LICENSE file for redistribution information.
819304Speter *
9254225Speter *	$Id: mark.h,v 10.6 2011/07/04 14:41:51 zy Exp $
1019304Speter */
1119304Speter
1219304Speter/*
1319304Speter * The MARK and LMARK structures define positions in the file.  There are
1419304Speter * two structures because the mark subroutines are the only places where
1519304Speter * anything cares about something other than line and column.
1619304Speter *
1719304Speter * Because of the different interfaces used by the db(3) package, curses,
1819304Speter * and users, the line number is 1 based and the column number is 0 based.
1919304Speter * Additionally, it is known that the out-of-band line number is less than
2019304Speter * any legal line number.  The line number is of type recno_t, as that's
2119304Speter * the underlying type of the database.  The column number is of type size_t,
2219304Speter * guaranteeing that we can malloc a line.
2319304Speter */
2419304Speterstruct _mark {
2519304Speter#define	OOBLNO		0		/* Out-of-band line number. */
2619304Speter	recno_t	 lno;			/* Line number. */
2719304Speter	size_t	 cno;			/* Column number. */
2819304Speter};
2919304Speter
3019304Speterstruct _lmark {
31254225Speter	SLIST_ENTRY(_lmark) q;		/* Linked list of marks. */
3219304Speter	recno_t	 lno;			/* Line number. */
3319304Speter	size_t	 cno;			/* Column number. */
34254225Speter	/* XXXX Needed ? Can non ascii-chars be mark names ? */
3519304Speter	CHAR_T	 name;			/* Mark name. */
3619304Speter
3719304Speter#define	MARK_DELETED	0x01		/* Mark was deleted. */
3819304Speter#define	MARK_USERSET	0x02		/* User set this mark. */
3919304Speter	u_int8_t flags;
4019304Speter};
4119304Speter
4219304Speter#define	ABSMARK1	'\''		/* Absolute mark name. */
4319304Speter#define	ABSMARK2	'`'		/* Absolute mark name. */
44