| // Test the premature garbage collection prevention parameter (pgcpp) for the different ways of passing objects |
| |
| %module java_pgcpp |
| |
| %pragma(java) jniclassclassmodifiers="public class" |
| |
| %typemap(javacode) Space::Classic %{ |
| public long getCPtrValue() { |
| return this.swigCPtr; |
| } |
| %} |
| |
| // Default pointer to pointer typemaps do not use proxy class, so make sure that the pgcpp is generated for these typemaps |
| %typemap(jni) Space::Classic ** "jlong" |
| %typemap(jtype) Space::Classic ** "long" |
| %typemap(jstype) Space::Classic ** " Classic " |
| %typemap(javain) Space::Classic ** "Classic.getCPtr($javainput)" |
| |
| // Default typemaps for pass by value, ref, pointer and pointer reference should use pgcpp |
| |
| %inline %{ |
| namespace Space { |
| struct Classic { |
| Classic() {} |
| Classic(Classic c1, Classic& c2, Classic* c3, Classic*& c4, Classic** c5) {} |
| Classic(const Classic c1, const Classic& c2, const Classic* c3, const Classic*& c4, const Classic** c5, bool b) {} |
| |
| void method(Classic c1, Classic& c2, Classic* c3, Classic*& c4, Classic** c5) {} |
| void methodconst(const Classic c1, const Classic& c2, const Classic* c3, const Classic*& c4, const Classic** c5) {} |
| }; |
| |
| void function(Classic c1, Classic& c2, Classic* c3, Classic*& c4, Classic** c5) {} |
| void functionconst(const Classic c1, const Classic& c2, const Classic* c3, const Classic*& c4, const Classic** c5) {} |
| } |
| %} |
| |
| |
| %typemap(jtype) Klassic *k1 "/*a*/ long /*b*/ /*c*/" |
| %typemap(jstype) Klassic *k1 "/*a*/ Classic/*b*/ /*c*/" |
| |
| %typemap(jtype) Klassic *k2 "/*d*/ long" |
| %typemap(jstype) Klassic *k2 "/*d*/ Classic" |
| |
| %typemap(jtype) Klassic *k3 "long/*e*/ " |
| %typemap(jstype) Klassic *k3 "Classic/*e*/ " |
| |
| %typemap(javain) Klassic * "Classic.getCPtr($javainput)" |
| |
| %{ |
| typedef Space::Classic Klassic; |
| %} |
| |
| %inline %{ |
| void comment_in_typemaps(Klassic *k1, Klassic *k2, Klassic *k3) {} |
| %} |
| |