new directorconnect and directorconnect_derived typemaps
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6840 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
347f342fab
commit
deaf8c681f
3 changed files with 116 additions and 19 deletions
|
|
@ -30,22 +30,28 @@ namespace Swig {
|
|||
return env;
|
||||
}
|
||||
|
||||
/* Disconnect director from Java object */
|
||||
void swig_disconnect_director_self(const char *disconn_method) {
|
||||
if (swig_self) {
|
||||
JNIEnv *jenv = swig_acquire_jenv();
|
||||
jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(swig_self), disconn_method, "()V");
|
||||
if (disconn_meth) {
|
||||
jenv->CallVoidMethod(swig_self, disconn_meth);
|
||||
} else {
|
||||
jenv->ExceptionClear();
|
||||
}
|
||||
jenv->DeleteGlobalRef(swig_self);
|
||||
swig_self = (jobject) NULL;
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
Director(JNIEnv *jenv) : swig_jvm((JavaVM *) NULL), swig_self(NULL) {
|
||||
/* Acquire the Java VM pointer */
|
||||
jenv->GetJavaVM(&swig_jvm);
|
||||
}
|
||||
|
||||
/* Remove the Java object global lock at destruction */
|
||||
virtual ~Director() {
|
||||
if (swig_self) {
|
||||
JNIEnv *jenv = swig_acquire_jenv();
|
||||
jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(swig_self), "swigDirectorDisconnect", "()V");
|
||||
if (disconn_meth)
|
||||
jenv->CallVoidMethod(swig_self, disconn_meth);
|
||||
jenv->DeleteGlobalRef(swig_self);
|
||||
swig_self = (jobject) NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set swig_self and get Java global reference on object */
|
||||
|
|
|
|||
|
|
@ -959,6 +959,16 @@
|
|||
super.delete();
|
||||
}
|
||||
|
||||
%typemap(directordisconnect, methodname="swigDirectorDisconnect") SWIGTYPE {
|
||||
swigCMemOwn = false;
|
||||
$jnicall;
|
||||
}
|
||||
|
||||
%typemap(directordisconnect_derived, methodname="swigDirectorDisconnect") SWIGTYPE {
|
||||
swigCMemOwn = false;
|
||||
$jnicall;
|
||||
}
|
||||
|
||||
/* Java specific directives */
|
||||
#define %javaconst(flag) %feature("java:const","flag")
|
||||
#define %javaconstvalue(value) %feature("java:constvalue",value)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue