On Thursday, 20 March 2014 at 08:24:30 UTC, Denis Shelomovskij
wrote:
It's filed as enhancement 12418 [2]:
C-strings processing is a special and common case so:
1. C-strings should be supported with both performance and
usability.
2. There should be a dedicated module for C-strings (instead of
adding such functions here and there in other modules).
Current state: there is no good support for C-strings in
Phobos, there is slow and broken `toStringz` (Issue 12417 [3]),
and no standard way to make many common operations, like
converting returned C-string to string and releasing its memory
or creating a C-string from string using an allocation function.
So I propose to add `unstd.c.string` [1] module to Phobos which
include all use-cases I have seen implementing (correct and
fast in contrast to existing ones like GtkD (yes, it's both
incorrect and slow because of tons of GC allocations)) C
library wrappers.
[1] http://denis-sh.bitbucket.org/unstandard/unstd.c.string.html
[2] https://d.puremagic.com/issues/show_bug.cgi?id=12418
[3] https://d.puremagic.com/issues/show_bug.cgi?id=12417
Looks like it wouldn't be really useful with Windows API. Given
that wstrings are more common there.
Another thing that would be nice to have is a wrapper struct for
the pointer that allows accessing via e.g. opIndex and opSlice.
Ext.
Use case: Store the struct on D side to make sure GC doesn't
clean it up and still be able to access and modify it like a
normal string easily.