This was suggested by wsfulton on the mailing list in order to bring the D module in line with the C# one, the naming scheme of which is intended to be language-independent. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12319 626c5289-ae23-0410-ae9c-e8d60b6d4f22
80 lines
2.5 KiB
Text
80 lines
2.5 KiB
Text
/* -----------------------------------------------------------------------------
|
|
* dstrings.swg
|
|
*
|
|
* Typemaps for wrapping pointers to/arrays of C chars as D strings.
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
%define SWIGD_STRING_TYPEMAPS(DW_STRING_TYPE, DP_STRING_TYPE, FROM_STRINGZ, TO_STRINGZ)
|
|
%typemap(ctype) char *, char *&, char[ANY], char[] "char *"
|
|
%typemap(imtype) char *, char *&, char[ANY], char[] #DW_STRING_TYPE
|
|
%typemap(dtype) char *, char *&, char[ANY], char[] #DP_STRING_TYPE
|
|
|
|
|
|
/*
|
|
* char* typemaps.
|
|
*/
|
|
|
|
%typemap(in) char * %{ $1 = ($1_ltype)$input; %}
|
|
%typemap(out) char * %{ $result = SWIG_d_string_callback((const char *)$1); %}
|
|
%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) char * %{ $result = ($1_ltype)$input; %}
|
|
%typemap(directorin) char * %{ $input = SWIG_d_string_callback((const char *)$1); %}
|
|
%typemap(ddirectorin) char * "FROM_STRINGZ($winput)"
|
|
%typemap(ddirectorout) char * "TO_STRINGZ($dcall)"
|
|
|
|
|
|
/*
|
|
* char*& typemaps.
|
|
*/
|
|
|
|
%typemap(in) char *& ($*1_ltype temp = 0) %{
|
|
temp = ($*1_ltype)$input;
|
|
$1 = &temp;
|
|
%}
|
|
%typemap(out) char *& %{ if ($1) $result = SWIG_d_string_callback((const char *)*$1); %}
|
|
|
|
|
|
/*
|
|
* char array typemaps.
|
|
*/
|
|
|
|
%typemap(in) char[ANY], char[] %{ $1 = ($1_ltype)$input; %}
|
|
%typemap(out) char[ANY], char[] %{ $result = SWIG_d_string_callback((const char *)$1); %}
|
|
|
|
%typemap(directorout) char[ANY], char[] %{ $result = ($1_ltype)$input; %}
|
|
%typemap(directorin) char[ANY], char[] %{ $input = SWIG_d_string_callback((const char *)$1); %}
|
|
|
|
%typemap(ddirectorin) char[ANY], char[] "$winput"
|
|
%typemap(ddirectorout) char[ANY], char[] "$dcall"
|
|
|
|
|
|
%typemap(din) char *, char *&, char[ANY], char[] "($dinput ? TO_STRINGZ($dinput) : null)"
|
|
%typemap(dout, excode=SWIGEXCODE) char *, char *&, char[ANY], char[] {
|
|
DP_STRING_TYPE ret = FROM_STRINGZ ## ($imcall);$excode
|
|
return ret;
|
|
}
|
|
|
|
%typecheck(SWIG_TYPECHECK_STRING)
|
|
char *,
|
|
char *&,
|
|
char[ANY],
|
|
char[]
|
|
""
|
|
%enddef
|
|
|
|
|
|
// We need to have the \0-terminated string conversion functions available in
|
|
// the D proxy modules.
|
|
#if (SWIG_D_VERSION == 1)
|
|
// Could be easily extended to support Phobos as well.
|
|
SWIGD_STRING_TYPEMAPS(char*, char[], tango.stdc.stringz.fromStringz, tango.stdc.stringz.toStringz)
|
|
|
|
%pragma(d) globalproxyimports = "static import tango.stdc.stringz;";
|
|
#else
|
|
SWIGD_STRING_TYPEMAPS(const(char)*, string, std.conv.to!string, std.string.toStringz)
|
|
|
|
%pragma(d) globalproxyimports = %{
|
|
static import std.conv;
|
|
static import std.string;
|
|
%}
|
|
#endif
|
|
#undef SWIGD_STRING_TYPEMAPS
|