[phobos] next release (meaning of path)
Jonathan M Davis
jmdavisProg at gmx.com
Sun Jan 2 16:25:08 PST 2011
On Sunday 02 January 2011 16:01:47 Andrei Alexandrescu wrote:
> Let's have a brief vote. Do you think we should have a string-like
> structure Path in std.path? What primitives should it have?
>
> I'm fine using strings, but I could be convinced to use a Path type if
> it had some compelling advantages.
I'm sure that it depends on the use case, but if you're doing a lot of
operations on paths which would involve adding, removing, or renaming
directories, then having a Path struct of some kind which essentially held a
linked list of the pieces of the path could be beneficial. If you're having to
constantly search for the Xth separator in the string and the like - especially
if you're then having to create a new string with changes - it could be a bit
expensive to deal with just strings. However, any time that you then need to
actually use the path - like opening a file or whatnot - you'd need to
concatenate the whole thing together, and doing that a lot could get expensive
too.
For the general use case, I think that strings work just fine and that having a
Path struct would be unnecessary overhead. There are use cases where it could be
useful, so it might be useful to have a Path struct for such cases (what Boost
has is rather nice from what I recall), but that isn't the typical case.
The one really nice thing about using a Path struct that I can think of is that
it makes errors related to different separators less likely. The separator would
generally be abstracted away in the user code and then dealt with appropriately
by the Path struct when turned into string form for OS calls and the like. It
might also help cases where you actually want to use the separator in a file
name, though that's generally a bad idea, even if it can be done.
I really liked Boost's path stuff last time I messed with it, and having
something similar in Phobos would be cool, but I would worry that that's just
overkill for the average case. Certainly, if we have a Path struct of some kind,
it needs to work with strings well and easily, or it's going to be a problem.
Personally, I'm not sure how much I care either way. A solid Path struct could
be very cool, but it also could be overkill.
- Jonathan M Davis
More information about the phobos
mailing list