[BACK]Return to man.h CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

File: [cvsweb.bsd.lv] / mandoc / man.h (download)

Revision 1.71, Thu Apr 2 22:48:17 2015 UTC (9 years ago) by schwarze
Branch: MAIN
Changes since 1.70: +46 -71 lines

Second step towards parser unification:
Replace struct mdoc_node and struct man_node by a unified struct roff_node.
To be able to use the tok member for both mdoc(7) and man(7) without
defining all the macros in roff.h, sacrifice a tiny bit of type safety
and make tok an int rather than an enum.
Almost mechanical, no functional change.
Written on the Eurostar from Bruxelles to London on the way to p2k15.

/*	$Id: man.h,v 1.71 2015/04/02 22:48:17 schwarze Exp $ */
/*
 * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
 * Copyright (c) 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#define	MAN_br   0
#define	MAN_TH   1
#define	MAN_SH   2
#define	MAN_SS   3
#define	MAN_TP   4
#define	MAN_LP   5
#define	MAN_PP   6
#define	MAN_P    7
#define	MAN_IP   8
#define	MAN_HP   9
#define	MAN_SM  10
#define	MAN_SB  11
#define	MAN_BI  12
#define	MAN_IB  13
#define	MAN_BR  14
#define	MAN_RB  15
#define	MAN_R   16
#define	MAN_B   17
#define	MAN_I   18
#define	MAN_IR  19
#define	MAN_RI  20
#define	MAN_sp  21
#define	MAN_nf  22
#define	MAN_fi  23
#define	MAN_RE  24
#define	MAN_RS  25
#define	MAN_DT  26
#define	MAN_UC  27
#define	MAN_PD  28
#define	MAN_AT  29
#define	MAN_in  30
#define	MAN_ft  31
#define	MAN_OP  32
#define	MAN_EX  33
#define	MAN_EE  34
#define	MAN_UR  35
#define	MAN_UE  36
#define	MAN_ll  37
#define	MAN_MAX 38

struct	man_meta {
	char		*msec; /* `TH' section (1, 3p, etc.) */
	char		*date; /* `TH' normalised date */
	char		*vol; /* `TH' volume */
	char		*title; /* `TH' title (e.g., FOO) */
	char		*source; /* `TH' source (e.g., GNU) */
	int		 hasbody; /* document is not empty */
};

/* Names of macros. */
extern	const char *const *man_macronames;

__BEGIN_DECLS

struct	man;

const struct roff_node *man_node(const struct man *);
const struct man_meta *man_meta(const struct man *);
const struct mparse   *man_mparse(const struct man *);
void man_deroff(char **, const struct roff_node *);

__END_DECLS