Path as an object in std.path

Lars T. Kyllingstad public at kyllingen.net
Thu Jun 6 00:55:50 PDT 2013


On Thursday, 6 June 2013 at 07:05:52 UTC, Lars T. Kyllingstad 
wrote:
> On Wednesday, 5 June 2013 at 06:27:46 UTC, Dylan Knutson wrote:
>> Hello,
>> I'd like to open up the idea of Path being an object in 
>> std.path. I've submitted a pull 
>> (https://github.com/D-Programming-Language/phobos/pull/1333) 
>> that adds a Path struct to std.path, "which exposes a much 
>> more palatable interface to path string manipulation".
>
> [...]

Let me add some more to this.  To justify the addition of such a 
type, it needs to pull its own weight.  For added value, it could 
do one or both of the following:

1. Maintain an isValidPath() invariant, for early error 
detection.  (On POSIX, this is rather trivial, as any string that 
does not contain a null character is in principle a valid path, 
but on Windows, the situation is different.)

2. Add in-place versions of path modifiers (setExtension, 
setDrive, etc.), for improved performance.

One solution would be for Path to be a trivial string wrapper 
which does (1) and not (2).  In this case, it is justified to 
have Path *in addition to* the existing functions.

Another solution would be for Path to do (2), possibly in 
addition to (1).  However, in this case it should be a 
*replacement* for the existing functions, and not an addition.  
Otherwise, we have two almost-equal ways of doing the same thing, 
which should be avoided.  (I am not advocating this, however, as 
it will massively break user code all over again.)

Lars


More information about the Digitalmars-d mailing list