Chris@0: Chris@0: #ifndef _HANDLE_H_INCLUDED_ Chris@0: #define _HANDLE_H_INCLUDED_ Chris@0: Chris@0: inline jfieldID getHandleField(JNIEnv *env, jobject obj) Chris@0: { Chris@0: jclass c = env->GetObjectClass(obj); Chris@0: return env->GetFieldID(c, "nativeHandle", "J"); Chris@0: } Chris@0: Chris@0: template Chris@0: T *getHandle(JNIEnv *env, jobject obj) Chris@0: { Chris@0: jlong handle = env->GetLongField(obj, getHandleField(env, obj)); Chris@0: return reinterpret_cast(handle); Chris@0: } Chris@0: Chris@0: template Chris@0: void setHandle(JNIEnv *env, jobject obj, T *t) Chris@0: { Chris@0: jlong handle = reinterpret_cast(t); Chris@0: env->SetLongField(obj, getHandleField(env, obj), handle); Chris@0: } Chris@0: Chris@0: #endif