You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.2 KiB
106 lines
3.2 KiB
![]()
4 years ago
|
/* -----------------------------------------------------------------------------
|
||
|
* See the LICENSE file for information on copyright, usage and redistribution
|
||
|
* of SWIG, and the README file for authors - http://www.swig.org/release.html.
|
||
|
*
|
||
|
* wchar.i
|
||
|
*
|
||
|
* Typemaps for the wchar_t type
|
||
|
* These are mapped to a C# String and are passed around by value.
|
||
|
*
|
||
|
* Support code for wide strings can be turned off by defining SWIG_CSHARP_NO_WSTRING_HELPER
|
||
|
*
|
||
|
* ----------------------------------------------------------------------------- */
|
||
|
|
||
|
#if !defined(SWIG_CSHARP_NO_WSTRING_HELPER)
|
||
|
#if !defined(SWIG_CSHARP_WSTRING_HELPER_)
|
||
|
#define SWIG_CSHARP_WSTRING_HELPER_
|
||
|
%insert(runtime) %{
|
||
|
/* Callback for returning strings to C# without leaking memory */
|
||
|
typedef void * (SWIGSTDCALL* SWIG_CSharpWStringHelperCallback)(const wchar_t *);
|
||
|
static SWIG_CSharpWStringHelperCallback SWIG_csharp_wstring_callback = NULL;
|
||
|
%}
|
||
|
|
||
|
%pragma(csharp) imclasscode=%{
|
||
|
protected class SWIGWStringHelper {
|
||
|
|
||
|
public delegate string SWIGWStringDelegate(IntPtr message);
|
||
|
static SWIGWStringDelegate wstringDelegate = new SWIGWStringDelegate(CreateWString);
|
||
|
|
||
|
[DllImport("$dllimport", EntryPoint="SWIGRegisterWStringCallback_$module")]
|
||
|
public static extern void SWIGRegisterWStringCallback_$module(SWIGWStringDelegate wstringDelegate);
|
||
|
|
||
|
static string CreateWString([MarshalAs(UnmanagedType.LPWStr)]IntPtr cString) {
|
||
|
return System.Runtime.InteropServices.Marshal.PtrToStringUni(cString);
|
||
|
}
|
||
|
|
||
|
static SWIGWStringHelper() {
|
||
|
SWIGRegisterWStringCallback_$module(wstringDelegate);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static protected SWIGWStringHelper swigWStringHelper = new SWIGWStringHelper();
|
||
|
%}
|
||
|
|
||
|
%insert(runtime) %{
|
||
|
#ifdef __cplusplus
|
||
|
extern "C"
|
||
|
#endif
|
||
|
SWIGEXPORT void SWIGSTDCALL SWIGRegisterWStringCallback_$module(SWIG_CSharpWStringHelperCallback callback) {
|
||
|
SWIG_csharp_wstring_callback = callback;
|
||
|
}
|
||
|
%}
|
||
|
#endif // SWIG_CSHARP_WSTRING_HELPER_
|
||
|
#endif // SWIG_CSHARP_NO_WSTRING_HELPER
|
||
|
|
||
|
|
||
|
// wchar_t
|
||
|
%typemap(ctype) wchar_t "wchar_t"
|
||
|
%typemap(imtype) wchar_t "char"
|
||
|
%typemap(cstype) wchar_t "char"
|
||
|
|
||
|
%typemap(csin) wchar_t "$csinput"
|
||
|
%typemap(csout, excode=SWIGEXCODE) wchar_t {
|
||
|
char ret = $imcall;$excode
|
||
|
return ret;
|
||
|
}
|
||
|
%typemap(csvarin, excode=SWIGEXCODE2) wchar_t %{
|
||
|
set {
|
||
|
$imcall;$excode
|
||
|
} %}
|
||
|
%typemap(csvarout, excode=SWIGEXCODE2) wchar_t %{
|
||
|
get {
|
||
|
char ret = $imcall;$excode
|
||
|
return ret;
|
||
|
} %}
|
||
|
|
||
|
%typemap(in) wchar_t %{ $1 = ($1_ltype)$input; %}
|
||
|
%typemap(out) wchar_t %{ $result = (wchar_t)$1; %}
|
||
|
|
||
|
%typemap(typecheck) wchar_t = char;
|
||
|
|
||
|
// wchar_t *
|
||
|
%typemap(ctype) wchar_t * "wchar_t *"
|
||
|
%typemap(imtype, inattributes="[MarshalAs(UnmanagedType.LPWStr)]", out="IntPtr" ) wchar_t * "string"
|
||
|
%typemap(cstype) wchar_t * "string"
|
||
|
|
||
|
%typemap(csin) wchar_t * "$csinput"
|
||
|
%typemap(csout, excode=SWIGEXCODE) wchar_t * {
|
||
|
string ret = System.Runtime.InteropServices.Marshal.PtrToStringUni($imcall);$excode
|
||
|
return ret;
|
||
|
}
|
||
|
%typemap(csvarin, excode=SWIGEXCODE2) wchar_t * %{
|
||
|
set {
|
||
|
$imcall;$excode
|
||
|
} %}
|
||
|
%typemap(csvarout, excode=SWIGEXCODE2) wchar_t * %{
|
||
|
get {
|
||
|
string ret = $imcall;$excode
|
||
|
return ret;
|
||
|
} %}
|
||
|
|
||
|
%typemap(in) wchar_t * %{ $1 = ($1_ltype)$input; %}
|
||
|
%typemap(out) wchar_t * %{ $result = (wchar_t *)$1; %}
|
||
|
|
||
|
%typemap(typecheck) wchar_t * = char *;
|
||
|
|