digitalmars.D.bugs - [Issue 2193] New: Allow implicit conversions: char -> ubyte, wchar -> ushort, dchar -> uint
- d-bugmail puremagic.com (33/33) Jul 05 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2193
- d-bugmail puremagic.com (13/13) Feb 22 2013 http://d.puremagic.com/issues/show_bug.cgi?id=2193
http://d.puremagic.com/issues/show_bug.cgi?id=2193 Summary: Allow implicit conversions: char -> ubyte, wchar -> ushort, dchar -> uint Product: D Version: 1.031 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: matti.niemenmaa+dbugzilla iki.fi As it stands it is quite impossible to use an API which is strict about keeping char as UTF-8 only. For instance, given a function which turns a C string into a D string: // accepts anything, not only UTF-8, hence ubyte and not char ubyte[] fromStringz(ubyte*); One can't call it with a char*, even though the function itself would work fine. Casting works, of course, but the end result of such is that code starts to look something like the following: auto x = getSomeUTF8(); auto y = &x[5]; x = cast(char[])foo(cast(ubyte*)y); bar(cast(ubyte[])x); return cast(ubyte)x[0]; This is far too verbose and unreadable. The only "real" cast there is the cast(char[]) which asserts that foo, given UTF-8, returns valid UTF-8. The rest are essentially just saying that "yes, UTF-8 bytes are the same size as ubytes!", which should not be necessary. The wchar->ushort and dchar->uint conversions should be included for completeness's sake, but I suspect they aren't as necessary. --
Jul 05 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2193 bearophile_hugs eml.cc changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bearophile_hugs eml.cc Now the signatures of std.string.toStringz are: pure nothrow immutable(char)* toStringz(const(char)[] s); pure nothrow immutable(char)* toStringz(string s); Consider is it's worth keeping this issue open. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 22 2013