std.utf.decode @nogc please

monarch_dodra via Digitalmars-d digitalmars-d at puremagic.com
Wed Oct 1 06:01:26 PDT 2014


On Wednesday, 1 October 2014 at 10:10:51 UTC, Robert burner 
Schadek wrote:
> lately when working on std.string I run into problems making 
> stuff nogc as std.utf.decode is not nogc.
>
> https://issues.dlang.org/show_bug.cgi?id=13458
>
> Also I would like a version of decode that takes the string not 
> as ref.
>
> Something like:
>
> bool decode2(S,C)(S str, out C ret, out size_t strSliceIdx)
>     if(isSomeString!S && isSomeChar!C) {}
>
> where true is returned if the decode worked and false otherwise.
>
> Ideas, Suggestions ... ? any takers?

Kind of like the "non-throwing std.conv.to": I'm pretty sure that 
if you wrote your "tryDecode" function, then you could back-wards 
implement the old decode in terms of the new "tryDecode":

dchar decode(ref str)
{
     dchar ret;
     size_t idx;
     enforce(tryDecode(str, ret, idx));
     str = str[idx .. $];
     return ret;
}

The implementation of tryDecode would be pretty much the old 
one's implementation, exceptions replaced in favor of return 
false.


More information about the Digitalmars-d mailing list