moving wxd to github
Anders F Björklund
afb at algonet.se
Fri Nov 25 02:01:41 PST 2011
Walter Bright wrote:
>> Now that DMD has broken the ABI on x86_64,
>
> ??
... compared with GDC, that was.
Think we discussed this earlier, it's about the
passing of structs as parameters compared with C++.
The code is passing a D "string" to the C++ side,
and then interpreting this C argument as a struct:
/// length-prefixed string in UTF-8 format
struct dstr {
size_t length;
const char* data;
};
This only works in 32-bit code, and not in 64-bit.
Need to use two separate .length and .ptr pairs.
It should probably pass around wxString() objects
instead, even if that's slightly less convenient...
So instead of:
static extern (C) void wxApp_SetAppName(IntPtr self, string
name);
static extern (C) IntPtr wxApp_GetAppName(IntPtr self);
public string AppName() { return cast(string) new
wxString(wxApp_GetAppName(wxobj), true); }
public void AppName(string name) { wxApp_SetAppName(wxobj, name); }
It should do:
static extern (C) void wxApp_SetAppName(IntPtr self, IntPtr
name);
static extern (C) IntPtr wxApp_GetAppName(IntPtr self);
public wxString AppName() { return wxApp_GetAppName(wxobj); }
public void AppName(wxString name) { wxApp_SetAppName(wxobj,
name); }
Then it will be more explicit *when* strings are created,
especially if any UTF conversion needs to be done by it.
--anders
More information about the Digitalmars-d
mailing list