source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Simplify by allowing only one pre-handler.
@ 2014-08-01 22:22 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-08-01 22:22 UTC (permalink / raw)
  To: source

Log Message:
-----------
Simplify by allowing only one pre-handler.
Saves 12 static arrays and 19 lines of code.
No functional change.

Modified Files:
--------------
    mdocml:
        mdoc_validate.c

Revision Data
-------------
Index: mdoc_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v
retrieving revision 1.240
retrieving revision 1.241
diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.240 -r1.241
--- mdoc_validate.c
+++ mdoc_validate.c
@@ -60,7 +60,7 @@ typedef	int	(*v_pre)(PRE_ARGS);
 typedef	int	(*v_post)(POST_ARGS);
 
 struct	valids {
-	v_pre	*pre;
+	v_pre	 pre;
 	v_post	*post;
 };
 
@@ -165,43 +165,31 @@ static	v_post	 posts_st[] = { post_st, N
 static	v_post	 posts_text[] = { ewarn_ge1, NULL };
 static	v_post	 posts_text1[] = { ewarn_eq1, NULL };
 static	v_post	 posts_vt[] = { post_vt, NULL };
-static	v_pre	 pres_an[] = { pre_an, NULL };
-static	v_pre	 pres_bd[] = { pre_display, pre_bd, pre_literal, pre_par, NULL };
-static	v_pre	 pres_bl[] = { pre_bl, pre_par, NULL };
-static	v_pre	 pres_d1[] = { pre_display, NULL };
-static	v_pre	 pres_dl[] = { pre_literal, pre_display, NULL };
-static	v_pre	 pres_dd[] = { pre_dd, NULL };
-static	v_pre	 pres_dt[] = { pre_dt, NULL };
-static	v_pre	 pres_it[] = { pre_par, NULL };
-static	v_pre	 pres_obsolete[] = { pre_obsolete, NULL };
-static	v_pre	 pres_os[] = { pre_os, NULL };
-static	v_pre	 pres_pp[] = { pre_par, NULL };
-static	v_pre	 pres_std[] = { pre_std, NULL };
 
 static	const struct valids mdoc_valids[MDOC_MAX] = {
 	{ NULL, NULL },				/* Ap */
-	{ pres_dd, posts_dd },			/* Dd */
-	{ pres_dt, posts_dt },			/* Dt */
-	{ pres_os, posts_os },			/* Os */
+	{ pre_dd, posts_dd },			/* Dd */
+	{ pre_dt, posts_dt },			/* Dt */
+	{ pre_os, posts_os },			/* Os */
 	{ NULL, posts_sh },			/* Sh */
 	{ NULL, posts_ss },			/* Ss */
-	{ pres_pp, posts_pp },			/* Pp */
-	{ pres_d1, posts_d1 },			/* D1 */
-	{ pres_dl, posts_dl },			/* Dl */
-	{ pres_bd, posts_bd },			/* Bd */
+	{ pre_par, posts_pp },			/* Pp */
+	{ pre_display, posts_d1 },		/* D1 */
+	{ pre_literal, posts_dl },		/* Dl */
+	{ pre_bd, posts_bd },			/* Bd */
 	{ NULL, NULL },				/* Ed */
-	{ pres_bl, posts_bl },			/* Bl */
+	{ pre_bl, posts_bl },			/* Bl */
 	{ NULL, NULL },				/* El */
-	{ pres_it, posts_it },			/* It */
+	{ pre_par, posts_it },			/* It */
 	{ NULL, NULL },				/* Ad */
-	{ pres_an, posts_an },			/* An */
+	{ pre_an, posts_an },			/* An */
 	{ NULL, posts_defaults },		/* Ar */
 	{ NULL, NULL },				/* Cd */
 	{ NULL, NULL },				/* Cm */
 	{ NULL, NULL },				/* Dv */
 	{ NULL, NULL },				/* Er */
 	{ NULL, NULL },				/* Ev */
-	{ pres_std, posts_ex },			/* Ex */
+	{ pre_std, posts_ex },			/* Ex */
 	{ NULL, NULL },				/* Fa */
 	{ NULL, posts_text },			/* Fd */
 	{ NULL, NULL },				/* Fl */
@@ -213,9 +201,9 @@ static	const struct valids mdoc_valids[M
 	{ NULL, posts_nd },			/* Nd */
 	{ NULL, posts_nm },			/* Nm */
 	{ NULL, NULL },				/* Op */
-	{ pres_obsolete, NULL },		/* Ot */
+	{ pre_obsolete, NULL },			/* Ot */
 	{ NULL, posts_defaults },		/* Pa */
-	{ pres_std, NULL },			/* Rv */
+	{ pre_std, NULL },			/* Rv */
 	{ NULL, posts_st },			/* St */
 	{ NULL, NULL },				/* Va */
 	{ NULL, posts_vt },			/* Vt */
@@ -283,18 +271,18 @@ static	const struct valids mdoc_valids[M
 	{ NULL, NULL },				/* Ek */
 	{ NULL, posts_eoln },			/* Bt */
 	{ NULL, NULL },				/* Hf */
-	{ pres_obsolete, NULL },		/* Fr */
+	{ pre_obsolete, NULL },			/* Fr */
 	{ NULL, posts_eoln },			/* Ud */
 	{ NULL, posts_lb },			/* Lb */
-	{ pres_pp, posts_pp },			/* Lp */
+	{ pre_par, posts_pp },			/* Lp */
 	{ NULL, NULL },				/* Lk */
 	{ NULL, posts_defaults },		/* Mt */
 	{ NULL, NULL },				/* Brq */
 	{ NULL, NULL },				/* Bro */
 	{ NULL, NULL },				/* Brc */
 	{ NULL, posts_text },			/* %C */
-	{ pres_obsolete, posts_es },		/* Es */
-	{ pres_obsolete, posts_en },		/* En */
+	{ pre_obsolete, posts_es },		/* Es */
+	{ pre_obsolete, posts_en },		/* En */
 	{ NULL, NULL },				/* Dx */
 	{ NULL, posts_text },			/* %Q */
 	{ NULL, posts_pp },			/* br */
@@ -353,16 +341,11 @@ static	const char * const secnames[SEC__
 int
 mdoc_valid_pre(struct mdoc *mdoc, struct mdoc_node *n)
 {
-	v_pre		*p;
-	int		 line, pos;
-	char		*tp;
+	v_pre	 p;
 
 	switch (n->type) {
 	case MDOC_TEXT:
-		tp = n->string;
-		line = n->line;
-		pos = n->pos;
-		check_text(mdoc, line, pos, tp);
+		check_text(mdoc, n->line, n->pos, n->string);
 		/* FALLTHROUGH */
 	case MDOC_TBL:
 		/* FALLTHROUGH */
@@ -375,13 +358,8 @@ mdoc_valid_pre(struct mdoc *mdoc, struct
 	}
 
 	check_args(mdoc, n);
-
-	if (NULL == mdoc_valids[n->tok].pre)
-		return(1);
-	for (p = mdoc_valids[n->tok].pre; *p; p++)
-		if ( ! (*p)(mdoc, n))
-			return(0);
-	return(1);
+	p = mdoc_valids[n->tok].pre;
+	return(*p ? (*p)(mdoc, n) : 1);
 }
 
 int
@@ -753,7 +731,7 @@ pre_bl(PRE_ARGS)
 		break;
 	}
 
-	return(1);
+	return(pre_par(mdoc, n));
 }
 
 static int
@@ -764,6 +742,8 @@ pre_bd(PRE_ARGS)
 	int		  i;
 	enum mdoc_disp	  dt;
 
+	pre_literal(mdoc, n);
+
 	if (MDOC_BLOCK != n->type) {
 		if (ENDBODY_NOT != n->end) {
 			assert(n->pending);
@@ -843,7 +823,7 @@ pre_bd(PRE_ARGS)
 		n->norm->Bd.type = DISP_ragged;
 	}
 
-	return(1);
+	return(pre_par(mdoc, n));
 }
 
 static int
@@ -2112,6 +2092,8 @@ post_par(POST_ARGS)
 static int
 pre_literal(PRE_ARGS)
 {
+
+	pre_display(mdoc, n);
 
 	if (MDOC_BODY != n->type)
 		return(1);
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-08-01 22:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-01 22:22 mdocml: Simplify by allowing only one pre-handler schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).