[Issue 8680] SpanMode.breadth is incorrectly named and implementation fails in Linux
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Sep 18 20:58:49 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8680
--- Comment #5 from Jesse Phillips <Jesse.K.Phillips+D at gmail.com> 2012-09-18 20:59:48 PDT ---
(In reply to comment #4)
> Are you saying you want a real breadth-first search to be implemented? Fine, we
> can do that, if it's useful. Note though that it'll intersperse children, e.g.
No, but someone else did, which is fine. Probably not really needed as a
standard traversal type though.
> I intended those as alternative names instead of 'postorder' and 'preorder'
> (respectively) - I didn't intend to suggest any other behaviour.
I know, but they are descriptive of the two most useful traversal types I can
think of.
> What behaviour do you want?
I have only had two types of traversals.
I don't care: In this type of traversal I just need all the files and couldn't
care less when they come to me. In all cases I've never wished to have the
directory name (but don't wish for a traversal that leaves it out).
Parent First: Give me everything in the Parent First, then you can traverse the
children. Almost as you described, except it would be starting a breadth first
from each child.
The other traversal types are likely useful in other situations. I was close to
instead of using Parent First choosing
Child First: Give me what is in the Child First before that in the parent. This
turns the Parent First on its head.
> I would argue that that's very specific, not
> intuitive in the general case, and best implemented using two separate calls to
> the function with different arguments:
>
> auto firstLevel = dirEntries("a", SpanMode.shallow);
> foreach (file; firstLevel) {
> if (file.isDir()) {
> ... = dirEntries(file, SpanMode.preorder);
> }
> }
This isn't as you described nor what I want. You'll notice all you did was
create a preorder search where you'll never see the top level directories. I'm
looking more at:
auto firstLevel = dirEntries("a", SpanMode.shallow);
foreach (file; firstLevel) {
if (file.isDir()) {
secondLevel ~= dirEntries(file, SpanMode.shallow);
}
}
foreach(sl; secondLevel)
foreach (file; sl) {
if (file.isDir()) {
thirdLevel ~= dirEntries(file, SpanMode.shallow);
}
}
foreach(tl; thirdLevel)
foreach (file; tl) {
if (file.isDir()) {
thirdLevel ~= dirEntries(file, SpanMode.shallow);
}
}
....
On until you get tired of trying to predict how many levels this directory
actually has.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list