Subject: misc/36857: Add a summary section in queue(3) man page
To: None <misc-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <ekamperi@auth.gr>
List: netbsd-bugs
Date: 08/29/2007 13:10:01
>Number: 36857
>Category: misc
>Synopsis: Add a summary section in queue(3) man page
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: misc-bug-people
>State: open
>Class: doc-bug
>Submitter-Id: net
>Arrival-Date: Wed Aug 29 13:10:00 +0000 2007
>Originator: Stathis Kamperis
>Release: NetBSD 4.0BETA2
>Organization:
Aristotle University of Thessaloniki
>Environment:
NetBSD netbsd 4.0_BETA2 NetBSD 4.0_BETA2 (MYGENERIC) #3: Tue Aug 28 14:23:03 EEST 2007 root@netbsd:/usr/obj/sys/arch/i386/compile/MYGENERIC i386
>Description:
Due to the large number of data structure types and the associated macros, it would be useful to have a table summarizing all of them.
I attach a patch that adds a `SUMMARY' section in man 3 queue. Since my code uses the tbl preprocessor to format the table, I had also to add USETBL= in the Makefile.
In order to see how the man page looks after the patch has been applied, you may run:
$ cd /usr/share/man/man3
$ groff -tbl -mdoc -Tascii queue.3 | col -bx
>How-To-Repeat:
>Fix:
Index: Makefile
===================================================================
RCS file: /cvsroot/src/share/man/man3/Makefile,v
retrieving revision 1.30
diff -u -r1.30 Makefile
--- Makefile 15 Aug 2007 03:53:09 -0000 1.30
+++ Makefile 29 Aug 2007 12:50:10 -0000
@@ -3,6 +3,9 @@
MAN= _DIAGASSERT.3 assert.3 bits.3 bitstring.3 dlfcn.3 end.3 gcq.3 \
intro.3 queue.3 stdarg.3 sysexits.3 tree.3 varargs.3
+
+USETBL=
+
MLINKS+=end.3 edata.3 end.3 etext.3
MLINKS+=bits.3 __BIT.3 \
bits.3 __BITS.3 \
Index: queue.3
===================================================================
RCS file: /cvsroot/src/share/man/man3/queue.3,v
retrieving revision 1.33
diff -u -r1.33 queue.3
--- queue.3 7 Mar 2006 18:13:43 -0000 1.33
+++ queue.3 29 Aug 2007 12:50:11 -0000
@@ -1131,6 +1131,57 @@
if (CIRCLEQ_EMPTY(\*[Am]head)) /* Test for emptiness. */
printf("nothing to do\\n");
.Ed
+.Sh SUMMARY
+The following table summarizes the supported macros for each type of data structure.
+.Pp
+.TS
+box tab(:);
+l | c | c | c | c | c | c
+l | c | c | c | c | c | c
+l | c | c | c | c | c | c
+l | c | c | c | c | c | c
+l | c | c | c | c | c | c
+l | c | c | c | c | c | c.
+:SLIST:LIST:SIMPLEQ:STAILQ:TAILQ:CIRCLEQ
+_
+_EMPTY:+:+:+:+:+:+
+_ENTRY:+:+:+:+:+:+
+_FIRST:+:+:+:+:+:+
+_FOREACH:+:+:+:+:+:+
+_FOREACH_REVERSE:-:-:-:-:+:+
+_HEAD:+:+:+:+:+:+
+_HEAD_INITIALIZER:+:+:+:+:+:+
+_INIT:+:+:+:+:+:+
+_INSERT_AFTER:+:+:+:+:+:+
+_INSERT_BEFORE:-:+:-:-:+:+
+_INSERT_HEAD:+:+:+:+:+:+
+_INSERT_TAIL:-:-:+:+:+:+
+_LAST:-:-:-:-:+:+
+_LOOP_NEXT:-:-:-:-:-:+
+_LOOP_PREV:-:-:-:-:-:+
+_NEXT:+:+:+:+:+:+
+_PREV:-:-:-:-:+:+
+_REMOVE:+:+:+:+:+:+
+_REMOVE_HEAD:+:-:+:+:-:-
+.TE
+.Pp
+As far as the cost of each data structure is concerned:
+.Bl -enum -compact -offset indent
+.It
+.Nm Singly-linked lists
+are ideal for applications with large datasets and few or no removals,
+or for implementing a LIFO queue.
+.It
+.Nm Simple queues
+are ideal for applications with large datasets and few or
+no removals, or for implementing a FIFO queue.
+.It
+For
+.Nm doubly linked types
+of data structures (lists, tail queues, and circle queues),
+the code size and execution time of operations (except for removal) is about
+twice that of the singly-linked data-structures.
+.El
.Sh HISTORY
The
.Nm queue