1/* ----------------------------------------------------------------------------- 2 * See the LICENSE file for information on copyright, usage and redistribution 3 * of SWIG, and the README file for authors - http://www.swig.org/release.html. 4 * 5 * wchar.i 6 * 7 * Typemaps for the wchar_t type 8 * These are mapped to a C# String and are passed around by value. 9 * 10 * Support code for wide strings can be turned off by defining SWIG_CSHARP_NO_WSTRING_HELPER 11 * 12 * ----------------------------------------------------------------------------- */ 13 14#if !defined(SWIG_CSHARP_NO_WSTRING_HELPER) 15#if !defined(SWIG_CSHARP_WSTRING_HELPER_) 16#define SWIG_CSHARP_WSTRING_HELPER_ 17%insert(runtime) %{ 18/* Callback for returning strings to C# without leaking memory */ 19typedef void * (SWIGSTDCALL* SWIG_CSharpWStringHelperCallback)(const wchar_t *); 20static SWIG_CSharpWStringHelperCallback SWIG_csharp_wstring_callback = NULL; 21%} 22 23%pragma(csharp) imclasscode=%{ 24 protected class SWIGWStringHelper { 25 26 public delegate string SWIGWStringDelegate(IntPtr message); 27 static SWIGWStringDelegate wstringDelegate = new SWIGWStringDelegate(CreateWString); 28 29 [DllImport("$dllimport", EntryPoint="SWIGRegisterWStringCallback_$module")] 30 public static extern void SWIGRegisterWStringCallback_$module(SWIGWStringDelegate wstringDelegate); 31 32 static string CreateWString([MarshalAs(UnmanagedType.LPWStr)]IntPtr cString) { 33 return System.Runtime.InteropServices.Marshal.PtrToStringUni(cString); 34 } 35 36 static SWIGWStringHelper() { 37 SWIGRegisterWStringCallback_$module(wstringDelegate); 38 } 39 } 40 41 static protected SWIGWStringHelper swigWStringHelper = new SWIGWStringHelper(); 42%} 43 44%insert(runtime) %{ 45#ifdef __cplusplus 46extern "C" 47#endif 48SWIGEXPORT void SWIGSTDCALL SWIGRegisterWStringCallback_$module(SWIG_CSharpWStringHelperCallback callback) { 49 SWIG_csharp_wstring_callback = callback; 50} 51%} 52#endif // SWIG_CSHARP_WSTRING_HELPER_ 53#endif // SWIG_CSHARP_NO_WSTRING_HELPER 54 55 56// wchar_t 57%typemap(ctype) wchar_t "wchar_t" 58%typemap(imtype) wchar_t "char" 59%typemap(cstype) wchar_t "char" 60 61%typemap(csin) wchar_t "$csinput" 62%typemap(csout, excode=SWIGEXCODE) wchar_t { 63 char ret = $imcall;$excode 64 return ret; 65 } 66%typemap(csvarin, excode=SWIGEXCODE2) wchar_t %{ 67 set { 68 $imcall;$excode 69 } %} 70%typemap(csvarout, excode=SWIGEXCODE2) wchar_t %{ 71 get { 72 char ret = $imcall;$excode 73 return ret; 74 } %} 75 76%typemap(in) wchar_t %{ $1 = ($1_ltype)$input; %} 77%typemap(out) wchar_t %{ $result = (wchar_t)$1; %} 78 79%typemap(typecheck) wchar_t = char; 80 81// wchar_t * 82%typemap(ctype) wchar_t * "wchar_t *" 83%typemap(imtype, inattributes="[MarshalAs(UnmanagedType.LPWStr)]", out="IntPtr" ) wchar_t * "string" 84%typemap(cstype) wchar_t * "string" 85 86%typemap(csin) wchar_t * "$csinput" 87%typemap(csout, excode=SWIGEXCODE) wchar_t * { 88 string ret = System.Runtime.InteropServices.Marshal.PtrToStringUni($imcall);$excode 89 return ret; 90 } 91%typemap(csvarin, excode=SWIGEXCODE2) wchar_t * %{ 92 set { 93 $imcall;$excode 94 } %} 95%typemap(csvarout, excode=SWIGEXCODE2) wchar_t * %{ 96 get { 97 string ret = $imcall;$excode 98 return ret; 99 } %} 100 101%typemap(in) wchar_t * %{ $1 = ($1_ltype)$input; %} 102%typemap(out) wchar_t * %{ $result = (wchar_t *)$1; %} 103 104%typemap(typecheck) wchar_t * = char *; 105 106