mixin template's alias parameter ... ignored ?
ag0aep6g
anonymous at example.com
Mon Jul 12 05:33:22 UTC 2021
On 12.07.21 03:37, someone wrote:
> I ended up with the following (as usual advice/suggestions welcomed):
[...]> alias stringUTF16 = dstring; /// same as immutable(dchar)[];>
alias stringUTF32 = wstring; /// same as immutable(wchar)[];
Bug: You mixed up `wstring` and `dstring`. `wstring` is UTF-16.
`dstring` is UTF-32.
[...]
> public struct gudtUGC(typeStringUTF) { /// UniCode grapheme
> cluster‐aware string manipulation
Style: `typeStringUTF` is a type, so it should start with a capital
letter (`TypeStringUTF`).
[...]
> private size_t pintSequenceCount = cast(size_t) 0;
> private size_t pintSequenceCurrent = cast(size_t) 0;
Style: There's no need for the casts (throughout).
[...]
> @safe public typeStringUTF encode() { /// UniCode grapheme cluster
> to UniCode UTF‐encoded string
>
> scope typeStringUTF lstrSequence = null;
[...]
> return lstrSequence;
>
> }
Bug: `scope` makes no sense if you want to return `lstrSequence`
(throughout).
> @safe public typeStringUTF toUTFtake( /// UniCode grapheme cluster
> to UniCode UTF‐encoded string
> scope const size_t lintStart,
> scope const size_t lintCount = cast(size_t) 1
> ) {
Style: `scope` does nothing on `size_t` parameters (throughout).
[...]
> if (lintStart <= lintStart + lintCount) {
[...]
> scope size_t lintRange1 = lintStart - cast(size_t) 1;
Possible bug: Why subtract 1?
> scope size_t lintRange2 = lintRange1 + lintCount;
>
> if (lintRange1 >= cast(size_t) 0 && lintRange2 <=
> pintSequenceCount) {
Style: The first half of that condition is pointless. `lintRange1` is
unsigned, so it will always be greater than or equal to 0. If you want
to defend against overflow, you have to do it before subtracting.
[...]
> }
>
> }
[...]
> }
[...]
> @safe public typeStringUTF toUTFpadL( /// UniCode grapheme cluster
> to UniCode UTF‐encoded string
> scope const size_t lintCount,
> scope const typeStringUTF lstrPadding = cast(typeStringUTF) r" "
Style: Cast is not needed (throughout).
> ) {
[...]
> }
[...]
> }
[...]
More information about the Digitalmars-d-learn
mailing list