source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Simplify by almost halving the number of macro flags: 1.
@ 2015-03-20 12:54 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2015-03-20 12:54 UTC (permalink / raw)
  To: source

Log Message:
-----------
Simplify by almost halving the number of macro flags:
1. MAN_EXPLICIT was used iff fp == blk_exp, so just test fp.
2. MAN_FSCOPED was used only for TP, so just test for TP.
3. MAN_NOCLOSE was completely unused.
No functional change.

Modified Files:
--------------
    mdocml:
        libman.h
        man_macro.c

Revision Data
-------------
Index: man_macro.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/man_macro.c,v
retrieving revision 1.98
retrieving revision 1.99
diff -Lman_macro.c -Lman_macro.c -u -p -r1.98 -r1.99
--- man_macro.c
+++ man_macro.c
@@ -55,7 +55,7 @@ const	struct man_macro __man_macros[MAN_
 	{ in_line_eoln, MAN_BSCOPE }, /* TH */
 	{ blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SH */
 	{ blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SS */
-	{ blk_imp, MAN_BSCOPE | MAN_SCOPED | MAN_FSCOPED }, /* TP */
+	{ blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* TP */
 	{ blk_imp, MAN_BSCOPE }, /* LP */
 	{ blk_imp, MAN_BSCOPE }, /* PP */
 	{ blk_imp, MAN_BSCOPE }, /* P */
@@ -76,7 +76,7 @@ const	struct man_macro __man_macros[MAN_
 	{ in_line_eoln, MAN_BSCOPE }, /* nf */
 	{ in_line_eoln, MAN_BSCOPE }, /* fi */
 	{ blk_close, MAN_BSCOPE }, /* RE */
-	{ blk_exp, MAN_BSCOPE | MAN_EXPLICIT }, /* RS */
+	{ blk_exp, MAN_BSCOPE }, /* RS */
 	{ in_line_eoln, 0 }, /* DT */
 	{ in_line_eoln, 0 }, /* UC */
 	{ in_line_eoln, 0 }, /* PD */
@@ -86,7 +86,7 @@ const	struct man_macro __man_macros[MAN_
 	{ in_line_eoln, 0 }, /* OP */
 	{ in_line_eoln, MAN_BSCOPE }, /* EX */
 	{ in_line_eoln, MAN_BSCOPE }, /* EE */
-	{ blk_exp, MAN_BSCOPE | MAN_EXPLICIT }, /* UR */
+	{ blk_exp, MAN_BSCOPE }, /* UR */
 	{ blk_close, MAN_BSCOPE }, /* UE */
 	{ in_line_eoln, 0 }, /* ll */
 };
@@ -125,7 +125,7 @@ man_unscope(struct man *man, const struc
 				continue;
 			}
 			if (n->type == MAN_BLOCK &&
-			    man_macros[n->tok].flags & MAN_EXPLICIT)
+			    man_macros[n->tok].fp == blk_exp)
 				mandoc_msg(MANDOCERR_BLK_NOEND,
 				    man->parse, n->line, n->pos,
 				    man_macronames[n->tok]);
@@ -190,7 +190,7 @@ rew_dohalt(enum mant tok, enum man_type 
 
 	/* First: rewind to ourselves. */
 	if (type == n->type && tok == n->tok) {
-		if (MAN_EXPLICIT & man_macros[n->tok].flags)
+		if (man_macros[n->tok].fp == blk_exp)
 			return(REW_HALT);
 		else
 			return(REW_REWIND);
@@ -387,18 +387,20 @@ blk_imp(MACRO_PROT_ARGS)
 		man_word_alloc(man, line, la, p);
 	}
 
-	/* Close out head and open body (unless MAN_SCOPE). */
+	/*
+	 * For macros having optional next-line scope,
+	 * keep the head open if there were no arguments.
+	 * For `TP', always keep the head open.
+	 */
 
-	if (man_macros[tok].flags & MAN_SCOPED) {
-		/* If we're forcing scope (`TP'), keep it open. */
-		if (man_macros[tok].flags & MAN_FSCOPED) {
-			man->flags |= MAN_BLINE;
-			return;
-		} else if (n == man->last) {
-			man->flags |= MAN_BLINE;
-			return;
-		}
+	if (man_macros[tok].flags & MAN_SCOPED &&
+	    (tok == MAN_TP || n == man->last)) {
+		man->flags |= MAN_BLINE;
+		return;
 	}
+
+	/* Close out the head and open the body. */
+
 	rew_scope(MAN_HEAD, man, tok);
 	man_body_alloc(man, line, ppos, tok);
 }
Index: libman.h
===================================================================
RCS file: /home/cvs/mdocml/mdocml/libman.h,v
retrieving revision 1.67
retrieving revision 1.68
diff -Llibman.h -Llibman.h -u -p -r1.67 -r1.68
--- libman.h
+++ libman.h
@@ -1,7 +1,7 @@
 /*	$Id$ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
+ * 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
@@ -47,13 +47,10 @@ struct	man {
 struct	man_macro {
 	void		(*fp)(MACRO_PROT_ARGS);
 	int		  flags;
-#define	MAN_SCOPED	 (1 << 0)
-#define	MAN_EXPLICIT	 (1 << 1)	/* See blk_imp(). */
-#define	MAN_FSCOPED	 (1 << 2)	/* See blk_imp(). */
-#define	MAN_NSCOPED	 (1 << 3)	/* See in_line_eoln(). */
-#define	MAN_NOCLOSE	 (1 << 4)	/* See blk_exp(). */
-#define	MAN_BSCOPE	 (1 << 5)	/* Break BLINE scope. */
-#define	MAN_JOIN	 (1 << 6)	/* Join arguments together. */
+#define	MAN_SCOPED	 (1 << 0)  /* Optional next-line scope. */
+#define	MAN_NSCOPED	 (1 << 1)  /* Allowed in next-line element scope. */
+#define	MAN_BSCOPE	 (1 << 2)  /* Break next-line block scope. */
+#define	MAN_JOIN	 (1 << 3)  /* Join arguments together. */
 };
 
 extern	const struct man_macro *const man_macros;
--
 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:[~2015-03-20 12:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-20 12:54 mdocml: Simplify by almost halving the number of macro flags: 1 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).