~ubuntu-branches/ubuntu/oneiric/swig1.3/oneiric

« back to all changes in this revision

Viewing changes to Lib/csharp/wchar.i

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-12-06 10:27:08 UTC
  • mfrom: (1.2.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20071206102708-t37t62i45n595w0e
Tags: 1.3.33-2ubuntu1
* Merge with Debian; remaining changes:
  - Drop support for pike.
  - Use python2.5 instead of python2.4.
  - Clean Runtime/ as well.
  - Force a few environment variables.
* debian/Rules (clean): Remove Lib/ocaml/swigp4.ml.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 */
 
19
typedef void * (SWIGSTDCALL* SWIG_CSharpWStringHelperCallback)(const wchar_t *);
 
20
static 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
 
46
extern "C"
 
47
#endif
 
48
SWIGEXPORT 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