Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Jan 2002 12:34:54 +0100
From:      Poul-Henning Kamp <phk@critter.freebsd.dk>
To:        Julian Elischer <julian@elischer.org>
Cc:        Stephen McKay <mckay@thehub.com.au>, John Baldwin <jhb@FreeBSD.org>, cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org, Julian Elischer <julian@FreeBSD.org>, Greg Lehey <grog@FreeBSD.org>
Subject:   Re: cvs commit: src/share/man/man3 queue.3 
Message-ID:  <951.1010057694@critter.freebsd.dk>
In-Reply-To: Your message of "Thu, 03 Jan 2002 00:46:45 PST." <Pine.BSF.4.21.0201030044520.22265-100000@InterJet.elischer.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <Pine.BSF.4.21.0201030044520.22265-100000@InterJet.elischer.org>, Ju
lian Elischer writes:

>> >how about explicitly detailing that it's NULL at the end?
>> >Doesn't that also work?
>> 
>> I don't think we should document that.
>> 
>> There are types of lists/queues which doesn't naturally end with
>> that condition.  That is why we have the FOO_EMPTY() clause, although
>> people tend to also rely on
>> 
>> 	if (FOO_FIRST(...) == NULL)
>> 		/* nothing to do */
>
>Since TAILQ_FIRST== NULL is a termination (it's empty) 
>condition (as is TAILQ_NEXT() == NULL)
>it makes PERFECT sense that a completed set of iterations ends up
>with the pointer being NULL.

If for instance we (re)introduce CIRCLEQ or certain other queue
types, it is by no means obvious that the continuation clause
of the FOREACH() will be "!= NULL".

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?951.1010057694>