std.path review: update

Rainer Schuetze r.sagitario at gmx.de
Thu Jul 21 00:16:13 PDT 2011



On 20.07.2011 19:36, Lars T. Kyllingstad wrote:
> On Mon, 18 Jul 2011 14:51:06 -0400, Steven Schveighoffer wrote:
>> It's definitely something to think about.  At the very least, I think
>> the default file system case sensitivity should be mapped to a certain
>> function.  It doesn't hurt to expose the opposite sensitivity as an
>> alternate (you need to implement both anyway).  A template with all
>> options defaulted for the current OS makes good sense I think.
>> Actually, expanding/renaming pathCharMatch provides a perfect way to
>> default these:
>>
>> e.g.:
>> version(Windows)
>> {
>>      enum defaultOSSensitivity = false;
>>      enum defaultOSDirSeps = `\/`;
>> }
>> else version(Posix)
>> {
>>      enum defaultOSSensitivity = true;
>>      enum defaultOSDirSeps = "/";
>> }
>>
>> // replaces pathCharMatch
>> int pathCharCmp(bool caseSensitive = defaultOSSensitivity, string
>> dirseps = defaultOSDirSeps)(dchar a, dchar b);
>>
>> int fcmp(alias pred = "pathCharCmp(a, b)", S1, S2)(S1 filename1, S2
>> filename2);
>>
>> Anyone who wants to do alternate comparisons is free to do so using
>> other options from pathCharCmp.
>
> Good idea.  I'll probably implement something like that.

I like the direction that this is heading. If the idea gets extended to 
other functions as well, you won't have to reimplement std.path if you 
have to deal with posix paths on windows and vice versa, e.g. when 
transferring data containing paths between different systems.


More information about the Digitalmars-d mailing list