[Proposal] Add module for C-strings support in Phobos

Rikki Cattermole alphaglosined at gmail.com
Thu Mar 20 02:20:29 PDT 2014


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.


More information about the Digitalmars-d mailing list