std.path review: second update

Jonathan M Davis jmdavisProg at gmx.com
Sun Jul 31 12:21:46 PDT 2011


On Sunday 31 July 2011 14:24:30 Lars T. Kyllingstad wrote:
> On Fri, 29 Jul 2011 18:06:58 +0000, Lars T. Kyllingstad wrote:
> > Here's a new update based on your comments and requests.  [...]
> 
> You may have noticed that I did not incorporate Steve's suggestion to
> make the directory separator(s) a template parameter.  The reason is that
> this is the *smallest* difference between paths on the different
> platforms.  Drive letters and UNC paths are a much bigger difference, and
> make interoperability near impossible.
> 
> Therefore, I would just like to reiterate a suggestion I made on the
> Phobos list a while ago, which was then shot down.  What if we put the
> entire module inside a template, like this:
> 
>     enum Platform { windows, posix }
>     enum CaseSensitive { yes, no }
> 
>     template Path(Platform platform, CaseSensitive caseSensitive)
>     {
>         /* Every function in the module goes inside this template,
>            and instead of
> 
>                version (Windows) { ... }
> 
>            and so on, we use
> 
>                static if (platform == Platform.windows) { ... }
> 
>            That way, if people for some reason need to deal with
>            POSIX paths on Windows, for instance, they can just write
> 
>                Path!(Platform.posix).someFunction(myPath);
>         */
>     }
> 
>     // Of course, we don't want to add a cumbersome prefix every time
>     // we call a function for the current platform.  By mixing in the
>     // template, std.path can be used *exactly* like now:
> 
>     version (Windows)    private enum currentPlatform = Platform.windows;
>     else version (Posix) private enum currentPlatform = Platform.posix;
> 
>     mixin Path!(currentPlatform, platformDefaultCaseSensitivity);
> 
> What do you think?

Honestly, it seems like overkill and overly messy. Doing something that 
drastic would have to add a lot of value IMHO, and I just don't see it. And 
honestly, even if it _did_ add a lot of value, I think that I'd want a cleaner 
solution to be found.

- Jonathan M Davis


More information about the Digitalmars-d mailing list