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

« back to all changes in this revision

Viewing changes to Lib/java/boost_shared_ptr.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
%include <shared_ptr.i>
 
2
 
 
3
%define SWIG_SHARED_PTR_TYPEMAPS(PROXYCLASS, CONST, TYPE...)
 
4
 
 
5
%naturalvar TYPE;
 
6
%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >;
 
7
 
 
8
// destructor mods
 
9
%feature("unref") TYPE 
 
10
//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter<SWIG_null_deleter>(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n"
 
11
                               "(void)arg1; delete smartarg1;"
 
12
 
 
13
 
 
14
// plain value
 
15
%typemap(in) CONST TYPE ($&1_type argp = 0) %{
 
16
  argp = (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0;
 
17
  if (!argp) {
 
18
    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type");
 
19
    return $null;
 
20
  }
 
21
  $1 = *argp; %}
 
22
%typemap(out) CONST TYPE 
 
23
%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); %}
 
24
 
 
25
// plain pointer
 
26
%typemap(in) CONST TYPE * (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) %{
 
27
  smartarg = *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input;
 
28
  $1 = (TYPE *)(smartarg ? smartarg->get() : 0); %}
 
29
%typemap(out, fragment="SWIG_null_deleter") CONST TYPE * %{
 
30
  *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0;
 
31
%}
 
32
 
 
33
// plain reference
 
34
%typemap(in) CONST TYPE & %{
 
35
  $1 = ($1_ltype)((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0);
 
36
  if(!$1) {
 
37
    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null");
 
38
    return $null;
 
39
  } %}
 
40
%typemap(out, fragment="SWIG_null_deleter") CONST TYPE &
 
41
%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); %}
 
42
 
 
43
// plain pointer by reference
 
44
%typemap(in) CONST TYPE *& ($*1_ltype temp = 0)
 
45
%{ temp = ((*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input) ? (*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$input)->get() : 0);
 
46
   $1 = &temp; %}
 
47
%typemap(out, fragment="SWIG_null_deleter") CONST TYPE *&
 
48
%{ *(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > **)&$result = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); %}
 
49
 
 
50
// shared_ptr by value
 
51
%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > ($&1_type argp)
 
52
%{ argp = *($&1_ltype*)&$input; 
 
53
   if (argp) $1 = *argp; %}
 
54
%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >
 
55
%{ *($&1_ltype*)&$result = $1 ? new $1_ltype(($1_ltype &)$1) : 0; %}
 
56
 
 
57
// shared_ptr by reference
 
58
%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & ($*1_ltype tempnull)
 
59
%{ $1 = $input ? *($&1_ltype)&$input : &tempnull; %}
 
60
%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &
 
61
%{ *($&1_ltype)&$result = *$1 ? new $*1_ltype(*($1_ltype)$1) : 0; %} 
 
62
 
 
63
// shared_ptr by pointer
 
64
%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * ($*1_ltype tempnull)
 
65
%{ $1 = $input ? *($&1_ltype)&$input : &tempnull; %}
 
66
%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *
 
67
%{ *($&1_ltype)&$result = ($1 && *$1) ? new $*1_ltype(*($1_ltype)$1) : 0;
 
68
   if ($owner) delete $1; %}
 
69
 
 
70
// shared_ptr by pointer reference
 
71
%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempnull, $*1_ltype temp = 0)
 
72
%{ temp = $input ? *($1_ltype)&$input : &tempnull;
 
73
   $1 = &temp; %}
 
74
%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *&
 
75
%{ *($1_ltype)&$result = (*$1 && **$1) ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*($*1_ltype)*$1) : 0; %} 
 
76
 
 
77
// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug
 
78
%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{
 
79
#error "typemaps for $1_type not available"
 
80
%}
 
81
%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{
 
82
#error "typemaps for $1_type not available"
 
83
%}
 
84
 
 
85
 
 
86
%typemap (jni)    SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, 
 
87
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &,
 
88
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *,
 
89
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "jlong"
 
90
%typemap (jtype)  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, 
 
91
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &,
 
92
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *,
 
93
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "long"
 
94
%typemap (jstype) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, 
 
95
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &,
 
96
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *,
 
97
                  SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "PROXYCLASS"
 
98
 
 
99
%typemap(javain) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, 
 
100
                 SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &,
 
101
                 SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *,
 
102
                 SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& "PROXYCLASS.getCPtr($javainput)"
 
103
 
 
104
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > {
 
105
    long cPtr = $jnicall;
 
106
    return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
 
107
  }
 
108
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & {
 
109
    long cPtr = $jnicall;
 
110
    return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
 
111
  }
 
112
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * {
 
113
    long cPtr = $jnicall;
 
114
    return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
 
115
  }
 
116
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& {
 
117
    long cPtr = $jnicall;
 
118
    return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
 
119
  }
 
120
 
 
121
 
 
122
%typemap(javaout) CONST TYPE {
 
123
    return new PROXYCLASS($jnicall, true);
 
124
  }
 
125
%typemap(javaout) CONST TYPE & {
 
126
    return new PROXYCLASS($jnicall, true);
 
127
  }
 
128
%typemap(javaout) CONST TYPE * {
 
129
    long cPtr = $jnicall;
 
130
    return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
 
131
  }
 
132
%typemap(javaout) CONST TYPE *& {
 
133
    long cPtr = $jnicall;
 
134
    return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
 
135
  }
 
136
 
 
137
// Base proxy classes
 
138
%typemap(javabody) TYPE %{
 
139
  private long swigCPtr;
 
140
  private boolean swigCMemOwnBase;
 
141
 
 
142
  protected $javaclassname(long cPtr, boolean cMemoryOwn) {
 
143
    swigCMemOwnBase = cMemoryOwn;
 
144
    swigCPtr = cPtr;
 
145
  }
 
146
 
 
147
  protected static long getCPtr($javaclassname obj) {
 
148
    return (obj == null) ? 0 : obj.swigCPtr;
 
149
  }
 
150
%}
 
151
 
 
152
// Derived proxy classes
 
153
%typemap(javabody_derived) TYPE %{
 
154
  private long swigCPtr;
 
155
  private boolean swigCMemOwnDerived;
 
156
 
 
157
  protected $javaclassname(long cPtr, boolean cMemoryOwn) {
 
158
    super($imclassname.$javaclassname_SWIGSharedPtrUpcast(cPtr), true);
 
159
    swigCMemOwnDerived = cMemoryOwn;
 
160
    swigCPtr = cPtr;
 
161
  }
 
162
 
 
163
  protected static long getCPtr($javaclassname obj) {
 
164
    return (obj == null) ? 0 : obj.swigCPtr;
 
165
  }
 
166
%}
 
167
 
 
168
%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") TYPE {
 
169
    if(swigCPtr != 0 && swigCMemOwnBase) {
 
170
      swigCMemOwnBase = false;
 
171
      $jnicall;
 
172
    }
 
173
    swigCPtr = 0;
 
174
  }
 
175
 
 
176
%typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized") TYPE {
 
177
    if(swigCPtr != 0 && swigCMemOwnDerived) {
 
178
      swigCMemOwnDerived = false;
 
179
      $jnicall;
 
180
    }
 
181
    swigCPtr = 0;
 
182
    super.delete();
 
183
  }
 
184
 
 
185
// CONST version needed ???? also for C#
 
186
%typemap(jtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast "long"
 
187
%typemap(jtype, nopgcpp="1") SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > swigSharedPtrUpcast "long"
 
188
 
 
189
 
 
190
%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >;
 
191
%enddef
 
192