1
%include <shared_ptr.i>
3
%define SWIG_SHARED_PTR_TYPEMAPS(PROXYCLASS, CONST, TYPE...)
6
%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST 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;"
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;
18
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type");
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)); %}
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;
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);
37
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null");
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); %}
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);
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); %}
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; %}
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; %}
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; %}
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;
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; %}
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"
81
%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{
82
#error "typemaps for $1_type not available"
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"
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)"
104
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > {
105
long cPtr = $jnicall;
106
return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
108
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & {
109
long cPtr = $jnicall;
110
return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
112
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * {
113
long cPtr = $jnicall;
114
return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
116
%typemap(javaout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& {
117
long cPtr = $jnicall;
118
return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
122
%typemap(javaout) CONST TYPE {
123
return new PROXYCLASS($jnicall, true);
125
%typemap(javaout) CONST TYPE & {
126
return new PROXYCLASS($jnicall, true);
128
%typemap(javaout) CONST TYPE * {
129
long cPtr = $jnicall;
130
return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
132
%typemap(javaout) CONST TYPE *& {
133
long cPtr = $jnicall;
134
return (cPtr == 0) ? null : new PROXYCLASS(cPtr, true);
137
// Base proxy classes
138
%typemap(javabody) TYPE %{
139
private long swigCPtr;
140
private boolean swigCMemOwnBase;
142
protected $javaclassname(long cPtr, boolean cMemoryOwn) {
143
swigCMemOwnBase = cMemoryOwn;
147
protected static long getCPtr($javaclassname obj) {
148
return (obj == null) ? 0 : obj.swigCPtr;
152
// Derived proxy classes
153
%typemap(javabody_derived) TYPE %{
154
private long swigCPtr;
155
private boolean swigCMemOwnDerived;
157
protected $javaclassname(long cPtr, boolean cMemoryOwn) {
158
super($imclassname.$javaclassname_SWIGSharedPtrUpcast(cPtr), true);
159
swigCMemOwnDerived = cMemoryOwn;
163
protected static long getCPtr($javaclassname obj) {
164
return (obj == null) ? 0 : obj.swigCPtr;
168
%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") TYPE {
169
if(swigCPtr != 0 && swigCMemOwnBase) {
170
swigCMemOwnBase = false;
176
%typemap(javadestruct_derived, methodname="delete", methodmodifiers="public synchronized") TYPE {
177
if(swigCPtr != 0 && swigCMemOwnDerived) {
178
swigCMemOwnDerived = false;
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"
190
%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >;