X-Git-Url: https://git.cameronkatri.com/mandoc.git/blobdiff_plain/db7d65ce12b3c123e790060a4a62e61637bf6d9b..19bbba00a696e5f8af750eebfa6f47c1ee1cfa2e:/private.h?ds=sidebyside

diff --git a/private.h b/private.h
index e57a1eff..accda8a1 100644
--- a/private.h
+++ b/private.h
@@ -1,4 +1,4 @@
-/* $Id: private.h,v 1.1 2008/11/23 16:53:18 kristaps Exp $ */
+/* $Id: private.h,v 1.30 2008/12/04 23:10:51 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -19,50 +19,280 @@
 #ifndef PRIVATE_H
 #define PRIVATE_H
 
+#include <time.h>
+
 struct	md_rbuf {
-	int		 fd;
-	char		*name;
-	char		*buf;
-	size_t		 bufsz;
-	size_t		 line;
+	int		 fd;		/* Open descriptor. */
+	char		*name;		/* Name of file. */
+	char		*buf;		/* Buffer. */
+	size_t		 bufsz;		/* Size of buffer. */
+	size_t		 line;		/* Current line number. */
 };
 
 struct	md_mbuf {
-	int		 fd;
-	char		*name;
-	char		*buf;
-	size_t		 bufsz;
-	size_t		 pos;
+	int		 fd;		/* Open descriptor. */
+	char		*name;		/* Name of file. */
+	char		*buf;		/* Buffer. */
+	size_t		 bufsz;		/* Size of buffer. */
+	size_t		 pos;		/* Position in buffer. */
+};
+
+#define	ROFFTok_Sp_A	 0
+#define	ROFFTok_Sp_B	 1
+#define	ROFFTok_Sp_F	 2
+#define	ROFFTok_Sp_N	 3
+#define	ROFFTok_Sp_R	 4
+#define	ROFFTok_Sp_T	 5
+#define	ROFFTok_Sp_V	 6
+#define	ROFFTok_Space	 7
+#define	ROFFTok_Null	 8
+#define	ROFFTok_Hyphen	 9
+#define	ROFFTok_Em	 10
+#define	ROFFTok_En	 11
+#define	ROFFTok_Ge	 12
+#define	ROFFTok_Le	 13
+#define	ROFFTok_Rquote	 14
+#define	ROFFTok_Lquote	 15
+#define	ROFFTok_Uparrow	 16
+#define	ROFFTok_Acute	 17
+#define	ROFFTok_Grave	 18
+#define	ROFFTok_Pi	 19
+#define	ROFFTok_Ne	 20
+#define	ROFFTok_Lt	 21
+#define	ROFFTok_Gt	 22
+#define	ROFFTok_Plusmin	 23
+#define	ROFFTok_Infty	 24
+#define	ROFFTok_Bar	 25
+#define	ROFFTok_Nan	 26
+#define	ROFFTok_Quote	 27
+#define	ROFFTok_Sp_0	 28
+#define	ROFFTok_Slash	 29
+#define	ROFFTok_MAX	 30
+
+#define	ROFF___	 	 0
+#define	ROFF_Dd		 1
+#define	ROFF_Dt		 2
+#define	ROFF_Os		 3
+#define	ROFF_Sh		 4
+#define	ROFF_Ss		 5
+#define	ROFF_Pp		 6
+#define	ROFF_D1		 7
+#define	ROFF_Dl		 8
+#define	ROFF_Bd		 9
+#define	ROFF_Ed		 10
+#define	ROFF_Bl		 11
+#define	ROFF_El		 12
+#define	ROFF_It		 13
+#define	ROFF_Ad		 14
+#define	ROFF_An		 15
+#define	ROFF_Ar		 16
+#define	ROFF_Cd		 17
+#define	ROFF_Cm		 18
+#define	ROFF_Dv		 19
+#define	ROFF_Er		 20
+#define	ROFF_Ev		 21
+#define	ROFF_Ex		 22
+#define	ROFF_Fa		 23
+#define	ROFF_Fd		 24
+#define	ROFF_Fl		 25
+#define	ROFF_Fn		 26
+#define	ROFF_Ft		 27
+#define	ROFF_Ic		 28
+#define	ROFF_In		 29
+#define	ROFF_Li		 30
+#define	ROFF_Nd		 31
+#define	ROFF_Nm		 32
+#define	ROFF_Op		 33
+#define	ROFF_Ot		 34
+#define	ROFF_Pa		 35
+#define	ROFF_Rv		 36
+#define	ROFF_St		 37
+#define	ROFF_Va		 38
+#define	ROFF_Vt		 39
+#define	ROFF_Xr		 40
+#define	ROFF__A		 41
+#define	ROFF__B		 42
+#define	ROFF__D		 43
+#define	ROFF__I		 44
+#define	ROFF__J		 45
+#define	ROFF__N		 46
+#define	ROFF__O		 47
+#define	ROFF__P		 48
+#define	ROFF__R		 49
+#define	ROFF__T		 50
+#define	ROFF__V		 51
+#define ROFF_Ac		 52
+#define ROFF_Ao		 53
+#define ROFF_Aq		 54
+#define ROFF_At		 55
+#define ROFF_Bc		 56
+#define ROFF_Bf		 57
+#define ROFF_Bo		 58
+#define ROFF_Bq		 59
+#define ROFF_Bsx	 60
+#define ROFF_Bx		 61
+#define ROFF_Db		 62
+#define ROFF_Dc		 63
+#define ROFF_Do		 64
+#define ROFF_Dq		 65
+#define ROFF_Ec		 66
+#define ROFF_Ef		 67
+#define ROFF_Em		 68
+#define ROFF_Eo		 69
+#define ROFF_Fx		 70
+#define ROFF_Ms		 71
+#define ROFF_No		 72
+#define ROFF_Ns		 73
+#define ROFF_Nx		 74
+#define ROFF_Ox		 75
+#define ROFF_Pc		 76
+#define ROFF_Pf		 77
+#define ROFF_Po		 78
+#define ROFF_Pq		 79
+#define ROFF_Qc		 80
+#define ROFF_Ql		 81
+#define ROFF_Qo		 82
+#define ROFF_Qq		 83
+#define ROFF_Re		 84
+#define ROFF_Rs		 85
+#define ROFF_Sc		 86
+#define ROFF_So		 87
+#define ROFF_Sq		 88
+#define ROFF_Sm		 89
+#define ROFF_Sx		 90
+#define ROFF_Sy		 91
+#define ROFF_Tn		 92
+#define ROFF_Ux		 93
+#define ROFF_Xc		 94
+#define ROFF_Xo		 95
+#define	ROFF_Fo		 96
+#define	ROFF_Fc		 97
+#define	ROFF_Oo		 98
+#define	ROFF_Oc		 99
+#define	ROFF_Bk		 100
+#define	ROFF_Ek		 101
+#define	ROFF_Bt		 102
+#define	ROFF_Hf		 103
+#define	ROFF_Fr		 104
+#define	ROFF_Ud		 105
+#define	ROFF_MAX	 106
+
+#define	ROFF_Split	 0
+#define	ROFF_Nosplit	 1
+#define	ROFF_Ragged	 2
+#define	ROFF_Unfilled	 3
+#define	ROFF_Literal	 4
+#define	ROFF_File	 5
+#define	ROFF_Offset	 6
+#define	ROFF_Bullet	 7
+#define	ROFF_Dash	 8
+#define	ROFF_Hyphen	 9
+#define	ROFF_Item	 10
+#define	ROFF_Enum	 11
+#define	ROFF_Tag	 12
+#define	ROFF_Diag	 13
+#define	ROFF_Hang	 14
+#define	ROFF_Ohang	 15
+#define	ROFF_Inset	 16
+#define	ROFF_Column	 17
+#define	ROFF_Width	 18
+#define	ROFF_Compact	 19
+#define	ROFF_Std	 20
+#define ROFF_p1003_1_88	 21
+#define ROFF_p1003_1_90	 22
+#define ROFF_p1003_1_96	 23
+#define ROFF_p1003_1_2001 24
+#define ROFF_p1003_1_2004 25
+#define ROFF_p1003_1	 26
+#define ROFF_p1003_1b	 27
+#define ROFF_p1003_1b_93 28
+#define ROFF_p1003_1c_95 29
+#define ROFF_p1003_1g_2000 30
+#define ROFF_p1003_2_92	 31
+#define ROFF_p1387_2_95	 32
+#define ROFF_p1003_2	 33
+#define ROFF_p1387_2	 34
+#define ROFF_isoC_90	 35
+#define ROFF_isoC_amd1	 36
+#define ROFF_isoC_tcor1	 37
+#define ROFF_isoC_tcor2	 38
+#define ROFF_isoC_99	 39
+#define ROFF_ansiC	 40
+#define ROFF_ansiC_89	 41
+#define ROFF_ansiC_99	 42
+#define ROFF_ieee754	 43
+#define ROFF_iso8802_3	 44
+#define ROFF_xpg3	 45
+#define ROFF_xpg4	 46
+#define ROFF_xpg4_2	 47
+#define ROFF_xpg4_3	 48
+#define ROFF_xbd5	 49
+#define ROFF_xcu5	 50
+#define ROFF_xsh5	 51
+#define ROFF_xns5	 52
+#define ROFF_xns5_2d2_0	 53
+#define ROFF_xcurses4_2	 54
+#define ROFF_susv2	 55
+#define ROFF_susv3	 56
+#define ROFF_svid4	 57
+#define	ROFF_Filled	 58
+#define	ROFF_Words	 59
+#define	ROFF_ARGMAX	 60
+
+#define	ROFF_MAXLINEARG	 32
+
+extern	const char *const *toknames;
+extern	const char *const *tokargnames;
+
+enum	roffmsg { ROFF_WARN, ROFF_ERROR };
+
+struct	roffcb {
+	void	(*roffmsg)(void *, enum roffmsg, 
+			const char *, const char *, char *);
+	int	(*roffhead)(void *, const struct tm *, const char *, 
+			const char *, const char *, const char *);
+	int	(*rofftail)(void *);
+	int	(*roffdata)(void *, int, const char *, char *);
+	int	(*roffin)(void *, int, int *, char **);
+	int	(*roffout)(void *, int);
+	int	(*roffblkin)(void *, int, int *, char **);
+	int	(*roffblkout)(void *, int);
+	int	(*roffblkheadin)(void *, int, int *, char **);
+	int	(*roffblkheadout)(void *, int);
+	int	(*roffblkbodyin)(void *, int, int *, char **);
+	int	(*roffblkbodyout)(void *, int);
+	int	(*roffspecial)(void *, int, const char *, char **);
 };
 
+struct	rofftree;
+
 __BEGIN_DECLS
 
-typedef	int	(*md_init)(const struct md_args *, struct md_mbuf *,
-			const struct md_rbuf *, void **);
-typedef	int	(*md_exit)(const struct md_args *, struct md_mbuf *, 
-			const struct md_rbuf *, void *);
-typedef	int	(*md_line)(const struct md_args *, 
-			struct md_mbuf *, const struct md_rbuf *, 
-			const char *, size_t, void *);
-
-int		  md_line_html4_strict(const struct md_args *,
-			struct md_mbuf *, const struct md_rbuf *,
-			const char *, size_t, void *);
-int		  md_init_html4_strict(const struct md_args *, 
-			struct md_mbuf *, const struct md_rbuf *,
-			void **);
-int		  md_exit_html4_strict(const struct md_args *,
-			struct md_mbuf *, const struct md_rbuf *, 
-			void *);
-
-int		  md_line_dummy(const struct md_args *,
-			struct md_mbuf *, const struct md_rbuf *, 
-			const char *, size_t, void *);
+typedef	void  (*(*md_init)(const struct md_args *, 
+			struct md_mbuf *, const struct md_rbuf *));
+typedef	int	(*md_line)(void *, char *);
+typedef	int	(*md_exit)(void *, int);
+
+void		 *md_init_html(const struct md_args *,
+			struct md_mbuf *, const struct md_rbuf *);
+int		  md_line_html(void *, char *);
+int		  md_exit_html(void *, int);
+
+void		 *md_init_xml(const struct md_args *,
+			struct md_mbuf *, const struct md_rbuf *);
+int		  md_line_xml(void *, char *);
+int		  md_exit_xml(void *, int);
 
 int	 	  md_buf_puts(struct md_mbuf *, const char *, size_t);
 int	 	  md_buf_putchar(struct md_mbuf *, char);
 int	 	  md_buf_putstring(struct md_mbuf *, const char *);
 
+struct	rofftree *roff_alloc(const struct roffcb *, void *);
+int		  roff_engine(struct rofftree *, char *);
+int		  roff_free(struct rofftree *, int);
+
+int		  rofftok_scan(const char *, int *);
+
 __END_DECLS
 
 #endif /*!PRIVATE_H*/