Proposal for std.path replacement
Graham St Jack
Graham.StJack at internode.on.net
Thu Mar 3 19:23:33 PST 2011
On 04/03/11 12:34, Bekenn wrote:
> On 3/3/11 3:30 PM, Graham St Jack wrote:
>> My first instinct would be to use non-templated functions that take
>> const
>> char[].
>>
>
> Please don't ever restrict encodings like that. As much as possible,
> libraries should seek to be encoding agnostic (though I'm all for
> const-qualifying parameters). This is one area where I feel the
> standard library severely lacks at present.
>
> As a Windows developer, I prefer to use wchar strings by default and
> use only the W versions of the Windows API functions, because the A
> versions severely limit functionality. Only the W versions have full
> support for Unicode; the A versions are entirely dependent on the
> current (8-bit) code page. This means no support for UNC paths or
> paths longer than 260 characters, and also means that international
> characters commonly end up completely garbled. Good practice in
> Windows is to consider the A versions deprecated and avoid them like
> the plague.
Ok, I don't mind supporting wchar and dchar in addition to char,
especially if Windows insists on using them.
My main issue here is with the constness of the parameters. I think the
correct parameter to pass is const C[]. This has the advantages of:
* Accepting both mutable and immutable data.
* Declares that the function won't mutate the data.
* Declares that the function doesn't expect the data to be immutable.
It would be even better to use const scope char[], declaring that a
reference won't be kept, but it seems that scope in this context is
deprecated.
Once upon a time "in" meant const scope. Does anyone know what it means now?
--
Graham St Jack
More information about the Digitalmars-d
mailing list