diff options
Diffstat (limited to 'src/bind/dobinding.cpp')
| -rw-r--r-- | src/bind/dobinding.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/bind/dobinding.cpp b/src/bind/dobinding.cpp index 29d61b722..e2157de0b 100644 --- a/src/bind/dobinding.cpp +++ b/src/bind/dobinding.cpp @@ -74,6 +74,11 @@ typedef struct static jlong getPointer(JNIEnv *env, jobject obj) { jfieldID id = env->GetFieldID(env->GetObjectClass(obj), "_pointer", "J"); + if (!id) + { + err("getPointer: %s", getException(env).c_str()); + return 0; + } jlong val = env->GetLongField(obj, id); return val; } @@ -81,9 +86,49 @@ static jlong getPointer(JNIEnv *env, jobject obj) static void setPointer(JNIEnv *env, jobject obj, jlong val) { jfieldID id = env->GetFieldID(env->GetObjectClass(obj), "_pointer", "J"); + if (!id) + { + err("setPointer: %s", getException(env).c_str()); + return; + } env->SetLongField(obj, id, val); } +static void JNICALL BaseObject_construct + (JNIEnv *env, jobject obj) +{ + setPointer(env, obj, 0L); +} + +static void JNICALL BaseObject_destruct + (JNIEnv *env, jobject obj) +{ + NodePtr *ptr = (NodePtr *)getPointer(env, obj); + if (ptr) + { + delete ptr; + } + setPointer(env, obj, 0L); +} + + +static JNINativeMethod nm_BaseObject[] = +{ +{ (char *)"construct", (char *)"()V", (void *)BaseObject_construct }, +{ (char *)"destruct", (char *)"()V", (void *)BaseObject_destruct }, +{ NULL, NULL, NULL } +}; + +static NativeClass nc_BaseObject = +{ + "org/inkscape/cmn/BaseObject", + nm_BaseObject +}; + +//######################################################################## +//# BASE OBJECT +//######################################################################## + static void JNICALL DOMBase_construct (JNIEnv *env, jobject obj) { @@ -114,6 +159,8 @@ static NativeClass nc_DOMBase = "org/inkscape/dom/DOMBase", nm_DOMBase }; + + //######################################################################## //# DOMImplementation //######################################################################## @@ -157,6 +204,7 @@ static NativeClass nc_DOMImplementation = */ static NativeClass *allClasses[] = { + &nc_BaseObject, &nc_DOMBase, &nc_DOMImplementation, NULL |
