1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* -----------------------------------------------------------------------------
- * 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
|